局部變量
<1>什么是局部變量
如下圖所示:

<2>小總結
- 局部變量,就是在函數內部定義的變量
- 不同的函數,可以定義相同的名字的局部變量,但是各用個的不會產生影響
- 局部變量的作用,為了臨時保存數據需要在函數中定義變量來進行存儲,這就是它的作用
全局變量
<1>什么是全局變量
如果一個變量,既能在一個函數中使用,也能在其他的函數中使用,這樣的變量就是全局變量
demo如下:
# 定義全局變量
a = 100
def test1():
print(a) def test2(): print(a) # 調用函數 test1() test2()
運行結果:

<2>全局變量和局部變量名字相同問題
看如下代碼:

<3>修改全局變量
既然全局變量,就是能夠在所以的函數中進行使用,那么可否進行修改呢?
代碼如下:

<4>總結1:
- 在函數外邊定義的變量叫做
全局變量 - 全局變量能夠在所有的函數中進行訪問
- 如果在函數中修改全局變量,那么就需要使用
global進行聲明,否則出錯 - 如果全局變量的名字和局部變量的名字相同,那么使用的是局部變量的,小技巧
強龍不壓地頭蛇
<5>可變類型的全局變量
>>> a = 1
>>> def f():
... a += 1 ... print a ... >>> f() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in f UnboundLocalError: local variable 'a' referenced before assignment >>> >>> >>> li = [1,] >>> def f2(): ... li.append(1) ... print li ... >>> f2() [1, 1] >>> li [1, 1]
<5>總結2:
- 在函數中不使用global聲明全局變量時不能修改全局變量的本質是不能修改全局變量的指向,即不能將全局變量指向新的數據。
- 對於不可變類型的全局變量來說,因其指向的數據不能修改,所以不使用global時無法修改全局變量。
對於可變類型的全局變量來說,因其指向的數據可以修改,所以不使用global時也可修改全局變量。
