了解Python作用域
作用域是指變量的有效范圍。對于自學者來說,如果已經進入了函數這一部分,那么就應該了解Python的作用域。否則,你可能會像我一樣,總是對一個變量名在函數內外同時存在且具有不同的值感到困惑。在這篇文章中
作用域是指變量的有效范圍。對于自學者來說,如果已經進入了函數這一部分,那么就應該了解Python的作用域。否則,你可能會像我一樣,總是對一個變量名在函數內外同時存在且具有不同的值感到困惑。在這篇文章中,我將總結我所了解到的作用域以及LEGB規(guī)則。
1. 全局作用域(Global)
當我們創(chuàng)建一個文件時,就形成了一個模塊,這時候就產生了一個作用域。這個范圍是整個模塊,被稱為全局作用域。例如,在一個名為的文件中聲明一個變量bd"百度",那么變量bd就是一個全局變量。
```python
bd "百度"
if True:
print(bd) 輸出:百度
def function_1():
print(bd)
function_1()
```
在這個例子中,變量bd可以在函數內和函數外被使用。
2. 局部作用域(Local)
當函數被定義后,它就擁有了一個屬于自己的小天地,即局部作用域。在這個范圍內,可以定義變量,也可以在內部嵌套函數。但是,局部作用域中的變量只能在局部范圍內使用。
```python
def locals():
x 100
print("local_x ", x)
locals()
```
輸出結果:local_x 100
如果在全局范圍內打印x,就會報錯:
```python
def locals():
x 100
print("local_x ", x)
print(x) 錯誤!NameError: name 'x' is not defined
locals()
```
因此,局部變量x只能在函數內部使用,在其他地方調用時會出錯。
3. 嵌套作用域(Enclosed)
當函數嵌套時,就會產生嵌套作用域,介于全局作用域和局部作用域之間。比如,一個函數嵌套了另一個函數,那么被嵌套的函數就是內部作用域,而嵌套函數的作用域就是嵌套范圍的作用域。如果有更多層的嵌套,就會有多個嵌套作用域。
```python
x 20
def local_out():
y 30
def local_in():
z 40
print("本地變量z:", z)
print("嵌套變量y:", y)
local_in()
print("全局變量x:", x)
local_out()
```
輸出結果:
全局變量x: 20
嵌套變量y: 30
本地變量z: 40
4. Python的內建函數(Built-in)
內建函數是Python中天生就有的函數,無論在哪個作用域都可以直接調用。其中,最常用的莫過于print()函數。關于內建函數的詳細信息,你可以在Python的文檔中找到。
通過理解Python的作用域,可以更好地掌握變量的使用范圍和生命周期,從而提高代碼的可讀性和可維護性。希望這篇文章對你有所幫助,讓你更好地理解Python作用域的概念。