仅关键字和关键字必需参数

Python 3 允许你定义只能通过关键字分配的函数参数,即使没有默认值也是如此。这是通过使用 star *来消耗额外的位置参数而不设置关键字参数来完成的。 *之后的所有参数都是仅关键字(即非位置)参数。请注意,如果没有给出仅限关键字的参数,则在调用函数时仍然需要它们。

def print_args(arg1, *args, keyword_required, keyword_only=True):
    print("first positional arg: {}".format(arg1))
    for arg in args:
        print("another positional arg: {}".format(arg))
    print("keyword_required value: {}".format(keyword_required))
    print("keyword_only value: {}".format(keyword_only))
    
print(1, 2, 3, 4) # TypeError: print_args() missing 1 required keyword-only argument: 'keyword_required'
print(1, 2, 3, keyword_required=4) 
# first positional arg: 1
# another positional arg: 2
# another positional arg: 3
# keyword_required value: 4
# keyword_only value: True