一、第六章 异常处理
1、什么是异常,什么是异常处理
异常是指程序在运行过程中发生的错误事件,影响程序的正常执行,异常并不是一定会发生,
默认情况下,程序运行中遇到异常时将会终止,并在控制台打印出异常出现的堆栈信息。
异常处理是指程序设计时为了避免因异常而导致程序终止而做的一些额外操作。异常处理可以
使得异常出现后,程序仍然可以执行。
In [1]:
print(a) #未定义变量
--------------------------------------------------------------------------- NameError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_3316\3171637920.py in <module> ----> 1 print(a) NameError: name 'a' is not defined
In [2]:
a = input('请输入一个整数:') 12/a #数据类型错误
请输入一个整数:0
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_3316\2856857755.py in <module> 1 a = input('请输入一个整数:') ----> 2 12/a TypeError: unsupported operand type(s) for /: 'int' and 'str'
In [3]:
a = int (input('请输入一个整数:')) 12/a #
请输入一个整数:0
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_3316\2870666741.py in <module> 1 a = int (input('请输入一个整数:')) ----> 2 12/a ZeroDivisionError: division by zero
In [ ]:
print('ok') #语法错误:SyntaxBrror
2、如何处理异常
Python中通常将可能发生异常的代码放在try语句中,如果发生异常则通过except语句来捕获异常并对做一些额外
处理,如果没有发生异常则执行后面的else语句,最后执行finally语句做一些收尾操作。Python中还提供了raise语句
允许用户主动抛出异常,raise关键字后面需要提供一个异常实例或者异常类,如果传递的是异常类,则会调用无参数的
构造方法来实例化对象。如果捕获到了异常,但是暂时不处理,可以直接通过raise语句撤出异常,此时raise关键字
后面什么都不用写。
In [11]:
a = int (input('请输入一个整数:')) try: b = 12/a except: if a == 0: print('ZeroDivisionError:除数不能为0!') else: print('a = ',a) finally: print('b = ',b)
请输入一个整数:0 ZeroDivisionError:除数不能为0! b = 12.0
In [12]:
#实例:定义一个函数,验证密码字符串长度是不是为6—10,不符合要求时抛出异常。(设置密码验证) def check_str(content): if (len(content)<6 or len(content)>12): raise ValueError('长度应在6—12位之间,当前长度为:'+str(len(content))) else: print('长度符合要求') ss = input('请输入一个长度在6—12位之间的密码字符串') check_str(ss)
请输入一个长度在6—12位之间的密码字符串66666666 长度符合要求
二、第六章 函数 1、函数类型 可变长度参数是指函数定义时,无法确定参数的个数。例如系统中的print函数,不确定
In [20]:
def fun_1(a,*b): print(a) print(b)
In [21]:
fun_1(10,10)
10 (10,)
In [22]:
def fun_2(a,**b): print('a = ',a) print('b = ',b)
In [23]:
fun_2(10,e = 10,f = 20,c = 30,d = 40) a = 10 b = {'e':10, 'f':20, 'c':30, 'd':40}
a = 10 b = {'e': 10, 'f': 20, 'c': 30, 'd': 40}
In [ ]:
2、变量作用域 根据变量定义的位置,可将变量分为全局变量和局部变量
In [26]:
def test(): a=8 print(a) a = 10 test() print('a =',a)
8 a = 10
In [ ]:
3、特殊函数 匿名函数
In [28]:
test =lambda x,y,z:x+y+z
In [29]:
test(10,20,100)
Out[29]:
130
In [30]:
def test (x,y,z): return x+y+z test(10,20,30)
Out[30]:
60
In [ ]:
三、数据结构
In [34]:
list = [5,7,5,98,5,4,78]
In [50]:
list
Out[50]:
[5, 7, 5, 98, 5, 4, 78]
In [51]:
list.index(5)
Out[51]:
0
In [52]:
list[0]
Out[52]:
5
In [54]:
list[2:4]
Out[54]:
[5, 98]
In [ ]: