在定义之前调用Python函数

时间:2014-03-06 17:24:41

标签: python interpreter

我对Python中下面给出的代码感到困惑,其中函数在定义之前被调用。可能吗?是因为函数没有返回值吗?

from Circle import Circle

def main():
    myCircle = Circle()
    n = 5
    printAreas(myCircle, n) #The function is called here

def printAreas(c, times):
    xxxx
    xxxx

main()

3 个答案:

答案 0 :(得分:3)

您的计划会发生什么:

  1. main已定义,在其正文中引用了printAreas,这只是一个参考,而不是一个电话
  2. printAreas已定义
  3. main已被调用
  4. main来电printAreas
  5. 所以一切都很好 - 你可以随时引用你想要的任何名字,只要你确保在执行包含引用的代码时定义这些名称(绑定到某个值) :

    def foo():
        print bar  # reference to as-of-yet non-existent bar
    
    # calling foo here would be an error
    
    bar = 3
    
    foo()  # prints 3
    

答案 1 :(得分:0)

Python将首先解析您的文件,将所有函数,变量等注册到全局命名空间。它将然后调用main函数,然后调用printAreas。当时,这两个函数都在您的脚本命名空间中,因此可以完全访问。

让你感到困惑的只是阅读顺序。

答案 2 :(得分:0)

您在计划结束时致电main。这允许口译员加载所有功能,然后启动main功能。