1.错误 (1)语法错误 语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译。这些错误必须在程序执行前纠正。...(2)逻辑错误 逻辑错误可能是由于不完整或是不合法的输入所致。...语句,实例如下。...: pass 也可以有多个expect语句,无论是CTRL+C或者CTRL+D还是直接回车或者输入不是整数的都会有相关提示,示例1是给用户看的,会输出相应的提示信息。...(自己定义)是保存错误原因 print "Error: you must input a number",reason except (KeyboardInterrupt, EOFError
if __name__ == '__main__': print_hello() 例子 例如,我们创建了一个utils.py,定义了一个简单的功能: def print_hello():...和KeyboardInterrupt,导致无法使用Ctrl+C中断程序,并且会隐藏潜在的问题。...,即使用Ctrl+C也无法中断。 修改方法很简单,将裸except 改为except Exception,这样就不会捕获KeyboardInterrupt,从而可以用Ctrl+C中断程序。...因为set/dict的查找时间是O(1),list的查找时间是O(N)。...给可变类型参数提供默认值 结论 默认参数值仅在模块加载时的函数定义期间计算一次。这可能会导致动态/可变值(如 {}、[] 或 datetime.now())出现奇怪的行为。
python2.x中multiprocessing提供的基于函数进程池,join后陷入内核态,按下ctrl+c不能停止所有的进程并退出。即必须ctrl+z后找到残留的子进程,把它们干掉。...先看一段ctrl+c无效的代码: #!...线程肯定是可行的,进程应该还需要单独共享变量,非常不推荐的方式 常见的错误方案 这个必须要提一下,我发现segmentfault上都有人被误导了 理论上,在Pool初始化时传递一个initializer...建议 先确认是否真的需要用到多进程,如果是IO多的程序建议用多线程或协程,计算特别多则用多进程。...经过亲自验证,ProcessPoolExecutor是没有^c的问题的,要用多进程建议使用它 参考 http://bryceboe.com/2010/08/26/python-multiprocessing-and-keyboardinterrupt
异常的概念 在程序运行过程中,由于编码不规范或其他客观原因,可能会导致程序无法继续运行,此时就会出现异常。如果不对异常进行处理,程序可能会直接中断。为了保证程序的健壮性,引入了异常处理的概念。...: print('没有捕获到异常,真高兴') try…finally语句 try...finally...语句用于如下情况: 如果在程序中有一段代码必须执行,无论是否发生异常,都需要执行,就可以使用...例如:文件关闭、释放锁、将数据库连接返回给连接池等。...,会被捕获 # 例如按下了Ctrl+C pass finally: f.close() print('关闭文件') except:...print('没有这个文件') 说明: 我们可以观察到,当触发KeyboardInterrupt异常时,程序会退出。
什么是异常? 顾名思义,异常就是程序因为某种原因无法正常工作了,比如缩进错误、缺少软件包、环境错误、连接超时等等都会引发异常。...KeyboardInterrupt 键盘接受到Ctrl+C Exception 通用的异常类型;一般会捕捉所有异常 还有一些异常类型,可以通过dir查看: >>> import exceptions...NameError: name 'a' is not defined 注意:except也可以不指定异常类型,那么会忽略所有的异常类,这样做有风险的,它同样会捕捉Ctrl+C、sys.exit等的操作。...需要注意的是:它们语句的顺序必须是try...except...else...finally,否则语法错误!里面else和finally是可选的。...Traceback (most recent call last): File "", line 1, in NameError: test except... raise参数必须是一个异常的实例或
异常包含三个部分: 1.traceback异常信息追踪 2.异常类型 3.异常的信息 错误分为两大类: 1.语法上的错误 2.逻辑上的错误 ---- 为什么要异常处理?...避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性 语法错误: 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if...#语法错误示范二 def test: pass #语法错误示范三 class Foo pass #语法错误示范四 print(haha 常见的逻辑错误导致的异常 #TypeError:...,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError..., 导致你以为正在访问它 ValueError 传入一个调用者不期望的值,即使值的类型是正确的 更多异常 ArithmeticError AssertionError AttributeError BaseException
语法错误 语法错误也称为解析错误,是最常遇到的一种错误 In [1]: while True print('Hello!')...如果异常没有处理或捕捉,程序就会用traceback终止程序的执行,如果是在多线程程序中,则会终止当前线程的执行。...# 由键盘中断(通常为Ctrl+C) 生成 +-- GeneratorExit # 由生成器.close()方法引发 +-- Exception # 所有非退出异常的基类 +--...,但是又必须执行的语句,则放在else语句中。...即使try部分中有return语句,也会在退出try块之前执行finally语句,并且返回值是finally中的return 如果有异常没有被处理,则在执行完成finally语句之后会会抛出没有被处理的异常
一丶异常和错误 程序中有两种错误 1.语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) ? ?...输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(的子类) ;代码没有正确对齐 IndexError...下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyboardInterrupt Ctrl+C被按下 KeyError 试图访问字典里不存在的键 NameError 使用一个还未被赋予对象的变量...,基本上是由于另有一个同名的全局变量,导致你以为正在访问它 ValueError 传入一个调用者不期望的值,即使值的类型是正确的 ?...所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性 如何进行异常处理?
好了,问题解决 我怀疑它是从setup.py那在import 不知道会不会影响后续的内容 模型运行后, 到这就不往下走了,ctrl+c后发现了报错,否则一直不报错。...但是实际上文件本应该正常访问到的,但是并没有,发现 果然,是从安装的包里面在import,下面尝试把这个删除一下试试 尝试安装,奇怪的是,0.5,0.4版本都安装不上 将原来的安装的版本都卸载掉后发现都是从...python setup.py那里面安装了包,然后import的是那里面的: 查了一下,见我的csdn博客,《python import》,将那两行标红的代码放到文件中,然后按照合适的目录结构位置跑代码就可以啦...继续跑代码后发现又待在那不动弹了,如果我按ctrl+c就会出现KeyboardInterrupt,虽然这个错误是因为我按了ctrl+c才导致的,但是不按就一直停在那,好像程序在运行,但确实也没看出来在运行个啥子
KeyError 字典中查找一个不存在的关键字 KeyboardInterrupt 用户输入中断键(Ctrl+c) MemoryError 内存溢出(可通过删除对象释放内存) NameError 尝试访问一个不存在的变量...NotImplementedError 尚未实现的方法 OSError 操作系统产生的异常(例如打开一个不存在的文件) OverflowError 数值运算超出最大限制 ReferenceError...的语法错误 IndentationError 缩进错误 TabError Tab和空格混合使用 SystemError Python编译器系统错误 SystemExit Python编译器进程被关闭 TypeError...Unicode编码时的错误(UnicodeError的子类) UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类) UnicodeTranslateError...Unicode转换时的错误(UnicodeError的子类) ValueError 传入无效的参数 ZeroDivisionError 除数为零 以下是 Python 内置异常类的层次结构:
try-except语句用于检测和处理异常,举个例子来说明这一切是如何操作的: f = open("我为什么是一个文档.txt") print(f.read()) f.close() 以上代码在“我为什么是一个文档...: '我为什么是一个文档.txt' 显然这样的用户体验很糟糕,因此可以这样修改: try: f = open("我为什么是一个文档.txt") print(f.read())...但是从程序员的角度来看,导致OSError异常的原因有很多(例如FileExistsError、FileNotFoundError等等),所以可能会更在意错误的具体内容,这里可以使用as把具体的错误信息给打印出来...print("文件打开的过程出错啦,错误的原因是:" + str(reason)) except TypeError as reason: print("文件打开的过程出错啦,错误的原因是:...不过通常不建议这么做,因为它会隐藏所有程序员未想到并且未做好处理准备的错误,例如当用户输入ctrl+C试图终止程序,却被解释为KeyboardInterrupt异常。
例如,当你尝试读取一个文件但它并不存在时,会发生什么?或者,当程序还在运行的时候,你删除了它会怎么样?这类情况会通过引发异常来处理。 相似地,如果你的程序有一些无效的语句会发生什么?...line 1, in NameError: name 'Print' is not defined >>> print("Hello World") Hello World 对这个错误的处理是...[ctrl-c] 来产生 KeyboardInterrupt 错误)。...它有两个字段, length 是给出输入的长度, atleast 是程序所期望的最小长度。 在 except 子句中,我们注意到错误的类通过 as 把错误或异常对应的对象储存到了命名的变量中。...请注意, Python 将变量中的 0 、 None 、空数组和空集合都视为 False 。这就是为什么我们可以在上面的代码中使用 if f: 。
AttributeError:试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x IOError:输入/输出异常;基本上就是无法打开文件 ImputError:无法引入模块或包;基本上是路径问题或者名称错误...IndentationError:语法错误(的子类),代码没有正确对齐(同一个代码快中) IndexError:下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError:试图访问字典不存在的键...KeyboardInterrupt:Ctrl+C被按下时,由此代码模块下面的代码处理 NameError:使用一个还没有被赋予对象的变量 SyntaxError:python代码非法,代码不能编译(也就是代码语法写错了...) TypeError:传入对象类型与要求不符合 UnboundLocalError:试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它 ValueError:传入一个调用者不期望的值...,即使值得类型是正确的
为什么? 可以,因为except可以和多种异常类型搭配,处理多种异常。 2.你知道如何统一处理多类异常吗?...3.except后如果不带任何异常类,Python会捕获所有(try语句块内)的异常并统一处理,但小甲鱼不建议这么做,你知道为什么吗?...) except KeyboardInterrupt: print('退出啦!')...while (i > 0): if(number == secret): print("哇,你是Allen肚里的蛔虫吗?")...1.input()函数有可能产生两类异常:EOFError(文件末尾endoffile,当用户按下组合键Ctrl+d产生)和KeyboardInterrupt(取消输入,当用户按下组合键Ctrl+c产生
导入模块失败的时候 IndexError 索引超出序列的范围 KeyError 字典中查找一个不存在的关键字 KeyboardInterrupt 用户输入中断键(Ctrl... 操作系统产生的异常(例如打开一个不存在的文件) OverflowError 数值运算超出最大限制 ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象...RuntimeError 一般的运行时错误 StopIteration 迭代器没有更多的值 SyntaxError Python的语法错误 IndentationError ...) UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类) UnicodeDecodeError Unicode解码时的错误(UnicodeError...除数为零 以下是 Python 内置异常类的层次结构: BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +
大家好,我是Go进阶者,今天给大家分享一些Python基础 (异常),一起来看看吧~ 一、异常简介 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常...想一想: 上例程序,已经使用except来捕获异常了,为什么还会看到错误的信息提示?...答: except捕获的错误类型是IOError,而此时程序产生的异常为 NameError ,所以except没有生效。...try...finally...语句用来表达这样的情况: 在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。...这样做的原因是让程序运行得慢一些。在程序运行的时候,按Ctrl+c中断(取消)程序。 我们可以观察到KeyboardInterrupt异常被触发,程序退出。
无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(的子类) ;代码没有正确对齐 IndexError 下标索引超出序列边界...,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError...使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) TypeError 传入对象类型与要求的不符合...UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量, 导致你以为正在访问它 ValueError...传入一个调用者不期望的值,即使值的类型是正确的 name = [1,2,3] try: print(name[5]) except IndexError as e: print("列表操作错误
索引超出序列的范围 KeyError 字典中查找一个不存在的关键字 KeyboardInterrupt 用户输入中断键(Ctrl+c) MemoryError 内存溢出(可通过删除对象释放内存)...NameError 尝试访问一个不存在的变量 NotImplementedError 尚未实现的方法 OSError 操作系统产生的异常(例如打开一个不存在的文件) OverflowError...迭代器没有更多的值 SyntaxError Python的语法错误 IndentationError 缩进错误 TabError Tab和空格混合使用 SystemError Python编译器系统错误...Unicode相关的错误(ValueError的子类) UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类) UnicodeDecodeError Unicode...解码时的错误(UnicodeError的子类) UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类) ValueError 传入无效的参数 ZeroDivisionError
Python 程序中最常见的错误原因是某个语句不符合规定的用法。这种错误称为语法错误。Python 解释器会立即报告它,通常会附上原因。...Copy 在 Python 3.x 中,print 是一个内置函数,需要括号。上面的语句违反了这种用法,因此会显示语法错误。 但是很多时候,程序在运行后会导致错误,即使它没有任何语法错误。...这种错误是运行时错误,称为异常。Python 库中定义了许多内置的异常。让我们看看一些常见的错误类型。 下表列出了 Python 中重要的内置异常。...键盘中断 当用户点击中断键(Ctrl+c 或 delete)时引发。 存储器错误 当操作耗尽内存时引发。 名称错误 当在局部或全局范围内找不到变量时引发。...操作系统错误 当系统操作导致系统相关错误时引发。 OverflowError 当算术运算的结果太大而无法表示时引发。 报错 当弱引用代理用于访问垃圾回收引用时引发。
类型的错误,No such file or directory:123.txt (没有123.txt这样的文件或目录) 异常: 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示...,已经使用except来捕获异常了,为什么还会看到错误的信息提示?...答: except捕获的错误类型是IOError,而此时程序产生的异常为 NameError ,所以except没有生效 4.3、获取异常的信息描述 4.5、else 咱们应该对else并不陌生,在if....语句用来表达这样的情况: 在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。...这样做的原因是让程序运行得慢一些。在程序运行的时候,按Ctrl+c中断(取消)程序。 我们可以观察到KeyboardInterrupt异常被触发,程序退出。
领取专属 10元无门槛券
手把手带您无忧上云