如果没有指定变量名,则只有“*”会做什么

Msv*_*Msv 0 python python-3.x

class Field:

    def __init__(self, *, read_only=False, write_only=False):
        do_something()
Run Code Online (Sandbox Code Playgroud)

指定“*”有什么用以及它与使用 *args 有何不同?

Cor*_*ien 5

这意味着构造函数不接受位置参数,而只接受关键字参数。

class Field:

    def __init__(self, *, read_only=False, write_only=False):
        pass
Run Code Online (Sandbox Code Playgroud)
>>> Field(True, False)
...
TypeError: __init__() takes 1 positional argument but 3 were given

>>> Field(read_only=True, write_only=False)
<__main__.Field at 0x7f3cd95fde20>
Run Code Online (Sandbox Code Playgroud)