我知道脚本中函数的顺序并不重要。但是,此示例代码不起作用:
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()
为什么第一个示例不起作用?
如何提取变量中的函数列表并将其放在脚本顶部?
你实际上误解了, 当您使用
_FUNCTIONS = (_foo, _bar)
时,python期望_foo
和_bar
作为变量,这在这里并没有什么特别之处,因为您还没有定义对它的任何引用,所以它是未定义的,因此抛出错误在第二种情况下,您正在函数中执行相同的操作,到那时,该函数已经在python的作用域中可用,因此没有错误
正如@khelwood在评论中提到的,顺序确实很重要
相关问题 更多 >
编程相关推荐