[解決済み】False == 0, True == 1 は実装の詳細か、それとも言語によって保証されているのか?
質問
は保証されていますか?
False == 0
と
True == 1
Pythonでは(ユーザーによって再割り当てされないと仮定して)? 例えば、以下のコードは、Pythonのバージョンがどうであれ(既存のものも、おそらく将来のものも)、常に同じ結果を生み出すことが何らかの形で保証されているのでしょうか?
0 == False # True
1 == True # True
['zero', 'one'][False] # is 'zero'
公式ドキュメントの参照があれば、ぜひお願いします。
編集
: 多くの回答で指摘されている通りです。
bool
を継承しています。
int
. したがって、この質問は次のように言い換えることができます: "ドキュメントには、プログラマが整数から継承されるブーリアンに頼ることができると公式に書かれていますか。
という値で
0
と
1
?quot;。 この質問は、実装の詳細のために失敗することのない、堅牢なコードを書くことに関係しているのです
どのように解決するのですか?
Python 2.xでは、これは
ではなく
が可能であるため、保証されています。
True
と
False
を再代入する。 ただし、このような場合でも、比較のためにboolean Trueとboolean Falseは適切に返されます。
Python 3.xでは
True
と
False
はキーワードであり、常に
1
と
0
.
Python 2 では通常の状況下で、Python 3 では常に。
False
オブジェクトは、型
bool
のサブクラスである
int
:
object
|
int
|
bool
それは、あなたの例では、唯一の理由です。
['zero', 'one'][False]
が動作します。なぜなら、リストインデックスは整数値か、あるいは
__index__
メソッド(ありがとうございます
マーク・ディキンソン
).
編集する
現在のPythonのバージョンでも、Python 3のバージョンでも同じです。その Python 2 のドキュメント と Python 3 のドキュメント はどちらも言っています。
整数には2つの種類があります。[...] 整数 (int) [...] 論理値 (bool)
と、booleanのサブセクションにあります。
ブール語。これらは真理値FalseとTrueを表します[...]ブール値はほとんど全ての文脈で、それぞれ0と1の値のように振る舞います。例外は、文字列に変換されると、それぞれ"False" または "True" という文字が返ってくるということです。
もある。 Python 2用 :
数値の文脈では(例えば算術演算子の引数として使われる場合)、[False, True] はそれぞれ整数の 0 と 1 のように振る舞います。
つまり、Python 2と3ではブーリアンは明示的に整数とみなされるのです。
ということは、Python4が登場するまでは安心ですね ;-)
関連
-
Pythonによるjieba分割ライブラリ
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] Javaにおける==とequals()の違いは何ですか?
-
[解決済み] not(True) in [False, True]」はなぜFalseを返すのですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
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関数の高度な応用を解説
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】ValueError: xとyは同じサイズでなければならない