0

我正在尝试设置一个局部变量,main()insideFCT()该变量开始main()

def insideFCT():
     print "inside"
     info = datetime.datetime.now()
     print info

def main():
     print "starting main"
     insideFCT()
     functionThatPrint(info) #for the example functionThatPrint() acts like print()

main()

我需要找到一种方法,以便它给我:

starting main
inside
2013-09-19...
2013-09-19...
  • 我根本无法修改main()(这意味着我无法添加“info = insideFCT()”并添加返回insideFCT()
  • 我不能使用全局变量,因为该函数将同时使用多次(线程)
  • 当然这根本不是为了获得时间,datetime.datetime.now()代表我无法控制的输入

我的想法是在它们开始时找到每个特定的东西main(),将“信息”存储在全局字典中globDict[TheThingSpecific]=info,然后我可以使用globDict[TheThingSpecific]in访问它functionThatPrint()(实际上,functionThatPrint()在相同的函数中调用,insideFCT()因此它们具有相同的“特定事物”)

我刚刚找到了我正在寻找的“特定的东西”。它是threading.current_thread()

解决方案:

  • insideFCT()将信息存储到globalDict[str(threading.current_thread())]
  • 然后我可以functionThatPrint()使用同一行访问它,因为它是同一个线程:globalDict[str(threading.current_thread())]
4

1 回答 1

0

无法从外部在 python 的函数范围内设置局部变量。名称info所属的范围是在“编译时”决定的——即解释器执行def main()命令的时候。

由于 与infoinside没有绑定main(),因此假定它是全局的或内置的。而已。

于 2013-09-20T10:45:27.400 回答