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)





































展开阅读全文

没有更多推荐了,返回首页