一、深淺拷貝
深淺拷貝是指copy模組下的copy()和deepcopy()方法。
1、淺拷貝
示例:>>> importcopy>>> a = 'hello word'
>>> b = >>> a1 =copy.copy(a)>>> b1 =copy.copy(b)>>> printid(a)140458175739296
>>> printid(a1)140458175739296
>>> printid(b)140458175695680
>>> printid(b1)140458175749208
>>> print id(b[3])140458175609096
>>> print id(b1[3])140458175609096
>>> print id(b[3][0])41361752
>>> print id(b1[3][0])41361752
淺拷貝時,變數的記憶體位址不會發生改變。
2、深拷貝
示例1:
>>> importcopy>>> a = 'hello word'
>>> printid(a)140069292463520
>>> a1 =copy.deepcopy(a)>>> printid(a1)140069292463520
對於字串或者整型,深拷貝同淺拷貝效果一樣,其記憶體位址不會發生改變。
示例2:
>>> importcopy>>> b = >>> b1 =copy.deepcopy(b)>>> printid(b)140442326100800
>>> printid(b1)140442326156184
>>> print id(b[3])140442326014216
>>> print id(b1[3])140442326097288
>>> print id(b[3][0])32555352
>>> print id(b1[3][0])32555352
深拷貝時,除了最內層資料(字串或數字)外,其他資料都會重新建立乙份,記憶體位址發生改變。
二、函式之動態引數
示例1:
def func (*arg):#乙個可變引數,放在元組中
printarg
func (1,2,3,4,5,6)#結果為乙個元組:(1,2,3,4,5,6)
*arg 表示該函式可以接受個數可變的引數,將獲取的所有引數存放在乙個元組中。
示例2:
def func (**kwargs):#乙個可變引數,放在字典中
printkwargs
func(a=123,b=234,c=345)#結果為乙個字典:
**kwargs 表示該函式可以接受個數可變的引數,將獲取的所有引數以鍵值對形式存放在字典中。
示例3:
def func (*arg,**kwargs):printarg,kwargs
l= [11,22,33]
d= func(l,d)#結果為乙個元組和乙個空字典:([11, 22, 33], ) {}
該函式有兩個形參,當給函式傳參時(引數為乙個元組和乙個字典),函式會把這兩個引數傳給第乙個形參*arg,生成乙個元組。**kwargs沒有接收引數,為乙個空字典。
示例4:
def func(*arg,**kwargs):#兩個可變引數,字串放在元組中,鍵值對放在字典中
printarg,kwargs
func('aha','dfjid','fdjfdkf',a=123,b=234)#結果為:('aha', 'dfjid', 'fdjfdkf')
既有字串,也有鍵值對時,字串傳遞給*arg,放在元組中,鍵值對傳遞給**kwargs,放在字典中。
示例5:
def func (*arg,**kwargs):printarg,kwargs
l= [11,22,33]
d= func(*l,**d)#結果為:(11, 22, 33)
python簡述定義函式的規則 python 函式
一.定義函式 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段 函式能提高應用的模組性,和 的重複利用率 函式式 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 物件導向 對函式進行分類和封裝,讓開發 更快更好更強.函式式程式設計最重要的是增強 的重用性和可讀性 1.定義函...
pytho函式星號引數
神奇的星號 傳遞實參和定義形參 所謂實參就是呼叫函式時傳入的引數,形參則是定義函式是定義的引數 的時候,你還可以使用兩個特殊的語法 呼叫函式時使用 test args 的作用其實就是把序列 args 中的每個元素,當作位置引數傳進去。比如上面這個 如果 args 等於 1,2,3 那麼這個 就等價於...
python class函式報錯 Python類
建立乙個類 class person pass p person print p 類以class 宣告 self變數 這個定義與c 的this指標,都是指向物件示例本身,但使用起來是不一樣的。可以看到函式定義的時候,都要帶乙個self引數。這是因為python直譯器會預設將物件本身作為引數傳入函式。...