局部變量和全局變量是不同的變量
局部變量是函數內部的佔位符,與全局變量可能重名但不同。函數運算結束後,局部變量就會被釋放,它只是用於函數內部運算,可以用global保留字在函數內部使用全局變量
n,s = 10,100
df fact(n):
s = 1 #若此處換作 global s 則聲明是全局變量s = 100
for i in range(1,n+1):
s *= i
return s
print(fact(n),s)
fact()函數中s時局部變量,與全局變量s不同,函數中間通過運算獲得的s的值也是局部變量,所以最後一句打印出的s是當前的全局變量s,即最後運行結果是10!以及100。
局部變量爲組合數據類型且未創建,等同於全局變量
ls = ["F","f"]
df func(a):
ls.append(a)
return
func("C")
print(ls)
第三行的ls是列表類型,未真實創建則等同於全局變量,意思是在ls這個列表中增加一個元素a,第五行調用func這個函數,意思是我在ls這個列表中增加一個變量“C”,這段代碼的運行結果爲:['F','f','C']
ls = ["F","f"]
df func(a):
ls=[]
ls.append(a)
return
func("C")
print(ls)
再看這段代碼,我們在函數func中增加了一行 ls=[] ,真實的創建了這個ls列表,則這個程序的結果爲:['F','f']
在python中,組合數據類型是用指針來體現的,所以函數中如果沒有真實創建組合數據類型,它使用的變量是使用的指針,而指針指的是外部的全局變量,所以你去修改這個指針對應的內容,就修改了全局變量