2017-07-08 4 views
4

__debug__は組み込み定数で、docs on constantsによれば実装の詳細のようには見えません。__debug__がキーワードのときにキーワードリストに表示されないのはなぜですか?

次のエラーメッセージが表示されます(ドキュメントの状態としてサポートされていない)、それに割り当てしようとしている:

>>> __debug__ = False 
    File "<stdin>", line 1 
SyntaxError: assignment to keyword 

はどうやら、メッセージに従って、それはキーワードですが、:

>>> from keyword import kwlist 
>>> '__debug__' in kwlist 
False 

これは奇妙に思えます。 None,TrueおよびFalseも、kwlistに含まれています。

キーワードリストに__debug__が含まれていないのはなぜですか?

+3

キーワードは定数ではありません。 'def'、' class'などはキーワードです。 –

+0

@AshwiniChaudhary hm、 'True'、' False'、 'None'はどうでしょうか? –

+1

@AshwiniChaudhary: '__debug__'はここで監視のように見えます。 –

答えて

5

これは、技術的にはPython文法の意味でのキーワードではありません。コンパイラには、__debug__への割り当てを禁止するspecific checkがありますが、文法に関する限り、__debug__はキーワードではなく、文法からkeyword.kwlistが生成されます。

関連する問題