簡體   English   中英

在 Python function 中調用與定義全局變量

[英]Calling versus defining global variables inside a Python function

我對 Python 比較陌生,所以請原諒我的無知。

我有兩個函數作用於單個變量var

var = 8

def func1():
    print(var)

def func2():
    var += 1
    print(var)

func2不會 function 除非我將var定義為全局變量:

def func2():
    global var
    var += 1
    print(var)

什么功能允許我調用全局變量(如func1中)但不允許我重新定義全局變量而不先顯式調用它們(如func2中)?

編程常見問題解答解釋了原因:

在 Python 中,僅在 function 內部引用的變量是隱式全局的。 如果一個變量在函數體內的任何地方都被賦值,除非明確聲明為全局變量,否則它被假定為局部變量。

雖然起初有點令人驚訝,但片刻的考慮解釋了這一點。 一方面,對已分配的變量要求全局性提供了防止意外副作用的障礙。 另一方面,如果所有全局引用都需要全局,那么您將一直使用全局。 您必須將對內置 function 或導入模塊的組件的每個引用聲明為全局。 這種混亂會破壞全局聲明識別副作用的有用性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM