从函数中的函数设置/访问局部变量?

时间:2013-09-20 09:28:47

标签: python python-2.7

我正在尝试在main()的{​​{1}}中设置一个局部变量,该变量从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... (这意味着我无法添加“info = insideFCT()”并添加返回main()
  • 我不能使用全局变量,因为该函数将同时使用多次(线程)
  • 当然这根本不是关于花时间,insideFCT()代表我无法控制的输入

我的想法是在每个datetime.datetime.now()开始时找到特定的内容,将“info”存储在全局字典main()中,然后我可以使用globDict[TheThingSpecific]=info在{globDict[TheThingSpecific]中访问它1}}(实际上,functionThatPrint()在与functionThatPrint()相同的函数中被调用,因此它们具有相同的“特定事物”)

我刚刚找到了我正在寻找的“特定的东西”。这是insideFCT()

SOLUTION:

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

1 个答案:

答案 0 :(得分:0)

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

由于info内的main()没有绑定,因此假定它是全局的或内置的。就是这样。