函数参数中的裸星号?
函数参数中的裸星号?
在函数参数中,裸的星号(bare asterisk)是什么意思?
当我查看pickle模块时,我看到了这个:
pickle.dump(obj, file, protocol=None, *, fix_imports=True)
我知道在参数前加单个或双个星号(用于可变数量参数),但这个什么都不在前面。而且我很确定这与pickle没有任何关系,这只是一个例子。我只在发送到解释器时学到了它的名字:
>>> def func(*): ... pass ... File "", line 1 SyntaxError: named arguments must follow bare *
如果有所影响的话,我使用的是python 3.3.0版本。
admin 更改状态以发布 2023年5月21日
\n\n原始回答完全回答了问题,只是添加了一些相关信息。单个星号的行为源于PEP-3102。引用相关部分:
The second syntactical change is to allow the argument name to be omitted for a varargs argument. The meaning of this is to allow for keyword-only arguments for functions that would not otherwise take a varargs argument: def compare(a, b, *, key=None): ...
简单地说,这意味着要传递key的值,你需要明确地传递它作为key=\"value\"。