代码之家  ›  专栏  ›  技术社区  ›  George Cloone-y

如何在Python中转发声明/原型函数?[副本]

  •  18
  • George Cloone-y  · 技术社区  · 10 年前

    如何在类似于C++的通用Python程序中原型化方法?

    # Prototype
    # Do Python prototyping
    
    writeHello() # Gives an error as it was not defined yet
    
    def writeHello():
        print "Hello"
    
    1 回复  |  直到 2 年前
        1
  •  21
  •   Martijn Pieters    10 年前

    Python没有原型,因为您 不需要它 .

    Python查找全局变量 在运行时 ; 这意味着 当您使用 writeHello 然后在那里查找对象。对象不需要在编译时存在,但 需要在运行时存在。

    在C++中,您需要原型化以允许两个函数相互依赖;然后编译器可以确定您正在使用第二个稍后定义的函数。但因为Python查找第二个函数 而是在运行时 ,不需要这样的前向定义。

    举例说明:

    def foo(arg):
        if not arg:
            return bar()
    
    def bar(arg=None):
        if arg is not None:
            return foo(arg)
    

    这里,两个 foo bar 当调用函数时,将被查找为全局变量,并且不需要 bar() 用于Python编译 foo() 成功地