有没有办法禁止在部分中覆盖给定的关键字参数?假设我要创建函数 bar
总是有 a
设置为 1
.在以下代码中:
from functools import partial
def foo(a, b):
print(a)
print(b)
bar = partial(foo, a=1)
bar(b=3) # This is fine and prints 1, 3
bar(a=3, b=3) # This prints 3, 3
您可以愉快地调用bar
并设置a
至3
.是否可以创建 bar
出 foo
并确保调用 bar(a=3, b=3)
要么引发错误,要么默默地忽略 a=3
并继续使用a=1
如在部分?
最佳答案
你真的需要使用部分吗?
您通常可以使用更少的参数定义一个新的函数 bar 。
像:
def bar(a):
b = 1
foo(a, b)
这将给出错误。或者像:
def bar(a, b=1):
b = 1 #ignored provided b
foo(a, b)
这将忽略 b。编辑:如果你想把这些放在一起,请使用 lambda:
喜欢:
bar = lambda a:foo(a,b=1)
或 bar = lambda a,b=1:foo(a,b=1)
关于python - 部分:不允许覆盖给定的关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64481847/