python argument unpacking puzzling behaviour -
i have problem understanding process of argument unpacking list using star operator in python.
i have followed documentation entry , tried re-create own little example.
so i've defined simple list of numbers:
list = [1, 2, 3] and made quick check, works:
print(1, 2, 3) (1, 2, 3) and (just heads-up):
print([1, 2, 3]) [1, 2, 3] on other hand bit fails:
print(*[1, 2, 3]) file "<stdin>", line 1 print(*[1, 2, 3]) ^ syntaxerror: invalid syntax and fails:
print(*list) file "<stdin>", line 1 print(*list) ^ syntaxerror: invalid syntax i made sure in documentation works:
list = [1, 2] range(*list) [1] and did.
i'd understand how argument unpacking list works , expect it, because doesn't seem straightforward thought.
unpacking works when inside function call:
>>> def foo(a,b,c): ... pass ... >>> foo(*[1,2,3]) >>> using elsewhere cause error:
>>> (*[1,2,3]) file "<stdin>", line 1 (*[1,2,3]) ^ syntaxerror: invalid syntax in python 2.7, print not function, statement. far interpreter concerned, this:
print(*[1,2,3]) is syntactically equivalent this:
print *[1,2,3] which invalid. in python 3.x, print function, unpacking work.
>>> print(*[1,2,3]) 1 2 3 you can port functional print 2.7 importing future:
>>> __future__ import print_function >>> print(*[1,2,3]) 1 2 3
Comments
Post a Comment