Python的异常处理和函数
Python异常处理
什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
异常处理
将有可能引起错误的代码放进try里面,如果出现错误,代码会根据错误类型进入到指定的except;
这样做的好处:
代码不会因为错误而中断执行。
dic = {} list = [1, 2, 3, 4, 5, 6, 7, 8] dic['name'] = '张三' try : print(list[14]) print(dic['age']) except IndexError as e: print('捕获了一个索引错误{}'.format(e)) except KeyError as e : print('捕获了一个关键字错误{}'.format(e)) print('hello world')
list = [1, 2, 3, 4, 5, 6, 7, 8] try : print(list[21]) # Exception 和 IndexError , KeyError ... # 为父与子关系 except Exception as e: print('捕获了一个错误{}'.format(e))上面的代码都是异常处理的简写,它的标准格式为:
try : pass except : pass else: pass finally: pass异常处理的标准格式实例:
dic = {} try: print('这是一个标准格式') print(dic['data']) except IndexError as e: print('上一行代码出现了索引错误{}'.format(e)) except KeyError as e: print('上一行代码出现了关键字错误{}'.format(e)) # 如果没有出现任何错误 即执行else代码块 else : print('目前代码感觉良好') #一定会执行的代码块 finally: print('代码结束')我们也可以自己指定一个异常。
age = input('请输入你的年龄') age = int(age) if age < 0 : print('年龄不对') # raise 升起; 在此指抛出错误 # 手动抛出异常 raise Exception('年龄不对,请务必输入一个大于0的数值')
函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
# def define 定义 # def + 方法名字 + (参数(形参)) def mySelf(): print('今天是2018年7月4日,' '我在公司上班的第一天,' '......省略一万字,' '感觉自己萌萌哒,') print('今天是2018年7月5日,' '今天领导批评了我,' '感觉很不爽,' '要辞职') print('今天是2018年7月6日,已辞职') #输出函数 mySelf()函数是有参数值和返回值的。
参数的实质就是变量;
声明方法时候的参数叫做形式参数,简称形参(形参即为变量);
调用方法时候的参数叫做实际参数,简称实参(实参即为给变量赋值);
声明方法的时候如果有参数,那么调用方法一定也要有参数。
无参数无返回值的函数实例:
def fun1(): print('hello world') fun1()有参数无返回值的函数实例:
def fun1(name): print('大家好,我的名字是{}'.format(name)) fun1('渣渣辉')没有参数有返回值的函数实例:
在这里我们要注意的是:在方法内部声明的变量全部是局部变量;
局部变量的作用范围是在声明变量的这个方法里面;
出了这个方法的范围,就不能再使用这个变量。
def fun1(): result = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 # 将这个值拿到方法的外面使用 return result print('1+9的结果是{}'.format(fun1()))有参数有返回值的函数实例:
def fun1(name,age): result = '我的姓名是{},我的年龄是{}'.format(name,age) return result print(fun1('张三',17))全局变量:
name = '张三' def fun1(): # global 全球的;全局的 global name print(name) name = '李四' print(name) fun1()函数的默认参数:
想让哪个参数成为默认参数都可以,但是一定要注意:默认参数放入参数列表的队尾。
def fun1(name,age=17,fond = '玩游戏'): print('我是{},我的年龄是{},我的爱好是{}'.format(name,age,fond)) fun1('小明',18) fun1('小明')函数的关键参数:
调用函数的时候直接指明给某个参数赋值,这个参数就叫做关键参数。
如果参数中有参数为非默认参数,那么调用方法的时候一定要给它赋值。
def fun1(name,age = 17 ,sex = '男',fond = '玩游戏'): print('我是{},我今年{},我是{}的,我喜欢{}'.format(name,age,sex,fond)) fun1('小兰',16,'女') fun1('小张',fond='吃') fun1(fond='学习',age=7,name='小王')args用法
# 将多余的参数统统放入args里面 def fun1(a,b,*args): print('a的值是:{}'.format(a)) print('b的值是:{}'.format(b)) print('args的值是:{}'.format(args)) # 输出args的第一个元素 # print('args的值是:{}'.format(args[0])) print('{}+{}={}'.format(a,b,a+b)) fun1(10,15) fun1(10,15,20) fun1(10,15,20,25) fun1(10,15,20,25,30)返回值return
return有两个作用。
作用一:
将方法内部的结果让外面来使用
def jing(): jing_shui = '我是井水,我只能在fun1这个方法里面用,外面用不到' #将井水运送出井 return jing_shui print(jing())作用二:
截断:return后面的代码 统统不执行。
def fun1(): print('今天走了一步') print('今天走了两步') return print('今天走了三步') fun1()join
join()方法用于对序列中的元素进行加工。
space = '---' word = 'hello world' print(space.join(word)) def fun1(*args , sep = '~'): pstr = sep.join(args) print(pstr)sep
def fun1(*args , sep = '~'): pstr = sep.join(args) print(pstr) print('a','b','c',sep='~~~') fun1('a','b','c',sep='!')map
map 接收两个参数: 参数1 是函数; 参数2是序列;
map函数的意义就是讲序列里面的每一个值都在前面的函数中进行处理,并返回一个新的列表
def my_map(string): allNumberList = { '0':0, '1':1, '2':2, '3':3, '4':4, '5':5 } return allNumberList[string] result = list(map(my_map,'54321')) print(result)指针*,**arge
def fun1(*args): print(args) # 将元组里面的每一个元素转化成字符串放入list里面 # 为什么将元组转化成列表? # 元组不可变 ,列表可变 args = list(map(str,args)) print(args) fun1(1,2,3)
def fun1(a,b=10,*args,**kwargs): print('a的值是{}'.format(a)) print('args的值是{}'.format(args)) print('kwargs的值是{}'.format(kwargs)) fun1('你好') fun1('nice','to','meet','you') # name 和 age 不是关键参数 fun1('hello',name = '张三',age = 18) fun1(10,None,[{'name':'张三'}])reduce
reduce()函数接收的参数和map()一样;
参数1:函数 ; 参数2:序列;
不同的是reduce()对序列里面的每一个元素反复调用函数 并返回一个最终结果。
from functools import reduce def my_reduse(x,y): return x + y print(reduce(my_reduse,[1,2,3,4,5,6,7,8,9,10]))eval
eval()将括号里面的内容当成代码来执行。
result = '12 / 3 * 4' content = eval(result)
匿名函数
lambda 匿名函数 后面只能写比较简单的逻辑;与列表推导式比较类似。
result = lambda x , y : x + y print(result(5,6))
list1 = [1,11,56,24,89,67,43] list1 = sorted(list1,key = lambda x : x) print(list1)
list2 = [{ 'name':'张三', 'age':16, },{ 'name':'李四', 'age':17, },{ 'name':'王五', 'age':13, } ] list2 = sorted(list2,key = lambda x:x['age'],reverse = True) print(list2)持续更新中 阅读更多
- Python 异常处理--raise函数用法
- Python 异常处理--raise函数用法
- .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]
- python 学习之二次函数求解以及异常处理
- Head First Python---------(一)第一章(初识Python__人人都爱列表)、第二章(共享你的代码__函数模块)、第三章(文件与异常__处理错误)
- Head First Python 第二章 函数模块&第三章 文件与异常&第四章 持久存储&第五章 处理数据
- Python 异常处理--raise函数用法
- CSV文件分割与列异常处理的python脚本
- python处理异常
- Python引发异常,raise()及异常处理
- Python异常处理
- Python 字符串 内置 处理函数
- python异常处理示例代码
- Python爬虫入门五之URLError异常处理
- 0002.函数定义、控制流程、异常处理
- python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分
- python学习笔记 --- python中使用哈希方法处理字符与数字,ord()等函数详解
- python 中密码处理函数
- [Python]网络爬虫(三):异常的处理和HTTP状态码的分类
- python异常处理