栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

PyCharm报错 TypeError: add

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PyCharm报错 TypeError: add

前言:

下文描述的出错情况一般不太会出现,我遇到是因为在调整框架,在大量的复制粘贴中函数的调用和申明没有及时同步修改

出错源码+控制台输出的错误提示
# add_integer函数是为了描述这种出错情况写的一个简易示例
def add_integer(a, b, params):
    if params is None:
        params = {}
    if not isinstance(params, dict):
        raise ValueError("parameter 'params' must be dict.".format(type(params)))
    c = params.get("c", None)
    result = a + b
    if c is not None:
        result = result + c
    print(result)


data = {
    "c": 10
}
add_integer(3, 3, **data)

>>>C:UsersAdministratorAppDataLocalProgramsPythonPython38python.exe C:/Users/Administrator/PycharmProjects/pythonProject2/test3.py
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/pythonProject2/test3.py", line 16, in 
    add_integer(3, 3, **data)
TypeError: add_integer() got an unexpected keyword argument 'c'

Process finished with exit code 1
修改方案一:

将add_integer声明的参数列表中的params变为可变参**params

修改方案二:

取消调用add_integers时参数data前的双星号

修改方案三:

在data外再封一层字典(个人感觉可以但没必要)

def add_integer(a, b, params):
    if params is None:
        params = {}
    if not isinstance(params, dict):
        raise ValueError("parameter 'params' must be dict.".format(type(params)))
    c = params.get("c", None)
    result = a + b
    if c is not None:
        result = result + c
    print(result)


data = {
    "c": 10
}
kwargs = {
    "params": data
}
add_integer(3, 3, **kwargs)


>>>C:UsersAdministratorAppDataLocalProgramsPythonPython38python.exe C:/Users/Administrator/PycharmProjects/pythonProject2/test3.py
16

Process finished with exit code 0

主要是理解在函数调用时**起解包字典对象中的元素,并将其作为关键字参数传入函数中的作用,更细致的描述可见:

(43条消息) python中的*和**_阿莫12138的博客-CSDN博客

内容如有错误,敬请指正!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号