[Tutor] multiple objects with one assignment?
Dave Angel
davea at davea.name
Fri Jan 2 12:27:15 CET 2015
On 01/02/2015 05:25 AM, Brandon Dorsey wrote:
> I know there is are easier ways to assign multiple objects to a variable,
> but why, does the following code work? Why does it return a tuple versus a
> list? I know it has something to do with the semi-colon, but I didn't know
> it wouldn't raise an error.
>
> greetings = "hello,", "what's", "your", "name?"
> print(greetings)
>
> x = 1, 2, 3, 4, 5, 6, 7
> print(x)
>
> I assumed that you could only assign one object per assignment without the
> presence of tuples, list, or dictionaries.
Ben's description is very good. But I think the main thing you're
missing is that a tuple is created by the comma, not by parentheses. In
some contexts, parentheses need to be added to make it non-ambiguous,
since comma is overloaded.
a = 1, 2, 3
1,2,3 is a tuple. This statement is identical to:
a = (1, 2, 3)
Likewise when you say:
return 1, 2
you are returning a tuple.
If you are passing a (literal) tuple as an argument to a function, you
would need parens, since the function call also uses commas to separate
the arguments:
myfunc(val1, (21, 22, 23), val3)
Here the function is being called with 3 arguments:
val1
the tuple
val3
--
DaveA
More information about the Tutor
mailing list