gpt4 book ai didi

python - 处理可选的函数参数

转载 作者:行者123 更新时间:2023-11-28 22:52:14 25 4
gpt4 key购买 nike

假设您有一个接受一个或多个可选参数的函数。解决这个问题的最佳方法是什么?

这是一个函数,其中我有两个强制参数和一个可选参数,用于更改输出:

def get_cases(**kwargs):
"""Returns a list of test cases for a test suite or specific section in a test suite."""
if 'section_id' not in kwargs:
req = requests.get(settings.URL + 'get_cases/' + str(kwargs['project_id']) +
'&suite_id=' + str(kwargs['suite_id']),
auth=(settings.USR, settings.PWD), headers=headers)
else:
req = requests.get(settings.URL + 'get_cases/' + str(kwargs['project_id']) +
'&suite_id=' + str(kwargs['suite_id']) +
'&section_id=' + str(kwargs['section_id']),
auth=(settings.USR, settings.PWD), headers=headers)
return req.json()

我正在使用 **kwargs 来捕获所有值,然后如果字典中存在可选值,那么我将执行不同的操作。

除了上面代码中的冗余(2 行重复)之外,是否有更好的方法来处理可选参数?我现在对重复的行不太在意。

最佳答案

只需使用 keyword argument :(如果可以传递 None,您可以将 None 替换为不同的值)。如果 section_id 可以是 *anything,则将 section_id 设置为一个特殊对象而不是 None(可以使用 object() 生成对象)(连续调用 object() 不相等,因为内存地址不同)。

def get_cases(some_args, another_arg, section_id=None):
if section_id is None:
# A value for section_id wasn't passed.
else:
# An value for section_id was passed.

^ 使用我的解决方案传递特殊对象将使代码认为未传递参数

关于python - 处理可选的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20686177/

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