Python中'+='和extend的區別
最近在使用python寫代碼時,經常會將一些代碼包裝在函數中,但在函數中使用全局變量中的List時,發現有時候有"Unresolved reference 'xxxxx' "的問題,查詢文檔后發現是以下問題
首先說一下python傳參的問題
python的基本類型中,數字,str,list,turple,dict,set
其中:
- 數字,str,turple是不可變的
- list,dict,set是可變的,意味着可以在函數內允許修改值
python傳入函數的是變量的副本,如果在內部把堆區的值改變了,則原變量也會變,但若把參數的引用改變,副本會指向新的內粗怒,原變量不會變
- '+=' 擴展List
'+=' 運算同'+'運算一樣,是對兩個類型相同的變量之間的運算,並不會改變之前原有的變量,並返回一個新的值,改變了此全局變量的引用,所以在函數中使用會出現此問題 - append() 方法
append()方法是在將參數作為一個元素添加到該變量中l1=[1,2,3] l2=[4,5,6] l1.append(l2) # l1=[1,2,3,[4,5,6]] - extend() 方法
extend()方法是將參數中的每個元素使用迭代器append到原變量中
Extend list by appending elements from the iterable.l1=[1,2,3] l2=[4,5,6] l1.extend(l2) # l1=[1,2,3,4,5,6]
