是否可以声明函数并在python中单独实现它们? 我的意思是像C:
void foo();
void foo()
{
}
答案 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()
因为bar
和foo
在运行时已解析。
答案 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
然后可以在子类(可选)中实现这些方法,而不是必须实现的抽象方法。