Jan*_*egg 4 python overriding partial functools
有没有办法禁止在部分中覆盖给定的关键字参数?假设我想创建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
Run Code Online (Sandbox Code Playgroud)
您可以愉快地调用bar并设置a为3。是否可以创建baroutfoo并确保调用bar(a=3, b=3)会引发错误或静默忽略a=3并继续使用a=1as 在部分中?
你真的需要使用部分吗?您通常可以使用较少的参数定义一个新的函数栏。
喜欢:
def bar(a):
b = 1
foo(a, b)
Run Code Online (Sandbox Code Playgroud)
这会出错。
或者像:
def bar(a, b=1):
b = 1 #ignored provided b
foo(a, b)
Run Code Online (Sandbox Code Playgroud)
这将忽略 b。
编辑:如果您想对这些进行联机,请使用 lambda:例如:bar = lambda a:foo(a,b=1)或bar = lambda a,b=1:foo(a,b=1)