我知道脚本中函数的顺序无关紧要。但是,此示例代码不起作用:
main.py
_FUNCTIONS = (_foo, _bar)
def myfunc():
for f in _FUNCTIONS:
print(f())
def _foo():
return False
def _bar():
return True
myfunc()
提供以下错误
File "main.py", line 1, in <module>
_FUNCTIONS = (_foo, _bar)
NameError: name '_foo' is not defined
但是,如果我不使用 _FUNCTIONS
并将 (_foo, _bar)
注入代码中,这将起作用:
def myfunc():
for f in (_foo, _bar):
print(f())
def _foo():
return False
def _bar():
return True
myfunc()
为什么第一个例子不起作用?
如何提取变量中的函数列表并将其放在脚本的顶部?
答案 0 :(得分:2)
其实你误会了,
当您使用 _FUNCTIONS = (_foo, _bar)
时,python 期望 _foo
和 _bar
作为变量在这里没什么特别的,并且由于您还没有定义对它的任何引用,它是未定义的,因此会引发错误。
在第二种情况下,你在函数内部做同样的事情,到那时,该函数已经在 python 的作用域中可用,因此没有错误。
正如 @khelwood 在评论中提到的那样,顺序很重要