python關於向函數傳值原值是否改變的問題

a = 100
def add(num):
	num+=num
	print num
add(a)
print a
a = [100]
def add(num):
	num+=num #注意不是num = num + num
	print num
add(a)
print a

問上面兩種情況的輸出分別是什麼?
1是200,100
2是[100,100],[100,100]

兩個裏面穿進去的都是地址,第一個做修改的時候發現傳進來的是不可修改變量,第二個傳進去的是可修改變量,所以直接做修改

不可修改變量類型:str,int,float,tuple
可修改變量類型:list,dict

3

a = [100]
def add(num):
	num = num + num
	print num
add(a)
print a

但是這種時候,輸出結果是[100,100],[100]
原因是num+=num和num=num+num不同,前面是修改原來的num的值,後面這個是num+num賦值給變量num,所以需要看函數中是不是直接對變量修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章