在定义函数之前使用它

2024-05-20 02:32:10 发布

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

我知道脚本中函数的顺序并不重要。但是,此示例代码不起作用:

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()

为什么第一个示例不起作用?

如何提取变量中的函数列表并将其放在脚本顶部?


Tags: 函数代码inpy脚本示例forreturn
1条回答
网友
1楼 · 发布于 2024-05-20 02:32:10

你实际上误解了, 当您使用_FUNCTIONS = (_foo, _bar) 时,python期望_foo_bar作为变量,这在这里并没有什么特别之处,因为您还没有定义对它的任何引用,所以它是未定义的,因此抛出错误

在第二种情况下,您正在函数中执行相同的操作,到那时,该函数已经在python的作用域中可用,因此没有错误

正如@khelwood在评论中提到的,顺序确实很重要

相关问题 更多 >