gpt4 book ai didi

python - 获取迭代过程中变量的名称

转载 作者:行者123 更新时间:2023-12-01 02:07:10 24 4
gpt4 key购买 nike

我有一个函数,允许许多选项作为 bool 值,例如:

def my_func(req, option_a=False, option_b=True, option_c=True):
pass

我想确保为这些变量添加 bool 值,这样我就可以进行简单的检查:

def my_func(req, option_a=False, option_b=True, option_c=True):
for param in [option_a, option_b, option_c]:
if not isinstance(param, bool):
raise ValueError(f'Unexpected value {param} for X. A boolean value is required')

显然,这并没有提供有关哪个参数具有错误值的大量信息。因此,我想知道是否可以获取变量的名称,以便将上面代码片段中的X替换为变量名称。错误示例如下:

Unexpected value bananas for option_b. A boolean value is required

这在Python中可能吗?

最佳答案

如果您同意在函数中使用 **kwargs 而不是显式选项名称,您可以这样做:

def my_func(req, **kwargs):
default_params = {"option_a":False, "option_b":True, "option_c":True}
for name,dpv in default_params.items():
if name in kwargs:
param = kwargs[name]
if not isinstance(param, type(dpv)):
raise ValueError('Unexpected value {param} for {name}. A {type} value is required'.format(param=param,name=name,type=dpv.__class__.__name__))
else:
kwargs[name] = dpv
print(kwargs)

my_func(12,option_a=False,option_b=False,option_c=True)

此代码具有参数及其默认值。如果类型与传递的参数之一不匹配,则会出现错误。

如果省略值,kwargs 会手动分配默认值。

这适用于 bool 值,但也适用于其他类型(当然,因为 bool 值是整数,所以它允许整数传递,除非您通过严格的 type(param) == type 更改 isinstance (dpv)检查)

关于python - 获取迭代过程中变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48945173/

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