Python 3 对字典值求和结果不符合预期,是什么原因?
问题原因与解决方案
你遇到的问题是Python内置求和函数sum被意外覆盖导致的。
你使用的Python 3.9版本属于Python 3系列,dict.values()返回的dict_values视图本身是合法的可迭代对象,完全可以作为内置sum函数的入参,正常运行你给出的两行测试代码,一定会返回预期的结果6。
常见触发场景
- 你此前在当前Spyder的运行环境中,使用
sum作为变量名做过赋值,例如运行过sum = my_dict.values()这类代码 - 你此前自定义了同名的
sum函数,例如写过def sum(iterable): return iterable这类直接返回入参的函数
验证方法
你可以在出问题的Spyder控制台运行以下代码确认覆盖问题:print(sum)
如果输出结果不是<built-in function sum>,即可确认sum已被自定义内容覆盖。
解决方案
- 重启Spyder的IPython内核,清空所有已加载的变量和自定义函数,再重新运行你的测试代码,即可得到正确的求和结果
- 后续编码注意不要使用
sum、list、dict这类Python内置关键字/函数名作为自定义变量名,避免出现功能覆盖的异常问题
内容的提问来源于stack exchange,提问作者smittymx88
相关产品推荐
相关产品推荐

