當傳入不可變數據類型 單獨開闢內存空間 外部不變
num = 10
def edit(num):
print("內部改前當前內容:%d 地址:%d"%(num,id(num)))#內部改前當前內容:10 地址:9756480
num+=10
print("內部改後當前內容:%d 地址:%d"%(num,id(num)))#內部改後當前內容:20 地址:9756800
edit(num)
print("外部當前內容:%d 地址:%d"%(num,id(num)))#外部當前內容:10 地址:9756480
- 解決無法修改外部變量的方法 全局聲明 global
num = 10
def edit():
global num//聲明當前作用域的num爲全局變量就可修改外部變量
print("內部改前當前內容:%d 地址:%d"%(num,id(num)))#內部改前當前內容:10 地址:9756480
num+=10
print("內部改後當前內容:%d 地址:%d"%(num,id(num)))#內部改後當前內容:20 地址:9756800
edit()
print("外部當前內容:%d 地址:%d"%(num,id(num)))#外部當前內容:10 地址:9756480
當傳入可變數據類型 不單獨開闢內存空間 外部可變
list1= [10,20,30]
def edit(list1):
print("內部改前當前內容:"+str(list1))#[10, 20, 30]
list1.append(40)
print("內部改後當前內容:"+str(list1))#[10, 20, 30, 40]
edit(list1)
print("外部當前內容:"+str(list1))#[10, 20, 30]
可變的特例 list1+=list1 與 list1 = list1+ list1
list1 = [10,20,30]
def edit(list1):
print("內部改前當前內容:"+str(list1))#[10, 20, 30]
list1+=list1
print("內部改後當前內容:"+str(list1))#[10, 20, 30, 10, 20, 30]
edit(list1)
print("外部當前內容:"+str(list1))#[10, 20, 30, 10, 20, 30]
- list1 = list1 + list1 不改變外部,局部開闢新空間
list1 = [10,20,30]
def edit(list1):
print("內部改前當前內容:"+str(list1))# [10,20,30]
list1 = list1 + list1
print("內部改後當前內容:"+str(list1))#[10, 20, 30, 10, 20, 30]
edit(list1)
print("外部當前內容:"+str(list1))# [10,20,30]