我是python新手,最近刚刚学习了*args和**kwargs的基本知识
当我尝试使用自己的代码进行练习时,出现了一个意外关键字错误,如下所示:
def student_info2(args, kwargs):
print(args)
print(kwargs)
courses = ["Maths", "Statistics"]
module = "Data Science"
students = {"name": "John Price", "age": 27}
welcome_words = {"welcome": "hello and welcome"}
student_info2(*courses, *module, **students, **welcome_words)
TypeError Traceback (most recent call last)
<ipython-input-61-8bc2f643a250> in <module>
7 students = {"name":"John Price","age":27}
8 welcome_words = {"welcome":"hello and welcome"}
----> 9 student_info2(*courses,*module, **students, **welcome_words)
TypeError: student_info2() got an unexpected keyword argument 'name'
我真的不知道为什么会这样,如果有人能帮我解决这个问题,我真的很感激
你在这里做错的是
函数student_info2在代码中只能接受2个位置参数,因此应该像这样调用函数
学生信息2(课程、模块)
如果您希望一次性调用所有4个函数,那么您的函数声明应该如下所示
学生信息2(arg1、arg2、arg3、arg4)或学生信息2(*args)
你不需要*s,你应该把它们放在你函数的声明中。另外,如果你给一个函数4个参数,你应该得到4个
如果您希望接收X数量的参数,您应该这样做
其中
args
将是参数列表**kwargs
将是字典而不是列表。还可以混合使用法线参数和args/kwargs查看此网站了解更多说明:https://www.geeksforgeeks.org/args-kwargs-python/
这个函数可以很好地工作,但它只限于两个参数,即
args
和kwargs
。此时args
和kwargs
仅仅是两个变量名,它们不会按您的意愿运行,因为您没有将它们与*args
和**kwargs
等解包运算符一起使用。*args
和**kwargs
用于为函数提供不同数量的输入参数。args
,kwargs
只是一个变量名,可以更改为您需要的任何名称注意:
*args
接受iterables或位置参数和**kwargs
接受关键字或命名参数李>**kwargs
之前李>相关问题 更多 >
编程相关推荐