Pythonで変数の値をクリアする方法はありますか?例えばPythonで変数をクリアする
私は、バイナリツリーを実装した場合:
Class Node:
self.left = somenode1
self.right = somenode2
私は木からいくつかのノードを削除したい場合は、私は空にself.left
を設定する必要があります。
Pythonで変数の値をクリアする方法はありますか?例えばPythonで変数をクリアする
私は、バイナリツリーを実装した場合:
Class Node:
self.left = somenode1
self.right = somenode2
私は木からいくつかのノードを削除したい場合は、私は空にself.left
を設定する必要があります。
self.left = None
に問題がありますか?あなたの質問を誤って解釈したのですか、またはNone
キーワードに精通していませんか?
del
キーワードとなります。 EDITED
>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
:しかし、私はself.left = None
これが完全に削除されない場合もありますが、メモリ内のその参照のみが削除されます。これはgcを持たないメモリ内にゴースト変数を残す可能性があります。 –
'del'には、存在しない変数を削除しようとすると例外がスローされるという欠点もあります。通常は*望ましくありません。 –
私が指摘したいのは、間違って 'type(...) 'とタイプするときに' type = ... 'などのコマンドで上書きされた変数を宣言した場合、元のコードを削除するのが最も簡単な方法です機能性。つまり、Noneのままにしておけば、基本的な関数へのアクセスを切断することになります。 – mpacer
に投票このケースではあなたはこれを試すことができます。
self.left = None
self.left = None
が仕事をする必要があります。
var = None
"値をクリア"し、変数の値を "なし"のように "null"に設定しますが、変数へのポインタは残ります。
del var
は、変数の定義を完全に削除します。
変数を後で使用する場合は、新しい値を設定します。つまり、変数を保持すると、None
が改善されます。
実際には、変数/プロパティは削除されません。変数の値はNone
に設定されます。したがって、変数はメモリ内の領域を占有します。変数のすべての存在をメモリから完全に消去したい場合は、次のように入力するだけです:
del self.left
私はなぜ= Noneの答えがとても人気があるのか分かりません。これは正しい答えです –
OPは「クリア」ではなく「削除」と言いました。 delは属性とルックアップを消去します。 'self.left'をチェックすれば、ノードが空であるかどうかをチェックするのに十分なはずです。 – user1767754
Noneキーワードには慣れていません。これは他の言語のnullと似ていますか? – Bnicholas
はい。これはnullと等価です。 – Smashery
はい、 'None'は' null'、 'nil'とそのすべての"同義語 "に似ています。 – juliomalegria