在Python中实现函数的前向声明

时间:2015-02-14 08:55:15

标签: python c function

是否可以声明函数并在python中单独实现它们? 我的意思是像C:

void foo();



void foo() 
{

}

3 个答案:

答案 0 :(得分:10)

C前向声明用于解决依赖性问题。函数foo由函数bar使用,foo需要bar才能存在,然后才能声明它:

void bar()
{
    if (condition) { foo(); }
}

void foo() 
{
    if (condition) { bar(); }
}
由于foo尚未宣布,因此不会编译; void foo();的C拼写我知道我在做什么,编译器,接受foo稍后会存在

Python中没有这样的依赖性问题,因为全局名称在运行时被查找;他们不必在编译时存在。

换句话说,这个正常工作

def bar():
    if condition: foo()

def foo():
    if condition: bar()

因为barfoo在运行时已解析。

答案 1 :(得分:1)

如果您的脚本是独立的,您可以使用__name__=='__main__'来解决前向声明问题read more

请注意,这不是您问题的真正答案,而是解决方法。 请考虑以下脚本作为示例。

def main():
    bar()

def bar(): 
    print "Hello World"

if __name__=="__main__":
   main() # can be any function not necessarily "main"

答案 2 :(得分:0)

我不熟悉C。根据您已经得到的评论来判断,您似乎正在尝试解决Python中不存在的问题。

我能想到的最接近你要问的是:

def foo(): pass

例如,在布置类时,有时会将其用于测试目的,即使您尚未编写特定函数的代码,也希望它能够顺利运行。

然而,还有另一种用途。如果您正在尝试创建模板方法模式,则在基类中声明的回调函数可采用以下形式:

def callback(): pass

然后可以在子类(可选)中实现这些方法,而不是必须实现的抽象方法。