python - 部分:不允许覆盖给定的关键字参数

标签 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
您可以愉快地调用bar并设置a3 .是否可以创建 barfoo并确保调用 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/

相关文章:

python - 有没有类似 RStudio for Python 的东西?

python - Outerzip/zip 最长功能(具有多个填充值)

python - Python中bin()的时间复杂度

swift - 如何在 Swift 中覆盖 setter

REST:PUT 以及如何处理部分实体

python - 如何将并行子进程的输出写入不同的文件

java - Java 中重写 equals - getClass() 方法

c# - 在 MVC 中使用递归局部 View 引发 Stack empty InvalidOperationException

python - Pyqt4:通过文件浏览小部件编辑 QLineEdit 文本并将其作为参数发送

java - 在子类中重写已在 Java 父类中定义的相同静态方法是一种不好的做法吗?