在 python 中同时使用显式参数和 **kwargs

eng*_*019 3 python

我有这段代码:

kwargs_input = {"name": "lala", "age": 25, "postcode": 17867}

def print_kwargs(**kwargs):
    for k,v in kwargs.items():
        print(k,v)

def func_print(name="lolo", age=56, **kwargs):
    print_kwargs(**kwargs)

print(func_print(**kwargs_input))
Run Code Online (Sandbox Code Playgroud)

它打印:

postcode 17867
None
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 为什么nameage不打印?我期望使用传递的参数来覆盖名称( lolo)和年龄( )的默认值56**kwargs_input ) 的默认值。那可能吗?
  2. 从哪里来None

qua*_*ana 9

  1. name都不会被打印,因为它们已在函数调用期间age被删除。kwargs在函数调用内部,您可以访问nameage通过这些变量。kwargs将包含其余的“变量”。
  2. 默认情况下None返回并打印出来。func_print()print(func_print())