1. ==堂氯, is 的使用
總結
1. is是比較兩個引用是否指向了同一個對象(地址引用比較)颤陶。
2. ==是比較兩個對象是否相等挣郭。(比較的數(shù)值)
2.深拷貝 與 淺拷貝
2.1 淺拷貝
? ? ? ? ? ?淺拷貝是對于一個對象的頂層拷貝
? ? ? ? ? ?通俗的理解是:拷貝了引用月腋,并沒有拷貝內(nèi)容
a = [1,2,3,4]
b = a
print(id(a))
print(id(b))
a.append(5)
print(a)
print(b)
2.2 深拷貝
深拷貝的是內(nèi)容一樣褪储。地址不一樣卵渴。一方修改了,另一方不受影響鲤竹。
b = copy.deepcopy(a)
b得到的內(nèi)容與a的內(nèi)容完全一樣浪读,地址不一樣。
就算a中有對象引用辛藻,b中對應的引用的對象依然是內(nèi)容一樣碘橘,地址不一樣。
遞歸拷貝
注意:
如果是一個不可變對象(內(nèi)部存儲還是不可變對象)吱肌,深拷貝的結果 = 淺拷貝痘拆,地址一樣
例如:
2.3 copy.copy()
格式: b = copy.copy(a)
copy.copy這個函數(shù)結果會因為是可變或者不可變導致結果不同
只能拷貝一層。根據(jù)類型有關氮墨。如果是列表(可變類型)纺蛆,深拷貝吐葵。如果是元組(不可變)淺拷貝
如果里面還有嵌套的對象,淺拷貝
3 生成器(gener)
3.1
3.2 模擬多任務實現(xiàn)方式之一:協(xié)程
def test1():
? ? ? ?while True:
? ? ? ? ? ? ?print("--1--")
? ? ? ? ? ? ?yield None
def test2():
? ? ? while True:
? ? ? ? ? ? print("--2--")
? ? ? ? ? ?yield None
t1 = test1()
t2 = test2()
while True:
? ? ? ?t1.__next__()
? ? ? ?t2.__next__()
生成器的特點:
1.節(jié)約內(nèi)存
2.迭代到下一次的調(diào)用時桥氏,所使用的參數(shù)都是第一次所保留下的温峭,即是說,在整個所有函數(shù)調(diào)用的參數(shù)都是第一次所調(diào)用時保留的识颊,而不是新創(chuàng)建的诚镰。