上节课复习:
1. 无参装饰器
 def 装饰器名字(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
return res
return wrapper @装饰器名字 #被装饰的函数名字=装饰器名字(被装饰的函数的内存地址)
def 被装饰的函数名字():
pass
    2, 有参装饰器
def 装饰器名字(参数1,参数2,...):
def outter(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
return res
return wrapper
return outter @装饰器名字(值1,值2,....) #@outter
def 被装饰的函数名字():
pass
    3.叠加多个装饰器
 @deco1
@deco2
@deco3
def index():
pass
  解释语法的顺序:自下而上,deco->deco2->deco1
  调用index()时才开始触发装饰器内部闭包函数的执行,闭包函数执行顺序是:自上而下,
  deco1.wrapper1->deco2.wrapper2->deco3.wrapper3 今日内容: 1.函数递归(*****)
1.什么是函数递归
函数的递归调用是函数嵌套调用的一种特殊形式,\
在调用一个函数的过程中又直接或者间接地调用该函数本身,称之为函数的递归调用
递归调用必须有两个明确的阶段:
1.回溯: 一次次递归调用下去,说白了就一个重复的过程,\
但需要注意的是每一次递归调用问题的规模都应该有所减少,\
直到逼近一个最终的结果,即回溯阶段一定要有一个明确的结束条件

2.递归: 往回一层一层推算出结果
递归调用就是一个重复的过程,但是每一次重复问题的规模都应该有所减少,并且应该在满足某种条件的情况下结束重复,开始进入递增
2.三元表达式,列表生成式,字典生成式
1.三元表达式:
三元表达式实现的效果就是: 条件成立的情况下返回一个值,不成立的情况下返回另一种值
# 条件成立情况下返回的值 if条件 else 条件不成立情况下返回的值
 def max2(x,y):
#原写法
if x > y:
return x
else:
return y
#新写法
return x if x > y else y
#三元表达式一行代码把上面代码全省略了
    2.列表生成式:
 names = ['alex', 'lqz', 'yyh', 'fm']
l = [name + '_DSB' for name in names]

    3.字典生成式:
补充内置方法: enumerate(),取索引
 keys = ['name', 'age', 'sex']
vals = ['egon', 18, 'male'] #原写法
dic = {}
for i,k in enumerate(keys):
dic[k] = vals[i]
print(dic) #新写法
dic = {k:vals[i] for i,k in enumerate(keys)}
dic = {k:vals[i] for i,k in enumerate(keys) if i > 0}

3.匿名函数与内置函数
1.匿名函数: 就是没有名字的函数
1.为何要用匿名函数:
用于仅仅临时使用一次的场景,没有重复使用的需求
 print(lambda x,y:x+y)(1,2))
print((lambda x,y: x if x > y else y)(8,2))
        2.匿名函数和内置函数配合使用
 salaries = {
'egon':300000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
#求薪资最高的那个人名:即比较的是value,但取结果是key
res = max(salaries)
print(res)
#可以通过max函数的key参数来改变max函数的比较依据,运行原理:
#max函数会'for循环'出一个值,然后将该值传给key指定的函数
#调用key指定的函数,将拿到的返回值当作比较依据 max(): #比较的是最大值
max(salaries,key=lambda name:salaries[name]) min(): #比较的是最小值
min(salaries,key=lambda name:salaries[name]) sorted(): #排序
nums = [11, 33, 22, 9, 31]
res = sorted(nums,reversed(True))
print(res) map(): #把一个列表按照我们自定义的映射规则映射成一个新的列表
map(lambda name:name+'DSB',names) filter(): #从一个列表中过滤出符合我们过滤规则的值
#相当于for循环取出每一个人名,然后传给匿名函数,将调用匿名函数返回值为True的那个人名给留下来
filter(lambda name:name.endswith('sb'),names) reduce: #把多个值合并成一个结果
from functools import reduce
1 = [a, b, c, d]
reduce(lambda x,y:x+y,l)
reduce(lambda x,y:x+y,range(1,101))

Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数的更多相关文章

  1. python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04

    递归 递归: # 函数在调用阶段直接或间接地又调用了自身 应用场景: # 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点)   -->  l = [1, [2, [3, [4, [5, ...

  2. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  3. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

  4. Python——day14 三目运算、推导式、递归、匿名、内置函数

    一.三目(元)运算符 定义:就是 if...else...语法糖前提:简化if...else...结构,且两个分支有且只有一条语句注:三元运算符的结果不一定要与条件直接性关系​ cmd = input ...

  5. python基础之递归,匿名,内置函数

    递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...

  6. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  7. Python开发【第四篇】: 三大器和内置函数

    内容概要 函数名 闭包 迭代器 生成器 推导式与表达式 内置函数 装饰器 初识递归 1.函数名 函数名的运用: 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 01. 函数名的 ...

  8. 洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

    上一篇说到print语句,print是可以打印任何类型到屏幕上,都有哪些类型呢? 整形(int) 长整型(long) 浮点型(float) 字符型(str) 布尔型(bool) 最常见的就这几种. 在 ...

  9. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

随机推荐

  1. E20180305-hm-xa

    raw adj. 生的,未加工的; 无经验的; 新近完成的; 发炎的,疼痛的; payload n. 有效载荷; (航天器.卫星的) 装备; (车辆等的) 装载货物; (炸弹.导弹的) 爆炸力;

  2. ajax异步请求后台数据处理

    $.ajax({ type: "POST", url: "./rule/list/device/list", data: JSON.stringify(obj) ...

  3. saltstack实战笔记

    #运维管理工具 ansible #支持ssh,不需要客户端 saltstack #也是只是ssh,不需要客户端的 安装架构是,master /minion 安装salt的依赖模块 python zer ...

  4. 编译原理 LR分析(主要是LR(0)分析)

    一.LR分析的基本原理 1.LR分析的基本思想 LR方法的基本思想就是,在规范归约的过程中,一方面要记住已移进和归约出的整个字符串,也就是说要记住历史:一方面能够根据所用的产生式的推测未来可能碰到的输 ...

  5. 转 Docker Swarm vs Kubernetes

    容器化已经改变我们部署软件和微服务开发的方式.如果你刚听说容器, 这篇博客帮你入门. 什么是容器编排 容器能够把服务打包成基本单元,你可以把它部署到任何地方:本地机器.测试环境或者生产系统.但是在生产 ...

  6. 413 Arithmetic Slices 等差数列划分

    如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列.例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列. ...

  7. 解决jquery与其他库的冲突

    1.jquery在其他库之后导入 第一种: jQuery.noConflict();//将变量$的控制权限交给其他类库,即将$的控制权让渡给其他类库 jQuery(function(){ jQuery ...

  8. ios开发介绍

    iOS开发概述 •什么是IOS •什么是IOS开发 •为什么要选择IOS开发 •学习IOS开发的准备   1.什么是iOS   •iOS是一款由苹果公司开发的操作系统(OS是Operating Sys ...

  9. 当前主要的常用的PHP环境部署套件比较

    当前主要的常用的PHP环境部署套件比较 作为新手,需要学习PHP,或者需要搭建PHP+MySQL运行环境时,就需要去找各种搭建方法,一步一步按照操作流程操作,不仅繁琐,而且容易出错,还会带来安全隐患. ...

  10. FlowNet: Learning Optical Flow with Convolutional Networks

    作者:嫩芽33出处:http://www.cnblogs.com/nenya33/p/7122701.html 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者同意,必须保留此段声明:必须 ...