Python文档中os.removexattr的解释 -- '*' (星号)参数代表什么意思?
Python文档中os.removexattr的解释 -- '*' (星号)参数代表什么意思?
我的第一个问题,请温柔一点。我搜索了但是无法在这里或其他地方找到答案。
请注意,这个问题不适用于类似*args的参数拆包。
在Python 3.3的os.removexattr文档中,如下所述:
os.removexattr(path, attribute, *, follow_symlinks=True) 从路径中删除扩展的文件系统属性attribute。 attribute应该是bytes或str类型。如果是字符串,将使用文件系统编码进行编码。 此函数可以支持指定文件描述符并且不跟随符号链接。
请注意,第三个参数是一个星号:*
我假设这意味着“指定一个属性或用逗号分隔的多个属性”,但是当我尝试这样做时,出现了异常:
import os os.removexattr('M7-AAE-01.jpg', 'user.camera_brand', 'user.camera_model') Traceback (most recent call last): File "", line 1, in TypeError: 函数最多接受2个位置参数(给出了3个)
我还尝试提供一个参数列表,但也不起作用。
在这种情况下,星号参数具体是什么意思?
谢谢。
在Python文档中,当我们看到函数定义中使用了单个星号*
时,它表示强制使用命名参数。这意味着如果要为follow_symlinks
传递一个值,我们必须使用参数名进行传递。
这样做的目的是为了避免在函数调用中使用类似foo(True, False, False)
的形式,让人不知道这些值的含义。
感谢你的答案。我查看了几个Python文档的例子,发现星号*
参数总是用在命名参数之前,所以这绝对是正确的答案。不过我必须说,这有点令人困惑,因为星号看起来像是某种“魔法”参数。实际上,我们应该将其解释为“星号参数表示此后的参数都是命名参数”。类似这样的解释...
好吧,看起来你的观察并不普遍;例如os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)
。或者在这里ns
也是一个关键字参数吗?
根据Python参考文档(docs.python.org/3/reference/…)的说明:在“*”或“*identifier”之后的参数是只能通过关键字参数传递的参数。