第十三节

一,匿名函数

  1. 匿名函数 == 一行函数

    lambda == def == 关键字

    • 函数体中存放的是代码

    • 生成器体中存放的也是代码

    • 就是yield导致函数和生成器的结果不统一

    lambda x:x# x,可以不写是普通函数的形参,可以不接受参数# :后边是返回值,x必须写 是普通函数的函数值 (lambda只能返回一个数据类型)print(lambda x:x)print((lambda x:x+6)(5))​f = lambda x:x+6(5)print(f.__name__)# 查看函数名字   lambda​f1 = lambda x,y,z,:(x,y,z) # :返回值必须是一个数据类型print(f(1,2,3))# 输出一个元组(1,2,3)​print([lambda :5][0]())print((lambda :5)())a = lambda :5a()# 返回 5 5  ​lst = [lambda :i for i in range(5)]print(lst[1]) # 返回的是索引1的函数内存地址print(lst[0]()) # 调用函数,返回值,返回的是i最后一次循环所赋值
    lst = [] # [lambda x:x+1,lambda x:x+1]for i in range(2):    lst.append(lambda x:x+1)print(lst[-1](5)) # 输出6, lambda 5:5+1​lst = [lambda x:x+1 for i in range(5)] # 同上一个print(lst[0](5))# 输出6, lambda 5:5+1 ​tu = (lambda :i for i in range(3)) # 生成器print(next(tu)) # 没调用,就是返回函数地址print(next(tu)()) # 记录上一次查看的位置,输出 1 
    # 面试题拆解:lst = [] for i in range(5):    def func():        return i    lst.append(func) # lst 里面放了5个func函数的地址print(lst[1]) # 输出的是函数地址print(lst[1]()) # 调用函数,返回的是i最后一次循环
    def func():    for i in range(3):  # i = 0 1 2        def foo():      # foo1 foo2 foo3            return i        yield foo       # foo1 foo2 foo3g = func()print(next(g)())  # foo1 返回的是值print(next(g)())  # foo2print(next(g))  # foo3 返回的是地址,没有调用------------------------------------------------------lst = [lambda :i for i in range(3)] # lst中有三个lambda : iprint(lst[0]()) # 取的是最后一次i循环的值-----------------------------------------------------tu = (lambda : i for i in range(3)) # 生成器是把循环的每次值 都存放在一个地址中print(next(tu)())print(next(tu)())  # 每次都是yield 逐个提取print(next(tu)())
    lst = [lambda x:x+5 for i in range(2)]# lst = [lambda x:x+5,lambda x:x+5]print([i(2) for i in lst]) # x = 2,# 返回结果 [7,7]# 以下为分解式子lst = [] # [lambda x:x+5,lambda x:x+5]for i in range(2):    lst.append(lambda x:x+5)new_lst = []for i in lst:    new_lst.append(i(2))print(new_lst)---------------------------------------------------lst = (lambda x:x+5 for i in range(2))print(i(2) for i in lst) # 是一个内存地址print([i(2) for i in lst]) # 是列表的两个值,[7,7]# 以下是分解def func():    for i in range(2):        f = lambda x: x + 5        yield fg = func()lst = []for i in g:    lst.append(i(2))print(lst)
    lst = [lambda x:x*i for i in range(2)]print([i(2) for i in lst])  #[2,2]# 以下为分解式lst = [] # [lambda x:x*i,lambda x:x*i]for i in range(2):    lst.append(lambda x:x*i)# print(i)new_lst = []for em in lst:    new_lst.append(em(2))print(new_lst)
    lst = (lambda x:x*i for i in range(2))# 这是一个生成器print([i(2) for i in lst])  #[0,2] # i为0的时候存储一次,i为1的时候存储一次# 分解def func():    for i in range(2):        f = lambda x:x*i        yield fg = func()lst = []for i in g:    lst.append(i(2))print(lst)
    func = lambda x:[i for i in x]print(func('afafasd'))# 将字符串转换列表['a', 'f', 'a', 'f', 'a', 's', 'd']print(list('afafasd'))

二,内置函数Ⅱ

    • sep :每一个元素之间分割的方法 默认 " "

      print(1,2,3,sep="|")# 1|2|3
    • end : print执行完后的结束语句,默认\n

      print(1,2,3,end="")print(4,5,6,end="") # 1 2 34 5 6
    • file : 文件句柄,默认显示到屏幕

      print(1,2,3,4,file=open("test","w",encoding="utf-8"))
    • flush 刷新

    • sum : 求和,可迭代对象容器,容器的元素必须是数字

      print(sum([1,2,2,1]))print(sum([10,20,30,40],100))# 设置初始值
    • abs : 绝对值

      print(abs(-9))
    • dir : 查看当前对象的所有方法

      print(dir(str))
    • zip : 拉链,当长度不一致时选择最短的进行合并

      lst1 = [1,2,3,5]lst2=["alex","wusir","元"]print(list(zip(lst1,lst2))) # 拉链# 面试题:print(dict(zip(lst1,lst2)))# {1: 'alex', 2: 'wusir', 3: '宝元'}
    • format : 格式转换

      print(format("alex",">20"))  # 右对齐print(format("alex","<20"))  # 左对齐print(format("alex","^20"))  # 居中# 进制转换:# 将十进制转换成二进制 binprint(format(12,"b"))print(format(12,"08b"))​# 将十进制转换成八进制   octprint(format(12,"o"))print(format(12,"08o"))​# 将二进制转换成十进制   digitprint(format(0b11001,"d"))​# 将十进制转换成十六进制   hexprint(format(17,"x"))print(format(17,"08x"))
    • reversed : 反转

      print(list(reversed("alex")))# ['x', 'e', 'l', 'a']print(list(reversed([1,2,3,4,5])))# [5, 4, 3, 2, 1]
    • filter : 过滤,1,指定过滤规则(函数名[函数的内存地址]) 2,要过滤的数据

      lst = [1,2,3,4,5,6]print(list(filter(lambda x:x>1,lst)))# 分解def func(a):    return a>1print(list(filter(func,lst)))-------------------------------------------------# 底层代码lst = [1,2,3,4,5,6]def f(func,args):    new_lst = []    for i in args:        if func(i):            new_lst.append(i)    return new_lstdef func(a):    return a>1print(f(func,lst)) # [2,3,4,5,6]# fiter写法print(list(filter(lambda x:x>2,[1,2,3,4,5])))
      lst = [{'id':1,'name':'alex','age':18},       {'id':1,'name':'wusir','age':17},       {'id':1,'name':'taibai','age':16},]# 筛选年龄大于16岁的print(list(filter(lambda x:x['age']>16,lst)))--------------------------------------------------def func(a):    return a>1print(list(filter(func,[1,2,3,4,5])))print(list(filter(lambda a:a>1,[1,2,3,4,5])))
    • map : 映射函数(将每个元素都执行了执行的方法)

      print([i*8 for i in [1,2,3,4]])#[8, 16, 24, 32]-----------------------------------------------------------lst = []for i in [1,-22,3,4,5,6]:    lst.append(abs(i))lst.sort()print(lst)# [1, 3, 4, 5, 6, 22]------------------------------------------------------------def map(argv,args):    lst = []    num = len(args) if len(args) < len(argv) else len(argv)    for i in range(num):        lst.append(argv[i] + args[i])    return lstprint(map([1,2,3,4],[3,4,5,6,7,8,9,0]))print(list(map(lambda x,y:x+y,[1,2,3,4,5],[33,22,44,55])))# [4, 6, 8, 10]
    • sorted : 排序

      print(sorted([1,2,3,4,5,6],reverse=True))print(sorted([1,2,3,4,5,-6],reverse=True,key=abs))lst = ["三国演义","红楼梦","铁道游击队","西游记","水浒传","活着"]print(sorted(lst,key=len))# [6, 5, 4, 3, 2, 1]# [-6, 5, 4, 3, 2, 1]# ['活着', '红楼梦', '西游记', '水浒传', '三国演义', '铁道游击队']-----------------------------------------------------------------print(sorted([1,-22,3,4,5,6],key=abs))  # key指定排序规则#[1, 3, 4, 5, 6, -22]------------------------------------------------------------------lst = [{"age":19},{"age1":20},{"age2":80},{"age3":10}]print(sorted(lst,key=lambda x:list(x.values()))) # 值排序print(sorted(lst,key=lambda x:list(x.keys()),reverse=True)) # 键排序
    • max : 最大值

    • min : 最小值

      print(max(10,12,13,15,16))print(max([10,12,13,15,-16],key=abs))# 16   -16 
    • reduce : 累计算

      from functools import reduce

      # 从 functools工具箱中拿来了reduce工具from functools import reducedef func(x,y):    return x+yprint(reduce(func,[1,2,3,4,5]))print(reduce(lambda x,y:x+y,[1,2,3,4,5]))# 15 15   

三,闭包

  1. 什么是闭包?

    在嵌套函数内,使用非本层变量和非全局变量就是闭包

  2. 闭包的作用:

    1,保护数据的安全性。2,装饰器

  3. __colsure__查看是是否为闭包

  4. 函数执行完后,函数体内文件自动销毁

    例一:def wrapper():    a = 1    def inner():        print(a)    return innerret = wrapper() # 闭包例二:a = 2def wrapper():    def inner():        print(a)    return innerret = wrapper() # 不是例三:def wrapper(a,b):    def inner():        print(a)        print(b)    inner()a = 1b = 2wrapper(a,b)

转载于:https://www.cnblogs.com/linglichong/p/11385712.html

python_0基础开始_day13相关推荐

  1. 0基础怎么学python10010基础怎么学python_0基础的人如何入门 Python ?Python难么?

    人生苦短,我用Python,为啥这么说,因为我们自动化测试有金句:学完Python,便可上天 ~ 废话不多说,相信很多人都听过之前的Python进入小学课本.Python进入浙江省高考等新闻,有这么多 ...

  2. 0基础怎么学python10010基础怎么学python_0基础学python全套python教程

    C语言要写1000行代码,Java只需要写100行,而Python可能只要20行,所以Python是一种相当高级的语言,如今是Python的世界,花时间学习Python编程语言将是你对未来最好的投资, ...

  3. python_0基础开始_day05

    第五节 一.字典 python的数据结构之一 字典 -- dict 定义:dic = {"key":"dajjlad"} 作用:存储数据,大量,将数据和数据起到 ...

  4. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  5. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作

    上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...

  6. java mybatis基础

    java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...

  7. 【J2SE】学习基础

    Java基础 语法基础 OO Exception Array 基础类 I/O Stream Collection/Generic Thread TCP/UDP GUI Meta Data Regula ...

  8. 【Linux系统】基础总结

    我不太清楚运维部门具体是做什么的,就接触过一点点运维部门! 也就是是知道他们负责管理服务器,管理网络,管理项目部署 偶尔自己需要部署,不得不接触一些linux命令.简单总结一些基础 linux系统发展 ...

  9. 【Java 2 Platform Enterprise Edition】基础

    问题1:为什么java是无关平台? 你之前用C或者C++写的源代码,编译好后,换一种操作系统,可能就执行不了了.因为新的操作系统不识别,你需要修改你的源码,并在新的操作系统上重新编译才能运行,比如Wi ...

最新文章

  1. TCP的三次握手和四次分手
  2. 初学Java——选择
  3. css中flex布局
  4. LightOJ - 1071 Baker Vai(最大费用最大流+拆点)
  5. 安卓桌布显示的dip和px
  6. 2017年苹果公司开发者账号申请-公司邓白氏编码
  7. 华为c8818刷原生Android 6,华为C8818(电信4G)一键救砖教程,轻松刷回官方系统
  8. 视觉SLAM笔记(3) 视觉SLAM框架
  9. 学习前端的未来在哪里?今天详细的谈一下
  10. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·005【设置全局属性globalStyle】
  11. 二十七、oracle 异常
  12. h5项目解决苹果手机iOS系统字体放大问题
  13. 网络渗透资料大全单——漏洞库篇
  14. 多重检验_LSD方法不准确性
  15. Scrum板与Kanban如何抉择?kxqmoznsc板与按照rlooie
  16. 如何通过几何画板学这些定理
  17. 2016年上半年光伏企业沉浮录
  18. 【uniapp微信小程序组件】大转盘抽奖组件
  19. 佐治亚理工学院计算机科学硕士,佐治亚理工学院
  20. Python编程之文本颜色设置

热门文章

  1. 100个python算法超详细讲解:抢30游戏
  2. 2014Nastran及pastran安装教程
  3. 腹直肌整体(02):仰卧提臀抬腿
  4. hdu 4988 Little Pony and Boast Busters ( 树状数组+treap )
  5. blender源代码编译运行
  6. (精华)2020年10月5日 高并发高可用 分层架构(微服务技术中台)
  7. Nginx如何使用FastCGI
  8. 萝卜家园GHOST WIN7 装机版 2013 03
  9. Linux学习——第三部分 文件内容、搜索命令、系统信息
  10. linux解压zip文件命令