通常,在塊中定義的變量僅在該塊中可用。在街區外無法到達。這樣的變量稱為局部變量。形式參數標識符也表現為局部變量。
下面的例子將強調這一點。試圖打印其作用域之外的局部變量將引發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-hant/n/130644.html