[解決済み] Pythonの文字列比較:is vs == [重複]について
質問
私が書いているPythonスクリプトの挙動がおかしいことに気づき、無限ループに行き着いたのですが、そのループの条件が
while line is not ''
. デバッガで実行したところ、その行は実際には
''
. に変更したところ
!=''
よりも
is not ''
であれば、問題なく動作しました。
また、一般的にintやbooleanの値を比較する場合でも、デフォルトで'=='を使用した方が良いとされているのでしょうか?私はいつも'is'を使うのが好きで、その方が美的にもpythonicだと思うからです(それでこの罠にはまったのですが...)でも、同じidの2つのオブジェクトを見つけることを気にするときだけ予約するように意図されているのかな。
解決方法は?
<ブロッククオートPythonのすべての組み込みオブジェクト(例えば 文字列、リスト、ディクショナリ、関数。 など)、x が y ならば x==y もまた 真である。
必ずしもそうとは限りません。 NaNは反例です。 しかし
通常
同一性(
is
) が等しいことを意味する (
==
). 逆は真ならず:異なる2つのオブジェクトが同じ値を持つことができる。
また、一般的にデフォルトで '==' を使用した方が良いとされています。 int値やboolean値を比較するとき?
あなたは
==
値を比較するときと
is
は、identityを比較するときに使用します。
int 型 (または一般に immutable 型) を比較する場合、ほとんど常に前者が望まれます。 小さな整数の比較には
is
しかし、それに頼ってはいけない。
ブール値の場合、比較は全くしない方がいい。 代わりに
if x == True:
# do something
を書き込む。
if x:
# do something
との比較のため
None
,
is None
よりも優先されます。
== None
.
私は昔から'is'を使うのが好きなんです。 より美的感覚に優れる とピトニック(これが私が陥ったきっかけです。 この罠にはまってしまった......)でも、どうなんだろう。 の時だけであることを意図しています。 2つのオブジェクトを見つけることに関心がある場合 が同じidの場合。
はい、まさにその通りです。
関連
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
Python関数の高度な応用を解説
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] と'is'のどちらかを使って文字列を比較すると、異なる結果になることがあるのはなぜですか?