簡體   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