是否有必要在代碼的頂部定義一個函式,或者我們也可以在中間(即在__main__段中)定義它?就像我們在中間定義一個函式會導致執行和控制流程出錯嗎?
uj5u.com熱心網友回復:
你可以在任何你想要的地方用 Python 定義一個函式。 但是,在執行函式定義之前,它不會被定義,因此是可呼叫的。
如果您熟悉許多其他語言,這感覺很奇怪,因為似乎大多數編譯器/解釋器會在執行之前識別代碼中任何位置的函式,并且它們將在代碼中的任何位置可用。Python 解釋器不會這樣做。
以下 2 個代碼示例在語法上都是正確的,但第二個將失敗,因為 hello() 直到它被呼叫后才被定義:
示例 1(有效!):
def hello():
print('Hello World')
hello()
示例 2(失敗! - 名稱 'hello' 未定義):
hello()
def hello():
print('Hello World')
uj5u.com熱心網友回復:
只需看看 Python 的定義。
Python 是一種解釋性的高級通用編程語言。(參見:https : //en.wikipedia.org/wiki/Python_ ( programming_language))
該解釋是關鍵。我們可以認為python在檢查整個檔案之前逐行執行代碼。(這是一個不好的比喻,但為了這個問題,讓我們認為這是真的)
現在可以有很多場景:
宣告后運行函式
foo()
def foo():
print("foo")
這會失敗
在宣告之前運行函式
def foo():
print("foo")
foo()
這會成功
在函式內部呼叫函式
def foo():
print("foo")
def bar():
foo()
bar()
或者
def bar():
foo()
def foo():
print("foo")
bar()
這些都會成功。請注意在foo之后宣告的第二個示例bar。但還是會跑。請參閱:使python檔案順序中的函式定義獨立
def foo():
print("foo")
bar()
def bar():
foo()
這會失敗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/390119.html
上一篇:如何在Python中使用帶有2個引數的函式包括“self”?
下一篇:物件大小和C 標準
