Python异常处理及函数
1.异常处理:
1.1.报错代码:
list = [1,2,3,4,5,6,7,8,9]
#IndexError: list index out of range 超出范围牵引
#print(list[14])
dic = {}
1.2.如果dic有name属性 则修改这个属性的值 如果没有name属性 则添加name属性
dic ['name'] = '张三'
1.3.KeyError: 'age' 没有键值 print(dic['age']) 将有可能引起错误的代码放进try里面 如果出现错误 代码会根据错误类型 进入到指定的except 这样做的: 代码不会因为错误而中断执行好处
try :
print('---------------------------')
#print(list[14])
print(dic['age'])
except ImportError as e:
print('捕获了一个牵引错诶{}'.format(e))
except KeyError as e:
print('捕获了一个关键字错误:{}'.format(e))
print('hrllo world')
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的数值')
2.python函数:
2.1.def define定义 def + 方法名字 + (参数(形参))
def mySelf():
print('今天是2018年7月4日,我到智游上班的第一天,'
'感觉自己萌萌哒,'
'省略一万字0......,'
'谢谢大家')
print('今天是2018年7月5日,'
'今天领导批评了我,'
'感觉很不爽,'
'我要辞职')
print('今天是2018年7月6日,已辞职')
mySelf()
mySelf()
mySelf()
mySelf()
2.2.无参数无返回值
def fun1():
print('hrllo world')
fun1()
2.3. 参数的实质就是变量
声明方法的时候的参数 叫做形式参数
def fun1(name):#name形参
print('大家好,我的名字是:{}'.format(name))
2.4. 声明方法的时候 如果有参数
那么调用方法一定也要有参数 声明方法时候的参数叫做形参(形参即为变量) 调用方法的时候的参数叫做实参(实参为给变量赋值
fun1('渣渣辉')#渣渣辉实参
少了一个必须的参数 #TypeError: fun1() missing 1 required positional argument: 'name' 声明方法的时候 如果有参数
2.5.没有参数 有返回值的方法 局部变量
def fun1():
#在局部声明的变量即为局部变量
#(在方法内部声明的变量全部是局部变量
#局部变量的作用范围
#即为声明变量的这个方法
#出了这个方法的范围 就不能再使用这个变量 )
result = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
#将这个值拿到这个方法的外面使用
return result
content = fun1()
print('1+9的结果是{}'.format(content))
print('1+9的结果是{}'.format(fun1()))
有返回值 有参数的方法
def fin1(name,age): result = '我的姓名是{},我的年龄是{}'.format(name,age) return result print(fin1('张三',17))
全局变量
name = '张三'
def fun1():
#global 全球的;全局的
global name
name = '李四'
print(name)
fun1()
3.默认参数 想让那个参数成为默认参数都可以 但是一定要注意:默认参数放入参数列表的队尾
def fun1(name,age=17,fond = '吃鸡'):
print('我是{},我的年龄是{},我的爱好{}'.format(name,age,fond))
fun1('小明',18)
fun1('小明')
这种写法是错误的: 因为默认参数一定要写在参数列表的队尾 def fun1(age=17,fond='吃鸡',name): pass
3.1关键参数
def fun1(name,age=17,sex='男',fond='game'):
print('我是{},今年{},我是{}的,我喜欢{}'.format(name,age,sex,fond))
fun1('小兰')
fun1('小兰',16,'女')
指定指明给某个参数 这个参数就叫做关键参数
fun1('校长',fond='吃饭')
fun1(fond='学习',age=7,name='小啊')
3.2如果参数中参数为非默认参数 那么调用方法的时候 一定要给它赋值
#fun1(age=7,fond='吃饭')
#*args用法--------------
#args arguments 参数
#将多余的参数统统放入args里面
def fun1 (a,b,*args):
print('a的值是:{}'.format(a))
print('b的值是:{}'.format(b))
print('args的值是:{}'.format(args))
print('{} + {} = {}'.format(a,b,a+b))
fun1(10,15)
fun1(10,12,13)
fun1(12,23,56,45)
fun1(12,456,78,9,78,78)
3.3返回值return 作用1:将方法内部的结果 让外面来使用的
def jing ():
jingshui= '我是井水,我只能在fun1这个方法里面使用,外面用不到'
#将井水运送出井
return jingshui
print(jing())
def fun1():
print('今天走了一步')
print('今天走了两步')
#return:截断后面的代码 统统不执行
return
print('今天走了三部')
fun1()
def isOpen(open):
#如果灯已经打开了
if open == True:
return
print('打开灯')
isOpen(False)
4.高级函数:
4.1:
space = '---------'
word = 'Hello World'
print(space.join(word))
def fum1(*args,sep = ''):
pstr = sep.join(args)
print(pstr)
print('a','b','c',sep='~~~')
fum1('a','b','c', sep='!!!')
def my_map(string):
allNumberList={
'0':0,
'1':1,
'2':2,
'3':3,
'4':4,
'5':5
}
return allNumberList[string]
4.2:map接受两个参数:参数1是函数 参数2是序列 map函数的意义就是讲序列里面的每一个值都在 前面的函数中进行处理 并返回一个新的列表
resilt = list(map(my_map,'5555'))
print(resilt)
*指针
def fun1(*args):
print(args)
讲元组里面的每一个元素转化成字符串放入list里面 为什么讲元组转化成列表? 元组不可变 列表可变
args = list(map(str,args))
print(args)
fun1(1,2,3)
4.3:reduce()函数接受的参数和map()一样 参数1:函数 参数2:x序列 不同的是reduce()对序列里面的每一个元素反复 调用函数 并返回一个最终结果
from functools import reduce
def my_reduce(x,y):
return x+y
print(reduce(my_reduce,[1,2,3,4,5,6,7,8,9,10]))
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(a=10,b=10)
fun1(10,None,[{'name':'张三'}])
fun1(10,[{'name':'张三'}],[{'name':'张三'}])
eval() 将括号里面的内容当成代码来执行 慎用 确保安全
result = '12/3*4'
content = eval(result)
print(content)
4.4:匿名函数———————————————
lambda 匿名函数 后面只能写比较简单的逻辑
result = lambda x , y : x + y
print(result(5,6))
print(result(11,12))
def fun1(x,y):
return x+y
print(fun1(5,6))
list1= [1,22,11,12,32,45,7,8,56,14]
list1= sorted(list1,key=lambda x:x)
print(list1)
list2 = [
{
'name':'张三',
'age' :16
},
{
'name':'李四',
'age':45
},
{
'nmae':'校长',
'age':46
}
]
list2 = sorted(list2,key=lambda x:x['age'],reverse = True)
print(list2)
list3 = [
{
'name':'张三',
'info':{
'age':14,
'height':456
}
},
{
'name':'夏' ,
'info':{
'age':13,
'height':457
}
},
{
'name':'夹',
'info':{
'age':15,
'height':158
}
}
]
list3 = sorted(list3,key=lambda x:x['info']['age'])
print(list3)
还没有评论,来说两句吧...