Python 2.4: Why only assignments to None are forbiden?
bokr at oz.net
Sat Nov 13 02:08:22 CET 2004
On Fri, 12 Nov 2004 13:08:30 -0800, James Stroud <jstroud at mbi.ucla.edu> wrote:
>Forbidding assignment to arbitrary things seems like a bad idea.
>I remember some learning manual recommended this (or the equivalent):
Two things wrong in the following, as noted:
#XXX# > if not bob:
if bob is None: # this is the usual gerneral idiom, so that e.g., one could
# distinguish from a caller passing a legitimate empty list 
# (though of course you could use if not bob if that's what you meant ;-)
> bob = ["carol","ted","alice"]
# ^^^^^ -- this does not assign to None, it rebinds bob,
# which has no effect on the previously bound object (in this case None)
# That's a serious misunderstanding of python's assignment semantics, which
# your momentary lapse should not be allowed to promote to newbies ;-)
> #do stuff to bob
> return bob
>otherwise bob would already be defined from the last call (because it is a
>mutable type? I can't remember.). How else to handle this in 2.4?
>On Friday 12 November 2004 01:11 pm, Josef Meile wrote:
>> Textually from the highlights of python 2.4:
>> "Assigning to None - the compiler now treats assigning to None as a
>> I think in general assignments to built-in types, functions, and
>> variables should be also forbiden.
Python 2.4b1 (#56, Nov 3 2004, 01:47:27)
[GCC 3.2.3 (mingw special 20030504-1)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> None = 'foo'
SyntaxError: assignment to None
>>> 1234 = 'foo'
SyntaxError: can't assign to literal
>>> bob = None
>>> bob = 1234
More information about the Python-list