13分处理,Python中的相当处文学习笔记

By admin in 4858.com on 2019年4月14日

目录:

Python常见卓殊分类与拍卖措施,python处理格局

Python常见至极类型大概分为以下类:

一.AssertionError:当assert断言条件为假的时候抛出的尤其

贰.AttributeError:当访问的指标属性不设有的时候抛出的百般

叁.IndexError:超出对象索引的界定时抛出的那么些

四.KeyError:在字典中查找多个不存在的key抛出的可怜

5.NameError:访问三个不设有的变量时抛出的越发

陆.OSError:操作系统一发布生的非凡

7.SyntaxError:语法错误时会抛出此越发

八.TypeError:类型错误,日常是不通类型之间的操作会并发此分外

玖.ZeroDivisionError:进行数学运算时除数为0时会出现此丰硕

关于更加多卓殊请参考官方文书档案:

二.七版本链接

三.陆版本链接

Python格外处理:

例1:出现相当最简易处理格局

#!/usr/bin/python 
#coding:utf8 

#try与except结合用法 

a = 1 
b = 2 

try : 
  assert a > b     #如果a>b判断为假时将抛出AssertionError异常 
except AssertionError:  #如果捕获到AssertionError异常将执行except下面的代码块 
  print ( "a<b" ) 

地方例子输出结果为 a<b
因为在断言时a>b为假,那时候会抛出AssertionError分外,当捕获到此尤其后就会执行except代码块中的语句

例2:使用几个except捕获格外

#!/usr/bin/python 
#coding:utf8 

#try与多个except结合用法,在try代码块中依次执行,只要捕获到异常就停止执行 

a = 1 
b = 2 
c = "1" 

try : 
  assert a < b 
  d = a + c 
except AssertionError: 
  print ( "a<b" ) 
except TypeError,e:   #这里的 e 为异常信息 
  print (e) 

地点执行的结果为 unsupported operand type(s) for +: ‘int’ and ‘str’
不帮助整型和字符串型相加,后面断言为真,所以不会油不过生AssertionError卓殊,这时候继教执行上面语句,那时候就涌出了TypeError相当,那时候就会执行except
TypeError下边包车型客车代码块,后边的e代表万分的错误音信,所以那边的结果是打字与印刷出格外的错误新闻

例3:try与except与else的使用

#!/usr/bin/python 
#coding:utf8 

a = 1 
b = 2 
c = "1" 

try : 
  assert a < b 
  d = a + b 
except AssertionError,e: 
  print ( "a<b" ) 
except TypeError,e: 
  print (e) 
else :          #当try代码块中执行没有发现任何异常的时候执行这里的语句 
  print ( "Program execution successful" ) 

地点执行结果为

例四:try与except与else与finally结合使用(能够没有else)

#!/usr/bin/python 
#coding:utf8 

#try与多个except结合用法,在try代码块中依次执行,只要捕获到异常就停止执行 

a = 1 
b = 2 
c = "1" 

try : 
  assert a < b 
  d = a + b 
  txt = open ( "/root/1.txt" ) 
  txt.write( "test" )    #上面打开文件默认以r方式打开,这里会抛出IOError异常 
except AssertionError,e: 
  print ( "a<b" ) 
except TypeError,e:   #这里的 e 为异常信息 
  print (e) 
except IOError,e: 
  print (e) 
else :          #当没有发现任何异常的时候执行这里的语句 
  print ( "Program execution successful" ) 
finally :         
#不管有没有民常都会执行finally代码块中的语句,通常用在打开文件,在文件处理过程过中出异常退出,这时候文件没有关闭 
  txt.close() 

Python常见极度类型 差不多分为以下类:
1.AssertionError:当assert断言条件为假的时候抛出的相当…

Python中的卓殊处医学习笔记,python分外处理

Python 是面向对象的言语,所以程序抛出的百般也是类。

周围的老大类

1.NameError:尝试访问叁个平昔不表达的变量
2.ZeroDivisionError:除数为 0
叁.SyntaxError:语法错误
肆.IndexError:索引超出类别范围
5.KeyError:请求二个不存在的字典关键字
陆.IOError:输入输出错误(比如您要读的文本不存在)
柒.AttributeError:尝试访问未知的靶子属性
八.TypeError:传给函数的参数类型不得法,比如给 int 函数字传送入字符型

自定义相当类

固然内建的充裕类已经席卷大多数场合,但若是必要创制本人的那么些类,能够使用上边包车型客车办法:

复制代码 代码如下:

class CustomException(Exception): # Exception 为具备特别的基类
    # 处理分外的代码

抓获分外

复制代码 代码如下:

try: 
   # 供给展开捕获极度的代码,只有出现极度此前的代码被最后实施
except (Exception1,Exception2,…) as argument: 
   # 捕获到 (Exception一,Exception二,…) 里的不得了才实施本段代码
   # argument 是2个万分类的实例,包蕴很是的现实信息
except:
   # 捕获到 (Exception1,Exception贰,…) 以外的充足执行本段代码,用 sys
模块的 exc_info() 函数能够获取相当音讯
else: 
   # 假设未有捕获到格外则举行本段代码
finally: 
   # 无论是还是不是捕获到那多少个都实施本段代码

上述讲话并不都以必须的,譬如 try…except…、try…finally… 只怕try…except…else… 语句都以有效的。我们还能 用
try…except…else… 代替 if…else…。

抛出特别

尽管大家想要在温馨编排的主次中继续努力抛出十分,可以利用如下二种艺术:

raise Exception(reason)

Exception 必须是叁个要命类的名目。可选项 reason 用来传递相当的消息。

assert expression[,reason]

assert 是预知的机要字。当表明式 expression 为真则什么都不做,不然抛出
AssertionError 至极。reason 提供拾一分的音讯。

上下文物管理理器

出于指标 File 支持上下文物管理理协议,由此得以选取下边包车型客车不贰法门打开文件:

复制代码 代码如下:

with open(‘filename’) as fp:
   # 无论本段代码是不是现身非常,文件对象 fp 均能正确关闭

Example

复制代码 代码如下:

import sys

def div(num, den):
 print(‘_________________   (‘,num,’,’,den,’)\n’)
 try:
  ans = num/den
  assert den != num, ‘Equal’ # 断言:分子分母不等于
13分处理,Python中的相当处文学习笔记。  den = ‘Changed’            # 如若实施本语句在此之前未出现至极,改变 den
的值
  if num % 2:                # 假诺分子为奇数,则抛出十三分
   raise ValueError(‘Odd’)
 except ZeroDivisionError as e:
  print(‘except … as …\n\t’, e)
 except:
  print(‘except\n\t’, sys.exc_info())
 else:
  print(‘else\4858.com ,n\t’, ans)
 finally:
  print(‘finally\n\t’, den)

div(1,0) # 除数为零,为 ZeroDivisionError 非常类
div(1,1) # 分子等于分母,断言为假,抛出格外
div(2,1) # 无异常
div(3,1) # 分子为奇数,通过 raise 抛出尤其
div(3,’x’) # 不属于 ZeroDivisionError 的别的特别

运作结果:

复制代码 代码如下:

_________________   ( 1 , 0 )

except … as …
  division by zero
finally
  0
_________________   ( 1 , 1 )

except
  (<class ‘AssertionError’>, AssertionError(‘Equal’,),
<traceback object at 0x00000000029B42C8>)
finally
  1
_________________   ( 2 , 1 )

else
  2.0
finally
  Changed
_________________   ( 3 , 1 )

except
  (<class ‘ValueError’>, ValueError(‘Odd’,), <traceback object
at 0x00000000029B42C8>)
finally
  Changed
_________________   ( 3 , x )

except
  (<class ‘TypeError’>, TypeError(“unsupported operand type(s) for
/: ‘int’ and ‘str'”,), <traceback object at 0x00000000029B42C8>)
finally
  x

Python
是面向对象的语言,所以程序抛出的不胜也是类。 常见的不胜类
一.NameError:尝试访问一个…

AssertionError    断言语句(assert)失利

  1、什么是那二个?

AttributeError    尝试访问未知的靶子属性

  2、非常的计算

EOFError    用户输入文件末尾标志EOF(Ctrl+d)

  叁、课时3二课后习题及答案

FloatingPointError    浮点总结错误

 

GeneratorExit  generator.close()方法被调用的时候

*******************

ImportError  导入模块战败的时候

一、什么是十分?

IndexError  索引超出体系的界定

*******************

KeyError  字典中追寻3个不存在的重要性字

次第出现逻辑错误或许用户输入非法都会挑起特别,但那几个卓殊并不是致命的,不会导致程序崩溃死掉。能够行使Python提供的老大处理体制,在十分出现的时候登时抓获,并从里边消化掉。

KeyboardInterrupt 用户输入中断键(Ctrl+c)

那么哪些是丰裕呢?举个例证:

MemoryError 内部存款和储蓄器溢出(可透过删除对象释放内部存款和储蓄器)

file_name = input("请输入要打开的文件名:")
f = open(file_name,'r')
print("文件的内容是:")

for each_line in f:
      print(each_line)

NameError 尝试访问一个不设有的变量

这里当然假若用户输入的是天经地义的,但一旦用户输入三个不设有的公文名,那么地方的代码就虚弱:

NotImplementedError 尚未落到实处的情势

请输入要打开的文件名:我为什么是一个文档.txt
Traceback (most recent call last):
  File "C:\Users\14158\Desktop\lalallalalal.py", line 2, in <module>
    f = open(file_name,'r')
FileNotFoundError: [Errno 2] No such file or directory: '我为什么是一个文档.txt'

OSError 操作系统产生的老大(例如打开2个不设有的公文)

 下边包车型客车例证就抛出了一个FileNotFoundError的极度,那么Python平日还能抛出什么万分呢?那里给我们做总结,未来蒙受那几个非凡就不会不熟悉了。

OverflowError 数值运算超出最大范围

 

ReferenceError 弱引用(weak
reference)试图访问贰个一度被垃圾回收机制回收了的对象

******************

RuntimeError 壹般的周转时不当

二、非常的计算

StopIteration 迭代器未有越多的值

******************

SyntaxError Python的语法错误

 1、AssertionError:断言语句(assert)战败

IndentationError 缩进错误

世家还记得断言语句吧?在有关分支和巡回的章节里讲过。当assert这么些重点字后面包车型大巴基准为假的时候,程序将适可而止并抛出AssertionError至极。assert语句一般是在测试程序的时候用于在代码中置入检查点:

TabError Tab和空格混合使用

>>> my_list = ["小甲鱼"]
>>> assert len(my_list) > 0
>>> my_list.pop()
'小甲鱼'
>>> assert len(my_list) > 0
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    assert len(my_list) > 0
AssertionError

SystemError Python编写翻译器系统错误

 

SystemExit Python编写翻译器进度被关门

2、AttributeError:尝试访问未知的靶子属性

TypeError 分歧类别间的无用操作

>>> my_list = []
>>> my_list.fishc
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    my_list.fishc
AttributeError: 'list' object has no attribute 'fishc'

UnboundLocalError 访问二个未起初化的本土变量(NameError的子类)

 

UnicodeError Unicode相关的荒谬(ValueError的子类)

三、IndexError:索引超出系列的范围

UnicodeEncodeError Unicode编码时的谬误(UnicodeError的子类)

>>> my_list = [1,2,3]
>>> my_list[3]
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    my_list[3]
IndexError: list index out of range

UnicodeDecodeError Unicode解码时的一无所长(UnicodeError的子类)

 

UnicodeTranslateError Unicode转换时的不当(UnicodeError的子类)

四、KeyError:字典中找找二个不设有的重中之重字

ValueError 传入无效的参数

>>> my_dict = {"one":1,"two":2,"three":3}
>>> my_dict["one"]
1
>>> my_dict["four"]
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    my_dict["four"]
KeyError: 'four'

ZeroDivisionError 除数为零

 

以下是 Python 内置十分类的层次结构:

5、NameError:尝试访问三个不存在的变量

BaseException

当尝试访问3个不设有的变量时,Python会抛出NameError至极:

+– SystemExit

>>> fishc
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    fishc
NameError: name 'fishc' is not defined

+– KeyboardInterrupt

 

+– GeneratorExit

陆、OSError:操作系统爆发的百般

+– Exception

OSError顾名思义正是操作系统产生的要命,像打开四个不设有的文书会抓住FileNotFoundError,而这么些FileNotFoundError便是OSError的子类。例子上面已经演示过,那里就不另行了。

+– StopIteration

 

+– ArithmeticError

七、SyntaxError:Python语法错误

|    +– FloatingPointError

如果碰到SyntaxError是Python语法的百无一用,这时Python的代码并不能够继续执行,你应有先找到并查对错误:

|    +– OverflowError

>>> print "I love fishc.com"
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("I love fishc.com")?

|    +– ZeroDivisionError

 

+– AssertionError

八、TypeError:差别类型间的不行操作

+– AttributeError

有个别项目分歧是不可能互相举办计算的,不然会抛出TypeError分外:

+– BufferError

>>> 1 + "1"
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    1 + "1"
TypeError: unsupported operand type(s) for +: 'int' and 'str'

+– EOFError

 

+– ImportError

玖、ZeroDivisionError:除数为零

+– LookupError

地球人都知道除数无法为零,所以除以零就会掀起ZeroDivisionError非常:

|    +– IndexError

>>> 5/0
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    5/0
ZeroDivisionError: division by zero

|    +– KeyError

 

+– MemoryError

大家明白了这一个尤其,那什么捕获这个分外呢?

+– NameError

破获至极能够用try语句实现,任何出现在try语句范围内的丰硕都会被当即抓获到。try语句有二种达成方式:一种是
try-except,另一种是try-finally。

|    +– UnboundLocalError

 

+– OSError

*******************************

|    +– BlockingIOError

三、课时32课后习题及答案

|    +– ChildProcessError

*******************************

|    +– ConnectionError

4858.com 14858.com 24858.com 34858.com 44858.com 54858.com 64858.com 74858.com 84858.com 9

|    |    +– BrokenPipeError

 

|    |    +– ConnectionAbortedError

|    |    +– ConnectionRefusedError

|    |    +– ConnectionResetError

|    +– FileExistsError

|    +– FileNotFoundError

|    +– InterruptedError

|    +– IsADirectoryError

|    +– NotADirectoryError

|    +– PermissionError

|    +– ProcessLookupError

|    +– TimeoutError

+– ReferenceError

+– RuntimeError

|    +– NotImplementedError

+– SyntaxError

|    +– IndentationError

|        +– TabError

+– SystemError

+– TypeError

+– ValueError

|    +– UnicodeError

|        +– UnicodeDecodeError

|        +– UnicodeEncodeError

|        +– UnicodeTranslateError

+– Warning

+– DeprecationWarning

+– PendingDeprecationWarning

+– RuntimeWarning

+– SyntaxWarning

+– UserWarning

+– FutureWarning

+– ImportWarning

+– UnicodeWarning

+– BytesWarning

+– ResourceWarning

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有