函数传参takes 2 positional arguments but 3 was given

请教一下,这个程序运行的时候提示: build_profile() takes 2 positional arguments but 3 was given。但是,build_profile里面我感觉传了3个参数呀。刚学,请赐教。

#编写函数创建用户简介:接受用户信息,但不确定什么信息,做输入信息的合成。
def build_profile(first,last,**user_info):
    profile={}
    profile['first_name']=first
    profile['last_name']=last
    for key,value in user_info.items():
        profile[key]=value
    return profile

first_name=input("Enter first name:")
last_name=input("Enter last name:")
user_profiles={}
while True:
    user_info_key=input("请输入用户信息名称:")
    user_info_value=input("请输入用户信息值:")
    user_profiles[user_info_key]=user_info_value
    if user_info_key=="quit" or user_info_value=="quit":
        break
    user_profiles[user_info_key]=user_info_value

user_profiles=build_profile(first_name,last_name,user_profiles)
print(user_profiles)

user_profiles=build_profile(first_name,last_name,user_profiles) 改成

user_profiles=build_profile(first_name,last_name,user_profiles=user_profiles)

 

**user_info 这样的参数需要以关键字参数的方式传入

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

将:user_profiles=build_profile(first_name,last_name,user_profiles)

改成:user_profiles=build_profile(first_name, last_name, **user_profiles)

user_info是关键字参数,要么用**解包,要么以key=value的形式分开写入:

user_profiles=build_profile(first_name, last_name, user_info_key=user_info_key, user_info_value=user_info_value, )