我试图从insideFCT()
在main()
中设置一个局部变量,该变量从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()
开始时找到特定的东西,将“info”存储在一个全局词汇表中,作为globDict[TheThingSpecific]=info
,然后我可以使用functionThatPrint()
中的globDict[TheThingSpecific]
来访问它(实际上,functionThatPrint()
是在与insideFCT()
相同的函数中调用的,因此它们具有相同的“特定事物”)
我刚找到我要找的“特定的东西”。是threading.current_thread()
解决方案:
insideFCT()
将信息存储到globalDict[str(threading.current_thread())]
functionThatPrint()
中访问它,因为它是同一个线程:globalDict[str(threading.current_thread())]
在python中,无法从外部在函数范围内设置局部变量。名称
info
所属的作用域是在“编译时”即解释器执行def main()
命令时确定的。你知道吗由于没有绑定到
main()
内部的info
,因此假定它是全局的或内置的。就这样。你知道吗相关问题 更多 >
编程相关推荐