1. Pythonのガベージコレクションメカニズム(ガベージコレクション)について簡単に説明してください
Pythonのガベージコレクションは、参照カウントに基づいており、** mark-clear と世代別コレクション**が追加されています。
•参照カウント:Pythonは、各オブジェクトの参照カウントをメモリに保存します。カウントが0になると、オブジェクトは消え、オブジェクトに割り当てられたメモリが解放されます。 •マーククリア:list、dict、tuple、instanceなどの一部のコンテナオブジェクトには参照サイクルがある場合があります。これらのサイクルでは、ガベージコレクターはこれらのサイクルを定期的にリサイクルします(オブジェクトは参照(ポインター)によって接続されて形成されます)有向グラフでは、オブジェクトがこの有向グラフのノードを形成し、参照関係がこの有向グラフのエッジを形成します)。 •世代別コレクション:Pythonは、オブジェクトの存続期間に応じてメモリを3つの世代に分割します。オブジェクトが作成された後、ガベージコレクターはそれらが属する世代を割り当てます。各オブジェクトには世代が割り当てられ、若い世代には優先順位が割り当てられるため、後で作成されたオブジェクトはリサイクルしやすくなります。
1、__ new__現在のクラスを表すパラメーターclsが少なくとも1つ必要です。このパラメーターは、インスタンス化されるとPythonインタープリターによって自動的に認識されます。
2、__ new__戻り値が必要です。インスタンス化されたインスタンスを返します。これは自分で行います。__new__親クラスをいつ返すことができるかに特に注意してください(スーパー経由)(現在のクラス名, cls))__new__インスタンス外、または直接オブジェクト__new__出てくる例。
3、__ init__これはパラメータselfがあります__new__返されたインスタンス、__init__に__new__他のいくつかの初期化アクションは、に基づいて完了することができます__init__戻り値は必要ありません。
4、 万一に備えて__new__現在のクラスのインスタンスを作成します。自動的に呼び出されます__init__returnステートメントによって呼び出される関数__new__函数的第一个参数是 cls 来保证是当前类实例,万一に備えて是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__関数、それは他のタイプを呼び出さない__init__関数。
1、 可変データタイプ:list、dict、set 2.不変データタイプ:int / float、str、tuple原理:可変データタイプはメモリスペースアドレスを共有し、不変データタイプは各オブジェクトが1つを生成することを意味しますメモリアドレス。
a,b=1,2
a,b=b,a
•単純で、直接的で、失礼で効果的なのは、print()を使用して、問題となる可能性のある変数を出力することです。 •print()を使用して表示を支援する場合は、代わりにassertを使用できます。 •print()をloggingに置き換えることは、3番目の方法です。assertと比較して、loggingはエラーをスローせず、ファイルに出力できます。 •pythonデバッガーpdbを起動し、プログラムをシングルステップモードで実行します。実行ステータスはいつでも確認できます。
dic ={"name":"zs","age":18}
dic.pop('name')
del dic['age']print(dic)
__ init__:オブジェクト初期化メソッド
__ new__:オブジェクトの作成時に実行されるメソッド、単一列モードが使用されます
__ str__:印刷出力オブジェクトを使用する場合、自分で定義する限り__str__(self)メソッド、次にこのメソッドから返されたデータを出力します
__ del__:オブジェクト実行を削除する方法
•sort()とsorted()の違いは、sorted()が新しいリストを生成するのに対し、sortはリストをその場で再配置することです。 •sorted(L)は、元のLを変更せずにソートされたLを返します。L.sort()は元のLを操作します。呼び出し後、元のLは戻り値なしで変更されます。したがって、a = a.sort( ) 間違っている! a = sorted(a)は正しいです。 •sorted()は任意の反復可能なコンテナに適しており、list.sort()はlistのみをサポートし(それ自体はlistのメソッドです)、sortedはlist.sort()よりも頻繁に使用されるため、Pythonでのより高度な並べ替え手法sort()でデモンストレーションします
import json
dic ={"name":"zs"}
res = json.dumps(dic)print(res,type(res))
ret = json.loads(res)print(ret,type(ret))
is:両側のメモリアドレスが等しいかどうかを比較します。2つの参照が同じオブジェクトを指しているかどうかを比較します(参照比較)
== :両側の値が等しいかどうかを比較します。
a =[1,2,3]
b = a
print(a is b)print(a == b)
c = copy.deepcopy(a)print(a is c)print(a == c)-------------
True
True
False
True
Recommended Posts