84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
业精于勤,荒于嬉;行成于思,毁于随。
まず最初に、3 つのことを知っておく必要があります。 1. プログラムを実行するには、メモリ内のアドレスを申請する必要があります。 2. 代入操作はメモリ内の特定のアドレスへの参照のみです。 3. Python の組み込み id() 関数。 この関数は概念的に、現在のライフのメモリ アドレスを取得するものとして理解できます。
id(object)オブジェクトの「ID」を返します。これは、そのオブジェクトの存続期間中、一意で一定であることが保証される整数です。重複しない存続期間を持つ 2 つのオブジェクトは、同じ ID を持つことができます。 () 値。 CPython 実装の詳細: これはメモリ内のオブジェクトのアドレスです。
id(object)オブジェクトの「ID」を返します。これは、そのオブジェクトの存続期間中、一意で一定であることが保証される整数です。重複しない存続期間を持つ 2 つのオブジェクトは、同じ ID を持つことができます。 () 値。
CPython 実装の詳細: これはメモリ内のオブジェクトのアドレスです。
これから、次の結果が得られます:
これに基づいて辞書/辞書を調べます:
辞書 info = {} 操作を宣言すると、辞書はメモリ内の特定のアドレスをすでに取得しています。 info['name'] = 'github' など、辞書を操作する場合、辞書は以前に占有していたアドレスのままです。 次のコードは id 関数を通じてトレースできます:
したがって、改善前のコード では、 pathlist.append(info) が追加するのは常に同じ情報であり、正確には、常に同じアドレスであり、この情報の内容は常に変更されます。 次のコードを参照してください:
次に、改良されたコード では、info = {} 操作がループ内に配置されます。その結果、各ループは新しいアドレスに適用されますが、依然として info によって参照されます。 次のコードと比較できます:
2 回出力された値は等しくありません。
さらに最初のコードのpathlist.append(info) #Add dict to the list このコメント、多すぎます 多すぎます 私がいなくなってしまいました。
これがお役に立てば幸いです。
listDirector は最終的に
情報はループするたびに更新されますが、最終的には
そういう結果になるでしょう
更新されたコードはより直感的です。info が新しく生成されるたびに、各ループの結果が追加されます。
まず最初に、3 つのことを知っておく必要があります。
1. プログラムを実行するには、メモリ内のアドレスを申請する必要があります。
2. 代入操作はメモリ内の特定のアドレスへの参照のみです。
3. Python の組み込み id() 関数。 この関数は概念的に、現在のライフのメモリ アドレスを取得するものとして理解できます。
これから、次の結果が得られます:
リーリーこれに基づいて辞書/辞書を調べます:
辞書 info = {} 操作を宣言すると、辞書はメモリ内の特定のアドレスをすでに取得しています。
リーリーinfo['name'] = 'github' など、辞書を操作する場合、辞書は以前に占有していたアドレスのままです。
次のコードは id 関数を通じてトレースできます:
したがって、改善前のコード
リーリーでは、 pathlist.append(info) が追加するのは常に同じ情報であり、正確には、常に同じアドレスであり、この情報の内容は常に変更されます。
次のコードを参照してください:
次に、改良されたコード
リーリーでは、info = {} 操作がループ内に配置されます。その結果、各ループは新しいアドレスに適用されますが、依然として info によって参照されます。
次のコードと比較できます:
2 回出力された値は等しくありません。
さらに
最初のコードのpathlist.append(info) #Add dict to the list
このコメント、多すぎます 多すぎます 私がいなくなってしまいました。
これがお役に立てば幸いです。
元のコード
listDirector は最終的に
を返します リーリー情報はループするたびに更新されますが、最終的には
リーリーそういう結果になるでしょう
コードを更新
更新されたコードはより直感的です。
info が新しく生成されるたびに、各ループの結果が追加されます。