繁体   English   中英

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

[英]Implementing forward declarations for functions in Python

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

void foo();



void foo() 
{

}

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在运行时被解析了。

如果你的脚本是独立的,你可以使用__name__=='__main__' ,以规避与向前声明您的问题更多

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

def main():
    bar()

def bar(): 
    print "Hello World"

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

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

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

def foo(): pass

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

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

def callback(): pass

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM