2012-11-15 2 views

答えて

6

Trueは、strまたは他の任意の組み込みのように、デフォルトではスコープ内に存在する名前に過ぎません。そのような名前のように再バインドすることができます。

+1

実際にOPは '__main __。True'を作成します。 '__builtin __。True .'はまだアクセス可能です。 – jfs

+2

' None = 42'は 'SyntaxError'になります。なぜその名前に同じ論理が適用されないのですか? – martineau

+0

@martineau:適用されます。 True/FalseはPython 3のキーワードです.btw、Python 2.3のNoneに割り当てることができます。 – jfs

2

実際には、reserved wordsはほとんどありません。残りはすべて再定義の対象となります。注意するのはあなた次第です!

+3

質問は約2.7でしたが、3.xの 'True'と' False'は予約語として含まれており、定義できません。 –

+0

@Mahi、それは歓迎されるニュースです。 –

2
>>> True = False 
False 

上記の割り当てでは、Trueは、使用する他の変数と同様に変数に過ぎません。 スコープは現在のスコープに制限されています。したがって、以下の例のように任意の値を割り当てることができます。まだbuiltinにアクセスできるので、2 < 3の比較ではまだTrueが印刷されています。

>>> True = 3 
>>> True 
3 
>>> 2 < 3 
True 
1

True = False 

あなたがFalseに割り当てる値がtrueと呼ばれる新しい変数を作成し入力します。

2番目の質問に答えると、TrueとFalseは、異なる文字列表現を持つ整数1と0(技術的に言えばサブクラス)のカスタマイズされたバージョンです。

関連する問題