【问题标题】:Python Decorator to force passing arguments explicitlyPython 装饰器强制显式传递参数
【发布时间】:2022-01-07 06:38:43
【问题描述】:

我有一个可以接收 3 个参数的函数。只有X 是强制性的,我可以像这样写这个函数

def foo(X, A=None, B=None):
    pass

但我想强制用户调用此函数,显式传递参数

foo(X=1, A=2, B=3)
foo(1, 2, 3)  # Error

可以为此做一个装饰器吗?

@explicitarguments
def foo(X, A=None, B=None):
    pass

【问题讨论】:

    标签: python function arguments python-decorators


    【解决方案1】:

    如果可以修改函数定义,请参考this问题。

    修补现有函数的最小装饰器如下所示:

    def explicitarguments(f):
        def f_new(**kwargs):
            return f(**kwargs)        
        return f_new
    

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 2018-12-04
      • 1970-01-01
      • 2021-11-21
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多