Как изменить значение None в Python? - PullRequest
8 голосов
/ 29 марта 2010

Я сейчас читаю главу 5.8 Dive Into Python, и Марк Пилигрим говорит:

В Python нет констант. Все можно изменить, если вы постараетесь достаточно. Это соответствует одному из основных принципов Python: плохое поведение следует поощрять, но не запрещать. Если вы действительно хотите изменить значение None, вы можете это сделать, но не прибегайте ко мне, когда ваш код невозможно отладить.

Я попробовал это в интерпретаторе

None = "bad"

Я получаю Ошибка синтаксиса: присвоение None

Просто из любопытства, как вы меняете None?

EDIT:

Интересно:

>>> import __builtin__
>>> __builtin__.None is None
True
>>> None
>>> None = "bad"
  File "<stdin>", line 1
SyntaxError: assignment to None
>>> __builtin__.None = "bad"
  File "<stdin>", line 1
SyntaxError: assignment to None
>>> setattr(__builtin__, "None", "bad")
>>> __builtin__.None
'bad'
>>> None
>>> __builtin__.None is None
False
>>> __builtin__.None = None
  File "<stdin>", line 1
SyntaxError: assignment to None

Также

>>> class Abc:
...     def __init__(self):
...             self.None = None
... 
  File "<stdin>", line 3
SyntaxError: assignment to None
>>> class Abc:
...     def __init__(self):
...             setattr(self,'None',None)
... 
>>> 

Так что я думаю, «None =» просто не работает ни в каком контексте

1 Ответ

13 голосов
/ 29 марта 2010

Сначала вы должны установить старую версию Python (я думаю, что она должна быть 2.2 или старше). В версии 2.4 и новее наверняка (и я верю в 2.3) рассматриваемое назначение является синтаксической ошибкой. Отличная книга Марка, увы, немного устарела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...