2010-03-29 20 views
8

Jestem obecnie czytając rozdział 5.8 Dive Into Python i Mark Pilgrim mówi:Jak zmienić wartość None w Pythonie?

There are no constants in Python. Everything can be changed if you try hard enough. This fits with one of the core principles of Python: bad behavior should be discouraged but not banned. If you really want to change the value of None, you can do it, but don't come running to me when your code is impossible to debug.

Próbowałem to w tłumacza

None = "bad" 

dostaję SyntaxError: Przyporządkowanie do Żaden

Po prostu z ciekawości, jak się zmieniasz Brak?

EDIT:

Co ciekawe:

>>> 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 

także

>>> 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) 
... 
>>> 

Więc myślę 'None =' po prostu nie działa w dowolnym kontekście

Odpowiedz

13

Najpierw trzeba zainstalować wersję starą Pythona (myślę, że nie ds mieć 2.2 lub starsze). W wersji 2.4 i nowszych na pewno (i wierzę w 2.3) zadanie to jest błędem składni. Znakomita książka Marka jest, niestety, nieco przestarzała.

+0

Myślę, że 2.3 dało ci SyntaxWarning, fwiw. – perimosocordiae

+0

Dzięki za odpowiedź, chyba nie ma miłości dla bandytów w nowszych wersjach. –

+5

Możesz nadal robić "True = False" w 2.6. I będzie to miało pożądany skutek. – viraptor

Powiązane problemy