如何从一个函数中的另一个函数设置或访问本地变量?

2024-04-16 04:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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())]

Tags: 函数infodatetimemaindefcurrent线程thread
1条回答
网友
1楼 · 发布于 2024-04-16 04:34:01

在python中,无法从外部在函数范围内设置局部变量。名称info所属的作用域是在“编译时”即解释器执行def main()命令时确定的。你知道吗

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

相关问题 更多 >