パイソン冷知識(13インストールガイド)

パイソン冷知識(13インストールガイド)


差LIST1 + = LIST2及びLIST1 = LIST1 + LIST2

alpha = [1, 2, 3]

beta = alpha           # alpha 的别名

beta += [4, 5]         # alpha 和 beta 都是[1, 2, 3, 4, 5]

beta = beta + [6, 7]   # 此时beta的内存地址已经变成了,[1, 2, 3, 4, 5, 6, 7]

print(alpha)           # alpha 还是 [1, 2, 3, 4, 5]

これは、変数のデータの種類で起こる+=独自のメモリアドレスは変わらず、単にアドレスの値を変更します。beta + [6, 7]リターンそれらが追加されているメモリのアドレスと、この時点ではありませんbeta何の関係。


_None_ではなく、変数のデータ・タイプの関数やクラスの定義で使用しました

いくつかの単語の男は、直接コードに、言いました!

def func(msg, dic={}):  # 把{} 改成None ,因為{}在函數定義的時候就會生成,每次調用都是它
    '''模擬實際開發中,嘗試從文件中拿到字典,如果沒有就返回一個空字典'''
    import json
    try:
        return json.load(msg)
    except:
        return dic


foo = func('bad data')        
foo['name'] = 'hahaha'
bar = func('also bad data')
bar['age'] = 18
print(foo)
print(bar)
'''
{'name': 'hahaha', 'age': 18}
{'name': 'hahaha', 'age': 18}
'''

このコードで、fooそしてbar空の辞書機能は、予めメモリの存在下で定義されている場合ので、同じオブジェクトを受け取りました。同様に、クラスで定義された変数のデータ型ならば、そのクラスは、すべてのサブクラスは、データを操作することができます!


イテレータ(反復)人気の知識

  • 内蔵機能iter()イテレータが渡された場合、それはに戻ります自体、渡されたが、反復オブジェクトである場合、各呼び出しが返され、新たなイテレータを
  • 知識の上に話すので、主に次のとおりです。場合は、イテレータの反復が完了し、そしてそれはまだに入れることができるfor循環が、彼はすでに空のイテレータアップ。私たちは、プログラム内の同じイテレータを繰り返し呼び出しを避けるために試してみてください!することができiter(obj) is iter(obj)、オブジェクトを決定するために用いられるので、イテレータではありませんiterationそれを好きではない、あなたが使用することはできませんisinstance()
  • 拡張:上述iter()オブジェクトは、イテレータが自分に戻りますですので、多くの学生はなるでしょうlist()set()、それは、着信データの同じタイプは、独自にそれを返します。ここで?これ残念ながら、それは返し入ってくるオブジェクトの簡易コピーを
  • 上記の拡張を続ける:str()そしてtuple()そこには、独自の同じデータ型の戻りを通過しました!(私はその理由を見つけます?)
  • **** ****キー:イテレータは、要素のリストを格納していません!それだけで、現在の元のリストを保持インデックス、次の要素へのインデックスポイントを。反復が完了する前にリストを変更するのであれば、その後、反復内容が変更されます。追加:反復反復辞書の同等ではありませんkey取得しますvalue

スライスは浅いコピーであります

私はこのような問題に遭遇したプロジェクトの過程で、私はその要素として別のリストにリストに行くが、コピーの問題を忘れてしまいます。

a = []
b = [1,3]
a.append(b)

b += [6]

a   # [1, 3, 6]  但是这不是我要的数据

# 将 a.append(b) 改为a.append(b[:]) 可以解决问题,更深的就需要用的深拷贝了

コールド知識

  • bool类親クラスですint类
  • dict类あり.__dict__、属性は、それがインスタンスではありません!公然ことを与えられていないされていることを敢えてdict何もあり__dict__、このプロパティ!ただし、継承された場合にはdict类、クラスのインスタンスが存在している__dict__属性は!

おすすめ

転載: www.cnblogs.com/Du704/p/11456880.html