本篇文章参考:黑马程序员一、什么是异常当检测到一个错误时,Python解释器无法继续执行程序,反而会抛出错误提示,这就是我们所称的“异常”,也就是常说的“bug”。那bug这个单词是怎么诞生的呢?"...当程序遇到无法处理的错误时,就会抛出异常,并在控制台输出相关的错误信息,包括异常类型、错误描述以及错误发生的位置。二、捕获异常为什么要捕获异常呢?...# 捕获多个异常try: 1/0except (NameError,ZeroDivisionError) as e: print("出现变量未定义或者除以0的异常") print(e)...print(name) 1/0except (NameError,ZeroDivisionError) as e: print("出现变量未定义或者除以0的异常") print...(e)输出结果:出现变量未定义或者除以0的异常name 'name' is not defined仔细观察这个输出结果,为什么会输出name 'name' is not defined但是不会输出division
参考链接: Python中的用户定义异常 导入模块错误 输入: import a 运行后结果为:importerror 指的是错误类型,引入错误 ,错误说明:提示没有命名的模块 索引错误 输入:...字典键值错误 输入: dict1={'name':'beij','age':20,'gender':'男'} print dict1['name1'] 运行结果:KeyError 键值错误,字典中不存在的键... 注意:有错误发生时,程序直接断掉了,后面代码都不执行了,都无效了 命名错误 NameError print a 运行后,提示名称未被定义 IndentationError:缩进错误 输入...,我们要学会看异常,根据异常来处理问题 都是要固定的错误格式的 调试时我们关心 什么类型的错误? ...记录并显示堆栈信息 为什么出错? 显示原因
NameError是指某个变量在python中未进行定义错误,所以代码无法识别出这个变量是什么,就好比每个人都需要有户口,身份证一样,否则别人不能够明确认识到你。...,严格意义来说这也属于语法错误的一种,但是比较常见,pyhon不同于java,语法格式需要缩进空格,缩进空格字符不对应则会报这个错误。...,经常可能出现我们在读取列表某个下标的元素的时候发生的一些错误。...dict1 = {'a':1,'b':2} print(dict1['c']) --------------------------------------------- >>> print(dict1...,调用对象不存在的一个方法属性时将报这个错误。
什么是异常 当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”, 也就是我们常说的BUG bug单词的诞生 早期计算机采用大量继电器工作,马克二型计算机就是这样的...f = open('linux.txt', 'r') 异常的捕获方法 为什么要捕获异常 世界上没有完美的程序,任何程序在运行的过程中,都有可能出现:异常,也就是出现bug 导致程序无法完美运行下去。...as e: print('name变量名称未定义错误') ① 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。...捕获多个异常 try: print(1/0) except (NameError, ZeroDivisionError): print('ZeroDivision错误...')..., 异常 会传递到函数func02, 当func02也没有捕获处理这个异常的时候 main函数会捕获这个异常, 这就是异常的传递性.
顾名思义,NameError 错误表明 Python 解释器在代码中遇到了一个它不认识的名称。 这通常发生在变量、函数或模块在被使用之前没有被正确定义或导入。...二、错误代码示例 错误一:拼写错误 # 错误示例1:拼写错误 result = unknown_variable # NameError,因为unknown_variable未定义 错误二:作用域问题...def my_function(): print(my_var) # NameError,因为my_var在函数外部未定义 错误三:导入错误 import math print(Math.PI...) # NameError,因为Math应为math 错误四:变量未定义 def calculate_sum(a, b): return a + b + c # NameError,因为c未定义...return value # NameError,因为value可能未定义 三、正确代码示例 方案一:解决作用域问题 # 正确示例 def my_function(): my_var = 5
= {"one":"1","two":"2","three":"3"} >>> dict1['one'] '1' >>> dict1['six'] Traceback (most recent call...last): File "", line 1, in KeyError: 'six' >>> nameerror尝试访问一个不存在的变量 >>> name = {}...: name 'mett' is not defined OSerror操作系统异常 syntaxerror语法错误 >> print"wocao,meiyou xioakuohao" File "...ZeroDivisionError: division by zero try-except语句 try-except语法 try: 检测范围 except exception[as reason]: 出现异常...showmaxdactor(num) ... >>> showmaxdactor(2) 2是个素数 请输入一个数2 这个很好理解,要求用户输入的数的最大的约数。
SyntaxError 系统错误最常见的原因就是编码的缩进错误、或者缺少了分号、冒号等分隔符。例如下面的例子。...这个异常通常是由于使用了未定义的名称而引起的。...is not defined ZeroDivisionError 这个异常是整数除零错误,一般在数学计算的时候才会出现。...input>", line 1, in ZeroDivisionError: division by zero ValueError ValueError异常一般在类型转换失败的时候出现...如果有异常,这个字句就不会被执行。第二个子句是finally子句,不管有没有异常该语句都会执行。利用这两个语句,我们就可以优雅的关闭资源了。
在Python中,可以通过异常处理机制来处理代码执行过程中出现的异常,避免程序崩溃或出现错误结果。...Python中提供了许多内置的异常类型,常见的异常类型包括:NameError当尝试访问一个未定义的变量时,会抛出NameError异常。...a = b + 1 # 抛出NameError异常,b未定义TypeError当函数或操作应用于错误类型的对象时,会抛出TypeError异常。...a = 1 / 0 # 抛出ZeroDivisionError异常,除数为0IndexError当尝试访问超出列表或元组索引范围的值时,会抛出IndexError异常。...a = [1, 2, 3]b = a[3] # 抛出IndexError异常,超出了列表索引范围KeyError当尝试访问不存在的字典键时,会抛出KeyError异常。
为什么说字典是唯一一个映射类型呢?看图。 ? 映射类型区别与序列类型,序列类型以数组的形式储存,通过索引的方式来获取相应位置的值,一般索引值与对应位置数据无关系。...3, 'I': 65, 'V': 83, 'Y': 343} 这里天钧遇到了故障,进行排查发现我定义过dict TypeError:'dict' object is not callable 出现这种错误有两种可能...class 'dict'> >>> del dict Traceback (most recent call last): File "", line 1, in NameError...File "", line 1, in KeyError: 32 get() 当查询一个项 >>> dict3.get(32) >>> 在不在字典里,如果不在get会返回一个...= "猫") >>> name {'米老鼠': '老鼠', '小黑': '猫', '小白': '狗', '天钧': '男人'} >>> 集合 set大家看见如果认真看了有事type返回的是set,这个就是集合
字典的语法和前面其他学过的数组都不同,大括号里面的数据是以键值对的形式出现的,不支持下标查找,支持key查找。 一、字典 - 新增数据: 写法: 字典序列[key] = 值 注意: 1....如果key存在则修改这个key对应的值,如果key不存在则新增此键值对。 2....字典为可变类型 代码示例: dict1 = {'name': 'Rose', 'age': 30, 'sex': '女'} # key存在 dict1['name'] = 'Lisa' print(dict1...(dict1) print(dict1) # 结果报错 NameError: name 'dict1' is not defined # del删除字典中指定键值对 del dict1['age']...: 如果key存在则修改这个key对应的值,如果key不存在则新增此键值对。
可以 # 方法一:在except后边添加多个异常名称 # try: # # NameError: name 'a' is not defined # # 如果先出现NameError...) # print(1 / 0) # # 如果想要捕获指定异常,就在except 后边添加异常的类型 # # 在异常类型之后添加上个as 变量名 这时候 变量就是异常对象,打印该对象就可以出现错误信息...: # print('出现NameError异常!!'...as error: print('出现NameError异常!!'...# from os import listdir as ls # print(ls()) # NameError: name 'listdir' is not defined # 给功能名称起别名后,无法使用原名称只能使用新的功能名称
语法错误在执行的时候就会报错,同时控制端会告诉你错误所在的行; 但即便python程序语法是正确的,在运行它的时候,也有可能发生错误。...比如请求的接口返回空,没有做判断直接拿这个变量进行下一步逻辑处理,就会出现代码异常。...ZeroDivisionError: division by zero >>> 4 + spam*3 # spam 未定义,触发异常 Traceback (most recent...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError
Python-Shell反馈常见错误 初学者通常会使用Python-Shell来学习Python基础及语法知识,在使用Python-Shell 时会遇到这样或者那样的错误,有的是语法错误,有的是键入的函数或者变量名字拼写错误...,现就初学者常出现的错误做一个总结。...变量、函数未定义 下面我们简单总结一下在使用Python-Shell时常见的错误提示。...: name ’le’ is not defined,是说’le’变量未定义,的确如此,因为之前我们赋值的是len变量等于12,le没有赋值就没有被创建故报错没有被定义。...比如在print函数前敲了一个(多个)空格或者按了TAB 键,都会导致在Python-Shell里运行语句时出现错误。
[27]: 1 In [28]: b Out[28]: 2 In [29]: c Out[29]: 3 (4)元组方法 t.index() 返回值的第一个索引,也就是说如果()内给的value值在这个元组中出现多次...t.count() 返回值的出现次数,()内给的值出现多次的话,统计次数。...82]: list3 Out[82]: ['a', 1, 2] (2)列表操作 list方法 含义 list.append(value) 将对象追加到结尾 list.count(value) 返回值的出现次数...如果列表为空或索引超出范围,则引发索引器错误。...del list3 In [92]: list3 --------------------------------------------------------------------------- NameError
这就很容易理解为什么在函数内部声明的局部变量会覆盖掉在模块中声明的同名变量。...如果找不到变量 runoob,它将放弃查找并引发一个 NameError 异常: NameError: name 'runoob' is not defined。 ...在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。...当对b进行赋值时,一个新的名称将会被创建,这个新的名称处于inner_func函数局部名称空间中。对a进行赋值时也会在局部名称空间中创建一个新的名称。 ...,因为 test 函数中的 a 使用的是局部,未定义,无法修改。
age']) # 获取年龄 # print(info['sex']) # 获取不存在的key,会发生异常 print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常...name': 'monitor', 'id': 100} Traceback (most recent call last): File "", line 1, in NameError...,就提示用户名称已存在,添加失败;如果这个姓名在列表里不存在,提示让用户输入年龄,并将用户输入的姓名和年龄添加到这个列表里。...有一个字典dict1 = {“a”:100,“b”:200,“c”:300},使用代码,将字典的key和value互换,变成 {100:“a”,200:“b”,300:“c”}....参考答案:(使用字典推导式) dict1 = {"a": 100, "b": 200, "c": 300} dict2 = {v: k for k, v in dict1.items()} print
为什么要有变量 有个刚学 Python 第一天的同学问: 不懂为啥要用变量,需要什么值直接写就好了,干嘛还多此一举?...一个真正的程序里面会有各种数据,这些数据不可能都是固定不变的,会需要进行计算和处理。为了更方便地使用这些数据,我们要给这些数据取名字。...然后你就可以使用这个变量。如: print(a) 或者用它去创建另一个变量。如: b = a + 2 既然都说了是“变”量,那自然也可以给变量重新赋值。...如果直接使用一个没有赋值过的变量名,会引发一个名称未定义的 NameError 错误,导致程序中断。...结果可能会让你大跌眼镜。 因为就我的经验,很多初学者都会踩到的一个坑是: 拼错变量名! 比如前面赋值了个变量叫 name,结果过了几行,又写成了 mame。
{} >>> del dict2 >>> dict2 Traceback (most recent call last): File "", line 1, in NameError...cmp(dict1,dict2) -1 >>> dict1['port'] = 80 >>> cmp(dict1,dict2) 0 >>> dict1['port'] = 'tcp...dict2 key name has value earth dict2 key port has value 80 字典类型方法 方法名称操作 dict.clear()删除字典里所有元素 dict.copy...dict,keys()返回一个包含字典中键的列表 dict.iter() dict.pop(key[,default])如果字典中key键存在,删除并返回dict[key],不存在,且灭有给出没认值,会引发...t中的元素修改s,即s包含s或t的成员 .... s.add(obj)在集合s中添加对象obj s.remove(obj)从集合s中删除对象obj,如果obj不是集合s中的元素,将引发keyError错误
这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。...如果 try 嵌套,那么如果里面的 try 没有捕获到这个异常,那么外面的 try 会接收到这个异常,然后进行处理。...raise 唯一的一个参数指定了要被抛出的异常的实例,如果什么参数都不给,那么会默认抛出当前异常。...异常名 解释 AttributeError 试图访问一个对象没有的属性 IOError 输入/输出异常 ImportError 无法引入模块或包;多是路径问题或名称错误 IndentationError...缩进错误 IndexError 下标索引错误 KeyError 试图访问不存在的键 KeyboardInterrupt Ctrl+C 被按下,键盘终止输入 NameError 使用未定义的变量 SyntaxError
异常是 Python 对象,表示一个错误。当 Python 脚本发生异常时我们需要捕获处理它,否则程序会终止执行 造成异常的原因:1. 程序编写有问题造成,产生 Bug ,必须处理 2....无法预料的异常:磁盘已满、断网等 Python 的错误其实也是类 class,错误类型种类很多。而且所有的错误类型都继承自 BaseException 为什么要处理异常?...2 try: print(4 / 0) except: # 使用 except 捕获常规错误,而不使用任何的错误类型 print("程序出现了错误") # 使用 except...带着多种异常,匹配到其中一种即报错 try: print(5 / 0) except(NameError, ZeroDivisionError): print("出现了 ZeroDivisionError...或 NameError") 特殊情况3 """ 特殊: 1.错误其实是 class(类),所有的错误都继承自 BaseException,所以在 捕获的时候,它不仅捕获了该类型的错误,还把子类一网打尽
领取专属 10元无门槛券
手把手带您无忧上云