(1)不可哈希错误

演示代码:

>>> x = {[1], [2]}
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    x = {[1], [2]}
TypeError: unhashable type: 'list'
>>> x = {[1]:1}
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    x = {[1]:1}
TypeError: unhashable type: 'list'
>>> x = {{'a':97, 'b':98}}
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    x = {{'a':97, 'b':98}}
TypeError: unhashable type: 'dict'

错误原因分析与解决方案:

在Python中,可变的数据不可哈希。一般来说我们并不关心一个数据的哈希值,只关心是否可哈希。集合的元素和字典的“键”要求必须为可哈希数据,例如整数、实数、复数、字符串、元组。如果不小心把列表、字典、集合或类似可变(不可哈希)的数据作为字典的“键”或者集合的元素,会抛出“不可哈希”错误,这种用法要坚决避免。

(2)数据数量不一致错误

在调用函数时,要求实参数量和形参必须数量一致,即使函数有默认值参数,这个要求也是必须满足的,只是有些形参有默认值,所以表面看起来实参数量和形参数量不是完全一样。

>>> def func(a, b, c=5): return a+b+c

>>> func(3)
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    func(3)
TypeError: func() missing 1 required positional argument: 'b'
>>> func(3, 5, 7, 9)
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    func(3, 5, 7, 9)
TypeError: func() takes from 2 to 3 positional arguments but 4 were given

一个比较类似的是序列解包的用法。例如,下面的代码没有任何问题:

>>> x = 3, 5, 7
>>> x
(3, 5, 7)

因为第一个语句中,虽然等号右侧并没有加什么括号,但实际上是作为元组处理的,也就是,把等号右侧的元组(3, 5, 7)赋值给左侧的变量x。

但是,下面的语句是错误:

>>> x, y = 3, 5, 7
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    x, y = 3, 5, 7
ValueError: too many values to unpack (expected 2)

这是因为等号左侧有两个变量,右侧必须有两个值才行,但是现在给了3个,Python解释器就懵了,不知道该怎么办,只好抛出异常。

然而,下面的代码是可以正常执行的:

>>> x, *y = 3, 5, 7
>>> x
3
>>> y
[5, 7]
>>> x, *y = 3, 5, 7, 9, 11, 13
>>> x
3
>>> y
[5, 7, 9, 11, 13]

这是因为等号左侧的变量y前面有个星号*,这有点类似于函数调用时的可变长度参数,带星号*的变量或形参有“收集剩余位置实参或数值”的作用

-----------相关阅读---------

Python编程常见出错信息及原因分析(2)

Python编程常见出错信息及原因分析(1)

-------------请假-------------

明天(2017年9月21日)上午在学校上课,傍晚飞机去北京讲3天Python编程基础与数据分析、科学计算可视化,周一凌晨0:30左右回家,早上7:50学校上课讲Python字典应用案例。所以这几天暂时不更新了。大家可以进入公众号,然后使用菜单“最新资源”==>“历史文章分类速查表”按版块查看和阅读感兴趣的Python技术文章。

----------喜大普奔----------

1、继《Python程序设计基础》《Python程序设计(第2版)》《Python可以这样学》系列图书之后,董付国老师新书《Python程序设计开发宝典》已于2017年8月1日在清华大学出版社出版。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:

https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3

2、10月13日——15日,重庆,全国高校程序设计系列课程高级研究班,详见:全国高校程序设计系列课程高级研修班(Python)通知

Python编程常见出错信息及原因分析(3)相关推荐

  1. Python编程常见出错信息及原因分析(5):安装扩展库

    本文主要介绍使用pip安装扩展库时常见的错误. (1)pip命令应该在命令提示符环境中执行,如果在Python开发环境中执行,则会出现下面的错误: (2)不存在要安装的扩展库,此时应仔细检查是否有拼写 ...

  2. Python编程常见出错信息及原因分析(4)

    (1)删除列表元素引起的下标变化错误 演示代码: x = list(range(10)) for i in range(len(x)):     if x[i]%2 == 0:         del ...

  3. Python编程常见出错信息及原因分析(2)

    (1)缩进错误 演示代码: >>> if 5>3: print('5>3') SyntaxError: expected an indented block >&g ...

  4. Python编程常见出错信息及原因分析(1)

    1.被0除错误 演示代码: >>> 2 / 0 Traceback (most recent call last):   File "<pyshell#0>&q ...

  5. Python编程常见错误表现形式与原因分析

    推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷,7月第3次印刷 京东购买链接:https://i ...

  6. Java常见异常类型及原因分析

    Java常见异常类型及原因分析 0x1 NullPointerException异常 顾名思义,NullPointerException 是空指针异常.但是在 Java 中没有指针,怎么会有 空指针异 ...

  7. 网页在PC 上运行正常,在IPad上运行出错的故障原因分析及应对措施

    网页在PC 上运行正常,在IPad上运行出错的故障原因分析及应对措施 最近在测试一个管理系统网站时,发现该网站在PC上运行一切正常,但在Ipad 上运行时,提示网页出现问题,需要重新提交表格,复新提交 ...

  8. 动易2005、2006版常见错误号的原因分析及解决方法

    错 误 号:432 错误描述:File name or class name not found during Automation operation 错误来源:PE_Common6 原因分析:服务 ...

  9. [转] 常见WinCE启动失败原因分析

    *********************************************** 一般情况下,为设计中的IC开发SW方案,难免会碰到Bootloader/EBoot/OS启动失败的情况, ...

最新文章

  1. Microbiome:人类肠道和病原菌的可移动抗性组驱动环境中抗生素抗性增长
  2. Linux Shell常用技巧(三)
  3. 针对新手的Java EE7和Maven项目–第5部分–使用Arquillian / Wildfly 8进行单元测试
  4. python3怎么创建文件_Python3.5 创建文件的简单实例
  5. Project Euler 97 :Large non-Mersenne prime 非梅森大素数
  6. azure云数据库_Azure SQL数据库中的漏洞评估和高级威胁防护
  7. 单例模式和内部类的初步认识
  8. 一个学习PCI Express的 不错去处
  9. 企业生产过程能力分析(CPK)
  10. 北理慕课——Python文件和数据格式化
  11. 2014大众点评Hackathon参赛感想
  12. 天平游码读数例题_使用天平游码时的读数方法-word
  13. 解决在高分辨率下运行Photoshop CS6,程序界面字体过小的问题
  14. linux mtr 普通用户执行,Linux网站打开慢之mtr工具探测分析
  15. 硬件设计——外围电路(电源电路)
  16. 别耍小聪明—leo看赢在中国第三季(1)
  17. 基于ssm的考勤设备和考勤记录管理系统------(二)
  18. Eclipse代码补全,修改 空格键 = 键不上屏
  19. CVE-2016-7124漏洞复现
  20. racte margin 居中 失效_轧机轴承外套断裂失效分析

热门文章

  1. allergro音乐术语什么意思_这些关于刀具钢材的专业术语,你都知道是什么意思吗?...
  2. 全国二级c语言考试题型,2016年电大 -全国计算机二级c语言考试题型及考试重点.doc...
  3. python串口通信_python的串口通信(pyserial)
  4. php如何递归算法,详细的介绍一下PHP递归算法_PHP教程
  5. 管状合金电阻和片状合金电阻的区别_合金采样电阻的特点及作用
  6. 事务超时时间无效_Java面试题:Spring事务面试考点的集合整理。建议收藏阅读...
  7. 计算机辅助管理与制造,计算机辅助设计与制造,对产品的设备进行管理,完成产品加工制造...
  8. maven构建Hibernate项目
  9. 计算机调试致sa登录失败,无法打开登录 'xxxx' 中请求的数据库。登录失败。用户 'sa' 登录失败。解决思路...
  10. 电脑摄像头一维条形码matlab识别