[英]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()
因為bar
和foo
在運行時被解析了。
如果你的腳本是獨立的,你可以使用__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.