博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数
阅读量:6386 次
发布时间:2019-06-23

本文共 2816 字,大约阅读时间需要 9 分钟。

上节课复习:     1. 无参装饰器
1 def 装饰器名字(func):2     def wrapper(*args,**kwargs):3         res = func(*args,**kwargs)4         return res5     return wrapper6 7 @装饰器名字  #被装饰的函数名字=装饰器名字(被装饰的函数的内存地址)8  def 被装饰的函数名字():9     pass
2, 有参装饰器
def 装饰器名字(参数1,参数2,...):    def outter(func):        def wrapper(*args,**kwargs):            res = func(*args,**kwargs)            return res        return wrapper    return outter@装饰器名字(值1,值2,....)  #@outterdef 被装饰的函数名字():    pass
3.叠加多个装饰器
1 @deco12 @deco23 @deco34 def index():5     pass
  解释语法的顺序:自下而上,deco->deco2->deco1   调用index()时才开始触发装饰器内部闭包函数的执行,闭包函数执行顺序是:自上而下,   deco1.wrapper1->deco2.wrapper2->deco3.wrapper3 今日内容: 1.函数递归(*****)     1.什么是函数递归         函数的递归调用是函数嵌套调用的一种特殊形式,\         在调用一个函数的过程中又直接或者间接地调用该函数本身,称之为函数的递归调用         递归调用必须有两个明确的阶段:             1.回溯: 一次次递归调用下去,说白了就一个重复的过程,\                     但需要注意的是每一次递归调用问题的规模都应该有所减少,\                     直到逼近一个最终的结果,即回溯阶段一定要有一个明确的结束条件             2.递归: 往回一层一层推算出结果         递归调用就是一个重复的过程,但是每一次重复问题的规模都应该有所减少,并且应该在满足某种条件的情况下结束重复,开始进入递增 2.三元表达式,列表生成式,字典生成式     1.三元表达式:         三元表达式实现的效果就是: 条件成立的情况下返回一个值,不成立的情况下返回另一种值         # 条件成立情况下返回的值 if条件 else 条件不成立情况下返回的值
1 def max2(x,y):2     #原写法3     if x > y:4         return x5     else:6         return y7     #新写法8     return x if x > y else y 9     #三元表达式一行代码把上面代码全省略了
2.列表生成式:
1 names = ['alex', 'lqz', 'yyh', 'fm']2  l = [name + '_DSB' for name in names]
 
3.字典生成式:             补充内置方法:  enumerate(),取索引
1 keys = ['name', 'age', 'sex'] 2 vals = ['egon', 18, 'male'] 3  4 #原写法 5 dic = {} 6 for i,k in enumerate(keys): 7     dic[k] = vals[i] 8     print(dic) 9 10 #新写法11 dic = {k:vals[i] for i,k in enumerate(keys)}12 dic = {k:vals[i] for i,k in enumerate(keys) if i > 0}
 
3.匿名函数与内置函数     1.匿名函数: 就是没有名字的函数         1.为何要用匿名函数:                 用于仅仅临时使用一次的场景,没有重复使用的需求
1 print(lambda x,y:x+y)(1,2))2 print((lambda x,y: x if x > y else y)(8,2))
2.匿名函数和内置函数配合使用
1 salaries = { 2     'egon':300000, 3     'alex':100000000, 4     'wupeiqi':10000, 5     'yuanhao':2000 6 } 7 #求薪资最高的那个人名:即比较的是value,但取结果是key 8 res = max(salaries) 9 print(res)10 #可以通过max函数的key参数来改变max函数的比较依据,运行原理:11 #max函数会'for循环'出一个值,然后将该值传给key指定的函数12 #调用key指定的函数,将拿到的返回值当作比较依据13 14 max(): #比较的是最大值15 max(salaries,key=lambda name:salaries[name])16 17 min(): #比较的是最小值18 min(salaries,key=lambda name:salaries[name])19 20 sorted(): #排序21 nums = [11, 33, 22, 9, 31]22 res = sorted(nums,reversed(True))23 print(res)24 25 map(): #把一个列表按照我们自定义的映射规则映射成一个新的列表26 map(lambda name:name+'DSB',names)27 28 filter(): #从一个列表中过滤出符合我们过滤规则的值29            #相当于for循环取出每一个人名,然后传给匿名函数,将调用匿名函数返回值为True的那个人名给留下来30 filter(lambda name:name.endswith('sb'),names)31 32 reduce: #把多个值合并成一个结果33 from functools import reduce34 1 = [a, b, c, d]35 reduce(lambda x,y:x+y,l)36 reduce(lambda x,y:x+y,range(1,101))

 

转载于:https://www.cnblogs.com/earon/p/9409212.html

你可能感兴趣的文章
富文本编辑器TinyMCE
查看>>
01_vue实例_数据_方法
查看>>
“穿越”——正则表达式
查看>>
使用 find 命令实现高级排除需求
查看>>
【DEV GridControl】怎样使GridView中满足某个条件的行可编辑,其余行不可编辑?...
查看>>
一只年轻而倒悬的梨
查看>>
解决time_wait过多的问题
查看>>
技术转载:Jni学习一:了解Jni
查看>>
vue教程2-07 自定义指令
查看>>
Node.js之循环依赖
查看>>
python3调用阿里云短信服务
查看>>
Linux-百度云之AccleriderMini使用
查看>>
bootstrapTable refresh 方法使用简单举例
查看>>
2、TestNG+Maven+IDEA环境搭建
查看>>
maven插件运行过程中自动执行sql文件
查看>>
New UWP Community Toolkit - XAML Brushes
查看>>
C# ==、Equals、ReferenceEquals 区别与联系 (转载)
查看>>
layer弹出层的关闭问题
查看>>
LeetCode——3Sum & 3Sum Closest
查看>>
netstat详解
查看>>