On 02/09/2016 16:52, alister wrote:
On Fri, 02 Sep 2016 23:44:50 +1000, Ben Finney wrote:
Smith <sm...@smith.com> writes:
I'm trying to understand the concept of * args and ** kwarg with
python3
Welcome. Your questions are fine in this forum; but you may also want to
participate in our collaborative learning forum for Python beginners,
<URL:https://mail.python.org/mailman/listinfo/tutor>.
But I can not understand why I returns the error message "SyntaxError:
positional argument follows the keyword argument" when I insert values.
It's fairly simple (though it may not be obvious!):
In [23]: start(data="Fish",2,3,tox="tux")
File "<ipython-input-23-eb9c3abb9941>", line 1
start(data="Fish",2,3,tox="tux")
^
SyntaxError: positional argument follows keyword argument
Exactly.
Note that this has nothing to do with how the function is defined; in
the definition of the function, parameters are neither positional nor
keyword. You name each of them, and you define an order for them; and
neither of those makes any of them “positional” or “keyword”.
Rather, “positional argument and “keyword argument” are characteristics
of the arguments you *supply* in a particular call to the function.
You have specified four arguments, in this order:
* A keyword argument, ‘data="Fish"’.
* A positional argument, ‘2’.
* A positional argument, ‘3’.
* A keyword argument, ‘tox="tux"’.
After specifying a keyword argument, you may not then specify any
positional arguments. Hence the SyntaxError.
& the solution is to change the order of the definition
def start( must_have,*args,**kwargs,data=none):
thanks a lot
--
https://mail.python.org/mailman/listinfo/python-list