通常,在塊中定義的變數僅在該塊中可用。在街區外無法到達。這樣的變數稱為局部變數。形式參數標識符也表現為局部變數。
下面的例子將強調這一點。試圖列印其作用域之外的局部變數將引發NameError
異常。
Example: Local Variable
def greet():
name = 'Steve'
print('Hello ', name)
這裡,name
是greet()
函數的局部變數,不能在函數外部訪問。
Example: Local Variable
>>> greet()
Hello Steve
>>> name Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module> name
NameError: name 'name' is not defined
任何存在於任何函數塊之外的變數稱為全局變數。它的值可以從任何函數內部訪問。在下面的例子中,name
變數在函數定義之前被初始化。 因此,它是一個全局變數。
Example: Global Variable
name='John'
def greet():
print ("Hello ", name)
現在,您可以訪問全局變數name
,因為它是由函數定義的。
>>> greet()
Hello Steve
>>> name
'Steve'
但是,如果我們在函數內部為全局聲明的變數賦值,則會在函數的命名空間中創建一個新的局部變數。此賦值不會改變全局變數的值。例如:
Example: Local and Global Variables
name = 'Steve'
def greet():
name = 'Bill'
print('Hello ', name)
現在,改變函數內部全局變數name
的值不會影響其全局值。
>>> greet()
Hello Bill
>>> name
'Steve'
如果您需要從函數內部訪問和更改全局變數的值,該許可權由global
關鍵字授予。
Example: Access Global Variables
name = 'Steve'
def greet():
global name
name = 'Bill'
print('Hello ', name)
上面將在 Python Shell中顯示以下輸出。
>>> name
'Steve'
>>> greet()
Hello Bill
>>> name
'Bill'
也可以同時使用同名的全局變數和局部變數。內置函數globals()
返回所有全局變數及其各自值的字典對象。 使用變數的名稱作為關鍵字,可以訪問和修改其值。
Example: Global Variables
name = 'Steve'
def greet():
globals()['name'] = 'James'
name='Steve'
print ('Hello ', name)
上述代碼的結果顯示了具有相同名稱的全局變數和局部變數之間的衝突以及如何解決該衝突。
>>> name
'Steve'
>>> greet()
Hello Steve
>>> name
'James'
更多信息,請訪問 Python 中的全局和局部。**
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130644.html