[解決済み】PythonのNone比較:"is "と==のどちらを使うべきですか?
2022-04-19 03:34:36
質問
を比較すると、エディタから警告が表示されます。
my_var == None
を使用すると警告が出ますが
my_var is None
.
Pythonのシェルでテストしたところ、どちらも有効な構文であることがわかりましたが、エディターが言うには
my_var is None
の方が好ましいと思います。
また、その理由は何ですか?
解決方法は?
概要
使用方法
is
に対してチェックを行いたい場合、オブジェクトの
アイデンティティ
(例)
var
は
None
). 使用方法
==
を確認したい場合
等しい
(例)
var
と等しい
3
?).
説明します。
カスタムクラスを持つことができます。
my_var == None
を返します。
True
例
class Negator(object):
def __eq__(self,other):
return not other
thing = Negator()
print thing == None #True
print thing is None #False
is
オブジェクトをチェックする
アイデンティティ
. オブジェクトは1つだけです。
None
を実行すると
my_var is None
でなく)、実際に同じオブジェクトであるかどうかをチェックしているのです。
等価
オブジェクト)
言い換えれば
==
は等価性のチェック(これはオブジェクトごとに定義される)であるのに対し
is
は、オブジェクトの同一性をチェックします。
lst = [1,2,3]
lst == lst[:] # This is True since the lists are "equivalent"
lst is lst[:] # This is False since they're actually different objects
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python 入出力と高次代入の基礎知識
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み] データ型が理解できない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み] PythonでNoneTypeを "テスト "する方法は?
-
[解決済み] Python: None を空の文字列に変換する最も慣用的な方法?
-
[解決済み] dictから空の文字列を含むキーを削除する効率的な方法