2010-03-29 6 views
8

Je suis actuellement la lecture du chapitre 5.8 de plongée au coeur de Python et Mark Pilgrim dit:Comment changer la valeur de None en Python?

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.

J'ai essayé dans l'interpréteur

None = "bad" 

Je reçois un SyntaxError: affectation à Aucun

Juste par curiosité comment changez-vous None?

EDIT:

Fait intéressant:

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

également

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

donc je suppose que 'None =' ne fonctionne tout simplement pas dans un contexte

Répondre

13

Vous devez d'abord installer une ancienne version de Python (je pense que c'est ds être 2.2 ou plus vieux). En 2.4 et plus récent pour certain (et je crois en 2.3) l'affectation en question est une erreur de syntaxe. L'excellent livre de Mark est, hélas, un peu daté maintenant.

+0

Je pense que 2.3 vous a donné un SyntaxWarning, fwiw. – perimosocordiae

+0

Merci pour la réponse, je suppose qu'il n'y a plus d'amour pour les voyous dans les versions les plus récentes. –

+5

Vous pouvez toujours faire 'True = False' dans 2.6 si. Et cela aura l'effet que vous voulez. – viraptor

Questions connexes