gpt4 book ai didi

python - Python 函数调用中的条件参数

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:49 24 4
gpt4 key购买 nike

有没有办法在 Python 中有条件地传递参数(我使用 Python 2.7)?

例如,此代码给出 2 个或 3 个参数,具体取决于字典中是否存在第 3 个参数。

if "arg3" in my_dict:
my_method(
my_dict[arg1],
my_dict[arg2],
my_dict[arg3],
)
else:
my_method(
my_dict[arg1],
my_dict[arg2],
)

我觉得这么写显得多余。我看过一些关于 argparse 的信息,我认为它看起来像这样:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument(my_dict[arg1])
parser.add_argument(my_dict[arg2])
if arg3 in my_dict:
parser.add_argument(my_dict[arg3])
args = parser.parse_args()

my_method(args)

我也不太喜欢这种方法,因为它需要导入并且难以阅读。

有没有办法做这样的事情:

my_method(
my_dict[arg1],
my_dict[arg2],
my_dict[arg3] if arg3 in my_dict,
)

或者我想念的任何其他方式,那会简单干净吗?

最佳答案

假设你的方法签名是

def my_method(arg1=None, arg2=None, arg3=None):
print ('arg1',arg1,'arg2',arg2,'arg3',arg3)

然后简单地将所有这些 if/else block 替换为

my_method(**dictionary)

例如

 d = {'arg3':11, 'arg2':22, 'arg1':3}

以上会产生

arg1 3 arg2 22 arg3 11

这种行为是由 **kwargs 引起的,网上有很多关于它的好教程。这是来自 digial ocean 的一个(我不隶属于)

关于python - Python 函数调用中的条件参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162520/

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