gpt4 book ai didi

python - 在 python 函数中使用 *args 和初始化参数的正确方法

转载 作者:行者123 更新时间:2023-12-01 04:06:40 24 4
gpt4 key购买 nike

假设我有一个函数

def fix_results(parameter_1 =True, *some_kind_of_iterable):

if parameter_1:
df = pd.DataFrame(i for i in some_kind_of_iterable if i['count'] == 1)
else:
df = pd.DataFrame(i for i in some_kind_of_iterable)

And the some piece of code for df.

return df

当我运行它时:

fix_results(*some_results),

效果很好。但是当我尝试像

一样运行它时
fix_results(parameter_1=False,*some_results)

我收到此错误:

TypeError: fix_results() got multiple values for keyword argument 'parameter_1'

我做错了什么?

最佳答案

在 Python 2 中,使用 *args 参数正确调用此函数的唯一方法是将 parameter_1 作为位置参数传递,即不使用 parameter_1= 位:

fix_results(False, *some_results)

在 Python 3 中,您可以修改函数定义并将 parameter_1 转换为仅关键字参数:

def fix_results(*some_kind_of_iterable, parameter_1=True):
....

这个函数可以被调用

fix_results(parameter_1=False, *some_results)

fix_results(*some_results, parameter_1=False)

请注意,您声称“工作正常”的调用 fix_results(*some_results) 可能不会执行您期望的操作:可迭代的第一个元素将用作parameter_1

Python 2 中的另一种选择是将可迭代对象作为单个参数传递,而不是使用 *args 语法:

def fix_results(some_kind_of_iterable, parameter_1=True):
....

现在可以像这样调用该函数:

fix_results(some_results, parameter_1=False)

关于python - 在 python 函数中使用 *args 和初始化参数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482792/

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