Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bare asterisk in function arguments?

What does a bare asterisk in the arguments of a function do?

When I looked at the pickle module, I see this:

pickle.dump(obj, file, protocol=None, *, fix_imports=True) 

I know about a single and double asterisks preceding arguments (for variable number of arguments), but this precedes nothing. And I'm pretty sure this has nothing to do with pickle. That's probably just an example of this happening. I only learned its name when I sent this to the interpreter:

>>> def func(*): ...     pass ...   File "<stdin>", line 1 SyntaxError: named arguments must follow bare * 

If it matters, I'm on python 3.3.0.

like image 349
Eric Avatar asked Jan 13 '13 08:01

Eric


1 Answers

Bare * is used to force the caller to use named arguments - so you cannot define a function with * as an argument when you have no following keyword arguments.

See this answer or Python 3 documentation for more details.

like image 186
Kimvais Avatar answered Oct 06 '22 15:10

Kimvais