gpt4 book ai didi

python - 使用装饰器检查可选参数

转载 作者:行者123 更新时间:2023-11-28 21:53:49 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何编写装饰器来检查是否使用特定的可选参数调用函数。这可能不是检查参数的 pythonic 方式,但无论如何我都想知道使用装饰器的解决方案。这是我正在寻找的示例:

@require_arguments("N", "p")  # Question here

def g(x,*args,**kwargs):
if "N" not in kwargs: raise SyntaxError("missing N")
if "p" not in kwargs: raise SyntaxError("missing p")
print x

g(3,N=2) # Raise "missing p"

如何编写会引发相应错误的装饰器 @require_arguments(*args)

最佳答案

给你:

def require_arguments(*reqargs):
def decorator(func):
def wrapper(*args, **kwargs):
for arg in reqargs:
if not arg in kwargs:
raise TypeError("Missing %s" % arg)
return func(*args, **kwargs)
return wrapper
return decorator

@require_arguments("N", "p") # Question here
def g(x,*args,**kwargs):
print x

g(3,N=2) # Raise "missing p"

输出:

Traceback (most recent call last):
File "arg.py", line 19, in <module>
g(3,N=2) # Raise "missing p"
File "arg.py", line 7, in wrapper
raise ValueError("Missing %s" % arg)
ValueError: Missing p

关于python - 使用装饰器检查可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25428870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com