Return value of an assignment statement?

Jeff Schwab jeff at schwabcenter.com
Thu Feb 21 17:06:06 EST 2008


John Henry wrote:
> On Feb 21, 1:48 pm, John Henry <john106he... at hotmail.com> wrote:
>> On Feb 21, 1:43 pm, mrstephengross <mrstevegr... at gmail.com> wrote:
>>
>>
>>
>>> Hi all. In C, an assignment statement returns the value assigned. For
>>> instance:
>>>   int x
>>>   int y = (x = 3)
>>> In the above example, (x=3) returns 3, which is assigned to y.
>>> In python, as far as I can tell, assignment statements don't return
>>> anything:
>>>   y = (x = 3)
>>> The above example generates a SyntaxError.
>>> Is this correct? I just want to make sure I've understood the
>>> semantics.
>>> Thanks,
>>> --Steve
>> That's true, and I am happy that they decided to make that a syntax
>> error.
> 
> BTW: The less obvious issues when coming from the C world are Python
> syntax like these:
> 
> y = x = 3
> 
> a = 4
> 
> y = x = a
> 
> print x,y
> 
> a = 5
> 
> print x,y

That's the same behavior I would expect in C, on the grounds that C 
assignments do bit-wise copies.  What I found confusing at first was 
that the same variable will either directly store or merely refer to an 
object, depending on the type of the object:

 >>> a = [ 'hello' ]
 >>> y = x = a
 >>> a += [ 'world' ]
 >>> print x, y
['hello', 'world'] ['hello', 'world']



More information about the Python-list mailing list