异常处理和函数

1异常处理的形式
try:
    print('这是一个标准格式')
    print(dic['data'])
except IndexError as e:
    print('上一行代码出现了索引错误{}'.format(e))
except KeyError as e:
    print('上一行代码出现了关键字错误{}'.format(e))
# 如果没有出现任何错误 即执行else代码块
else :
    print('目前代码感觉良好')

finally:
    print('代码结束')
# try :
#     pass
# except :
#     pass
# else :
#     pass
# finally:
#     pass

手动抛出异常

age = input('请输入你的年龄')
age = int(age)
if age <  0 :
    print('年龄不对')
    # raise  升起 ; 在此指抛出错误
    # 手动抛出异常
    raise Exception('FBI warning')

2.函数的四种类型

无参数无返回值

def mySelf():
    print('今天是2018年7月4日')
    print('今天是2018年7月5日')
    print('今天是2018年7月6日')
mySelf()

有参数无返回值

def fun1(name):
    print('大家好,我的名字是{}'.format(name))
# 声明方法的时候 如果有参数
# 那么调用方法一定也要有参数
# 声明方法时候的参数叫做形参(形参即为变量)
# 调用方法时候的参数叫做实参(实参为给变量赋值)
fun1('Carrey')

有参数无返回值

def fun1():
    # 在局部声明的变量即为局部变量
    # (在方法内部声明的变量全部是是局部变量
    #  局部变量的作用范围
    #  即为声明变量的这个方法
    #  出了这个方法的范围 就不能再使用这个变量)
    result = 1 + 2 + 3 + 4 + 5+ 6 + 7 + 8 + 9
    # 将这个值拿到方法的外面使用
    return  result
content  = fun1()
print('1+ 9 的结果是{}'.format(content))

有参数有返回值

def fun1(name , age ):
    result = '我的姓名是{},我的年龄是{}'.format(name ,age)
    return result
print(fun1('张三',17))

全局变量与局部变量

默认参数 age=17

def fun1(name ,  fond, age=17 ):
    print('我是{},我的年龄是{},我的爱好是{}'.format(name ,age ,fond))
fun1('小明','玩游戏',12)
fun1('Amy','play the piano')

关键参数

def fun1(name ,age=17 ,sex='男',fond='game'):
    print('我是{},我今年{},我是{}的,我喜欢{}'.format(name ,age ,sex,fond))
fun1('小明')
fun1('小兰',16 ,'女')
# 指定指明给某个参数赋值 这个参数就叫做关键参数
fun1('小张',fond='吃饭')
fun1(fond='学习',age = 7 ,name = '小王')
# 如果参数中参数为非默认参数
# 那么调用方法的时候 一定要给它赋值
# fun1(age = 7 , fond='吃饭')

return的两个作用

返回方法的内部结果

截断  后面的代码不用执行

3高级函数

.join函数

spece = '----'
word = 'hello world'
print(spece.join(word))
# join()方法用于对序列中的元素进行加工加工的内容为使用

sep函数  输入多个形参

def fun1(*args,sep = '') :
    pstr = sep.join(args)
    print(pstr)
print('a','b','c',sep='~~~')
# sep是一个系统的函数
fun1('a','b','c',sep='!!!')

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)
# map接收两个参数  参数1 是函数  参数2是序列
# map函数的意义就是将序列中的每一个值都在前面的函数中进行处理,并返回一个新的列表

int  str 和*args

def fun1(*args) :
    # *指针  **双重指针
    print(args)
    # 将元组中的每个元素转化为字符串放入list里面
    # str   int  都是系统方法
    # 元组不可以改变,列表可变
    args = list(map(str,args))
    print(args)
fun1(1,2,3)

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]))
# reduce接收的参数和map一样
# 参数1:函数  参数2:序列
# 不同的是reduce()对序列里面的每一个元素反复调用函数  并返回一个最终结果

可以赋不同的值

def fun1(a,b,*args,**kwargs) :
    print('a的值是{}'.format(a))
    print('args的值是{}'.format(args))
    print('kwargs的值是{}'.format(kwargs))
# fun1('你好')
# fun1('nice','to','meet','you')
# fun1('hello',name='张三',age=18)
# fun1(a=10,b=10)
fun1(10,[{'name':'张三'}],[{'name':'张三'}])

eval函数

result = '12/3*4'
# 慎用  确保安全
content = eval(result)
print(content)
# eval将括号里面的内容当成代码来执行
lambda
# 匿名函数
# lambda 匿名函数  后面只能写比较简单的逻辑
# 与列表推导式一样
result = lambda x,y:x+y
print(result(5,6))

list1 = [1,11,23,56,89,78,25,16,51]
list1 = sorted(list1,key=lambda x:x)
print(list1)

list2 = [
    {
        'name': '张1',
        'age': 12
    },
    {
        'name': '张2',
        'age': 15
    },
    {
        'name': '张3',
        'age': 16
    }
]
list2 = sorted(list2,key=lambda x:x['age'],reverse = True)
print(list2)
list3 = [{'name':'san','info':{'age':16,'height':168}},
         {'name':'si','info':{'age':18,'height':170}},
         {'name': 'wu','info':{'age': 20, 'height': 180}}]
list3 = sorted(list3,key=lambda x:x['info']['height'])
print(list3)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值