【问题标题】:Is it possible to call a function before defining it in python?在python中定义函数之前是否可以调用它?
【发布时间】:2019-10-09 14:27:25
【问题描述】:

如何定义函数的原型?我在其定义之上调用了我的函数。但它没有用。 python解释器无法识别我的函数。

例如:

my_function()
...
def my_function():
    print("Do something...")
Unresolved reference 'my_function'

【问题讨论】:

  • 你不能。为什么你认为你需要?
  • Unresolved reference 不是 Python 异常。您看到的实际错误输出是什么?您的代码将抛出 NameError: name 'my_function' is not defined 异常(当 this 在模块的全局范围内时)或 UnboundLocalError: local variable 'my_function' referenced before assignment 如果在函数范围内。

标签: python python-3.x


【解决方案1】:

你不能。在同一作用域内,代码按照定义的顺序执行。

在 Python 中,函数定义是可执行语句,是正常执行流程的一部分,导致名称绑定到函数对象。接下来,在运行时解析(查找)名称(仅在编译时确定名称的范围)。

这意味着如果您在模块或函数范围内定义my_function,并希望在同一范围内使用,那么您必须将定义放在之前 在你使用它的地方,同样的方式你需要给一个变量名赋值,然后才能使用变量名。函数名只是变量,真的。

您总是可以在其他范围内引用函数,前提是这些函数是在定义了引用的函数之后执行的。这很好:

def foo():
    bar()

def bar():
    print("Do something...")

foo()

因为foo() 直到bar() 被定义后才会执行。

【讨论】:

    【解决方案2】:

    仅在 main() 函数之后,

    #!/usr/local/bin/python
    
    def main ():
      my_function()
    
    def my_function():
      print("Do something...")
    
    if __name__ == "__main__":
      main ()
    

    def 语句是真正可执行的语句而不是声明,这里的顺序很重要。

    【讨论】:

      猜你喜欢
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多