Python的參數傳遞是賦值傳遞(passbyassignment),或者叫作對象的引用傳遞(passbyobjectreference)。在進行參數傳遞時,新變量與原變量指向相同的對象。下面先來看一下Python中可變和不可變數據類型賦值的例子。
1.不可變數據類型
整型(int)賦值:
a=1
print(id(a))
b=a
print(id(b))
a=a+1
print(id(a))
c=1
print(id(c))
執行結果:
140722100085136
140722100085136
140722100085168
140722100085136
其中id()函數用于返回對象的內存地址。
可以看到b,c都指向了相同的對象,而a=a+1并不是讓a的值增加1,而是重新創建并指向了新的值為2的對象。最終結果就是a指向了2這個新的對象,b指向1,值不變。
2.可變數據類型
以列表(list)為例:
l1=[1,2,3]
print(id(l1))#
l2=l1
print(id(l2))
l1.append(4)
print(id(l1))
print(l1)
print(l2)
執行結果:
1933202772296
1933202772296
1933202772296
[1,2,3,4]
[1,2,3,4]
l1和l2指向相同的對象,由于列表是可變(mutable)數據類型,所以l1.append(4)不會創建新的列表,仍然指向相同的對象。由于l1和l2指向相同的對象,所以列表變化也會導致l2的值變化。
可變對象(列表,字典,集合等)的改變,會影響所有指向該對象的變量。對于不可變對象(字符串、整型、元組等),所有指向該對象的變量的值總是一樣的,也不會改變。
以上內容為大家介紹了Python參數傳遞,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/