gpt4 book ai didi

带有其他指定关键字参数的 python 函数 *args 和 **kwargs

转载 作者:太空狗 更新时间:2023-10-29 17:23:54 25 4
gpt4 key购买 nike

我有一个 Python 类,它的方法应该以这种方式接受参数和关键字参数

class plot:
def __init__(self, x, y):
self.x = x
self.y = y

def set_axis(self, *args, xlabel="x", ylabel="y", **kwargs):
for arg in args:
<do something>
for key in kwargs:
<do somethng else>

调用时:

plt = plot(x, y)
plt.set_axis("test1", "test2", xlabel="new_x", my_kwarg="test3")

我收到错误:TypeError: set_axis() got multiple values for keyword argument 'xlabel'

无论如何,如果我将我的方法设置为

class plot:
def __init__(self, x, y):
self.x = x
self.y = y

def set_axis(self, xlabel="x", ylabel="y", *args, **kwargs):
for arg in args:
<do something>
for key in kwargs:
<do somethng else>

并调用:

plt = plot(x, y)
plt.set_axis(xlabel="new_x", "test1", "test2", my_kwarg="test3")

如我所料,我得到了 SyntaxError: non-keyword arg after keyword arg。第一种情况有什么问题?我应该如何告诉我的方法接受任何用户参数和关键字参数,而不是默认参数? (希望我的问题足够清楚)

最佳答案

在 Python 3 中这是可行的:

Python 3.2.3 (default, Oct 19 2012, 19:53:16) 
>>> def set_axis(self, *args, xlabel="x", ylabel="y", **kwargs):
... print(args, xlabel, ylabel, kwargs)
...
>>> set_axis(None, "test1", "test2", xlabel="new_x", my_kwarg="test3")
('test1', 'test2') new_x y {'my_kwarg': 'test3'}
>>>

关于带有其他指定关键字参数的 python 函数 *args 和 **kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14003939/

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