内容大纲

  一:  函数的运行

  二:  闭包

  三:  迭代器

  四:  生成器

  五:  列表生成器

  六:  列表推导式

  七:  生成器表达式 

  八:  匿名函数

一:  函数的运行

  1:函数名是一个特殊变量

  

 def func():
#     print(666)
# print(func)

  2:函数名可以当做变量进行赋值

# f1 = 2
# f2 = f1
# f3 = f2
# print(f3)# def func():
#     print(666)
# func1 = func
# f2 = func1
# f3 = f2
# # print(f3)
# f3()

  3:函数名可以当做容器类的元素

# def func1():
#     print('in func1')
#
#
# def func2():
#     print('in func2')
#
#
# def func3():
#     print('in func3')
#
# l1 = [func1, func2, func3]
# for i in l1:
#     i()

  4:函数名可以当做函数的参数

# def func(x):
#     # print(x)
#     x()
#     print('in func')
#
# def func1():
#     print('in func1')
#
# func(func1)

  5:函数名可以当做返回值

def func(x):  # x ---> func1return x  # func1def func1():print('in func1')# ret = func(func1)  # func1
# ret()
func(func1)()

二:闭包

  >1    

    1:内层函数对外层函数(非全局)变量的引用

    2:闭包只存在内部函数中

    3:函数都要逐层返回,最终返回给最外层

  >2

# def func(n):
#     n = name
#     def inner():
#         print(n)
#     return inner
# name = '太白'
# f = func(name)
# print(f.__closure__[0].cell_contents)

 

  >3

# def func(step):
#     num = 1
#     num += step
#     print(num)
# j = 0
# while j < 5:
#     func(3)
#     j += 1# 闭包:解释器执行程序时,如果遇到函数,随着函数的结束而关闭临时名称空间,但是!!!
# 如果遇到闭包,有一个机制:那么闭包的空间不会随着函数的结束而关闭。

三:迭代器

  >1 可迭代带对象

    # 内部含有__iter__方法的就是可迭代对象,遵循可迭代协议。   

  >2 迭代器

    # 迭代器:内部含有'__iter__'并且含有'__next__'方法的就是迭代器,遵循迭代器协议。

  >迭代器的作用

    # 1,节省内存.
    # 2,惰性机制.
    # 3, 一条路走到黑,不走回头路.

四:生成器

  >1

    # 生成器本质就是迭代器,生成器是自己用python代码写的迭代器。

  

# 生产衣服# def cloth():
#     for i in range(5001):
#         print('我写的代码没有bug 衣服%s号' % i)
# cloth()
#
# def cloth2():
#     for i in range(5001):
#         yield  '有志青年 衣服%s号' % i           #用的时候才调用
#
# genor = cloth2()
# for i in range(100):
#     print(next(genor))
#
# for i in range(50):
#     print(next(genor))

  > send    next

   1: send   ,  有返回值,返回给上一个迭代器. 如果为开头则报错

#
# def func():
#     count = yield 666
#     print(count)
#     num = yield '三包春药'
#     print(num)
#     yield '太白金星'
#     n1 = yield '小虎'
#     print(n1)
# genor = func()
# print(next(genor))
# print(next(genor))
# send不仅能对应yield取值,而且可以给上一个yield发送一个值
# print(genor.send(None))
# print(genor.send('alex'))
# print(genor.send('111'))
# print(genor.send('111'))
# print(genor.send('111'))
# 第一次取值能否用send传参? 不能
# 最后一个yield 永远也得不到send的传的值

  2:yeild from    把列表变成迭代器

# def func():
#     lst = ['明亮', '容先', '王子', '万赵']
#     yield from lst
# genor = func()
print(genor.__next__())
 

 五:列表推导式

# 列表推导式:用一行代码构建简单,较复杂的列表。
# 减少代码量,装逼。
#三种:
# 1,循环模式。 [变量(加工后的变量) for 变量 in iterable ]
# print([i for i in range(1,101)])
# 构建一个列表:['python1期', 'python2期',....'python25期']
# l1 = ['python%s期' %i for i in range(1,26)]
# print(l1)# 2 ,三元模式(循环模式)
# 构建一个列表:列表里面的元素是1~20,但是能被3整除元素替换成*。
# ret = '*' if 3>2 else 1
# print(ret)
# print(['*' if i % 3 == 0 else i for i in range(1,21)])# 3,筛选模式  [变量(加工后的变量) for 变量 in iterable if 条件]
# 三十以内所有的偶数留到列表中
# print([i for i in range(1,31) if i % 2 == 0])

六: 匿名函数

func2 = lambda x,y: x + y
print(func2(3,4))# 写一个匿名函数:需要三个数字参数,返回值为三个数相乘

  

转载于:https://www.cnblogs.com/baili-luoyun/p/10217122.html

总结day11 ----函数的学习(2)相关推荐

  1. SQL 2005新增的几个函数之学习

    sqlserver 2005新增函数学习(转载) 原文:SQL 2005新增的几个函数之学习 今天学习了sql server 2005新增的几个函数,分别是row_number(),rank,DENS ...

  2. ES6基础(var let const 箭头函数)-学习笔记

    文章目录 ES6基础(var let const 箭头函数)- 学习笔记 定义:var let const 箭头函数 数据结构 set map ES6基础(var let const 箭头函数)- 学 ...

  3. Matlab函数功能学习记录(1)

    初学乍练之作 优秀的Matlab讲解: 博客园 Matlab - 基础知识 csdn matlab库函数大全 my Matlab函数功能学习记录(2) Matlab特殊字符.命令和函数 Matlab实 ...

  4. print函数的学习与总结

    print函数的学习与总结 1 1. 单引号与双引号的区别 1.相同作用是当打印文字与字母及特殊符号时,使用单引号或双引号打印都可以. (1)单引号 print('哪吒') $python main. ...

  5. 轩小陌的Python笔记-day11 函数进阶

    day11 函数进阶 目标:掌握函数相关易错点 & 项目开发必备技能. 今日概要: 参数的补充 函数名到底是什么? 返回值和print,傻傻分不清楚. 函数的作用域 1.参数的补充 在函数基础 ...

  6. R语言与函数估计学习笔记(函数模型的参数估计)

    R语言与函数估计学习笔记 毫无疑问,函数估计是一个比参数估计要复杂得多的问题,当然也是一个有趣的多的问题.这个问题在模型未知的实验设计的建模中十分的常见,也是我正在学习的内容的一部分. 关于函数估计我 ...

  7. c语言函数库学习~sscanf~格式化输入

    ---恢复内容开始--- 今天算是被打击到了吧,由郑轻的acm老师来我学院指导安排了个现场的小比赛,,俺们居然有还是输给一个大一的新手,,哎,情何以堪,,所以还是要重视下基础编程能力的培训,现在嘛我就 ...

  8. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX

    Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...

  9. go 变量在其中一个函数中赋值 另一个函数_go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包...

    本篇文章是 Go 语言学习笔记之函数式编程系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: 闭包 空谈误国,实干兴邦,以具体代码示例为基础讲解什么是闭包以及为什么需要闭包 ...

最新文章

  1. AMD 再次抨击基准测试工具 SYSMark 偏袒英特尔
  2. 在拓扑图上做标准ACL和扩展ACL(期末考试)
  3. Python学习教程(Python学习路线):第12天—正则表达式
  4. Serial.println()和Serial.print() (Arduino编程)
  5. 【自适应(盲)均衡1】LMMSE、Godard、CMA常模、Sato等算法在信道均衡中的应用理论与MATLAB仿真
  6. matlab2010a连接mysql_MATLAB2010a+OpenCV2.3.1+VS2010运行TLD
  7. mysql导出表结构word文档_如何将Word文档导出为长图片格式
  8. Javascript特效:简单的匀速平移动画
  9. 软件测试行业前景,人才稀缺
  10. WIN10网络打印机-打印失败解决方案
  11. 计算机一级期末考试题,2016年计算机一级考试题库(含答案)
  12. powerbuilder操作excel命令大全
  13. HDMI切换器的各种版本能不能互通?
  14. 关于配眼镜的一点认识
  15. web前端开发需要学习什么?需要哪些开发工具?
  16. 《从0开始学微服务》模块一:入门微服务的学习笔记
  17. matlab习题及答案,MATLAB习题及答案
  18. 1602液晶显示摄氏度
  19. Go学习笔记 -- 方法
  20. 百度站长俱乐部SEO提问收集-3

热门文章

  1. AndroidStudio_ListView
  2. MySQL 5.7最新版本的2个bug
  3. 碉堡了!3款html5 svg 动画神作
  4. HDU OJ Super Jumping! Jumping! Jumping!
  5. 使用Windows命令行启动服务
  6. R12客户表结构分析
  7. sql经验 convert函数转换日期
  8. 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
  9. Centos下源码安装golang
  10. OVS DPDK--数据结构关系(七)