py 的 第 12 天
1.函数名的使用,以及第一类对象
2。闭包
3.迭代器
一函数名的运用:
函数名是一个变量,但他是一个特殊的变量,与括号配合可以执行函数的变量。
函数名的内存地址
def 名():
随便什么体
print(名)
结果是个地址
函数名可以赋值给其他变量
def 名():
print(‘s’)
print(名)
a=名
a() 函数调用 名
3.函数名可以当作容器类的元素
def 1()
print(s)
def 2()。。。。。
lst=【1,2,3,。。】
for i in lst
i()
4.函数名可以当作函数的参数
def func(): print("吃了了么")def func2(fn): print("我是func2") fn() # 执⾏行行传递过来的fn print("我是func2")func2(func) # 把函数func当成参数传递给func2的参数fn.传参什么的
5.函数名可以作为函数的返回值
def func_1(): print("这⾥是函数1")def func_2(): print("这里是函数2") print("这里是函数1") return func_2fn = func_2() # 执⾏行行函数1. 函数1返回的是函数2, 这时fn指向的就是上⾯面函数2 fn() # 执⾏行行上⾯面返回的函数
二 闭包
什么事闭包,闭包就是内层函数,对外层函数(非全局)的变量的引用。叫闭包
我们可以使用__closure__来检测函数是否是闭包,使用函数名.__closure__返回cell就是闭包。返回None就不是闭包
多层嵌套就是一层一层返回没有打印就不返回,11天写的先可最左面的来,没有的打印的话
由它我们可以引出闭包的好处。由于我们在外界可以访问内部函数。那这个时候内部函数访问的时间和时机就不一定了,因为在外部,我可以选择在任意的时间去访问内部函数。这个时候。想一想。我们之前说过,如果一个函数执行完毕,则这个函数中的变量以及局部命名空间中的内部都将会被销毁,在闭包中,如果变量被销毁了,那内部函数将不能正常执行,所以python规定。如果你在内部函数中访问了外层函数中的变量。那么这个变量将不会消亡,将会常驻在内存中,也就是说,使用闭包,可以保证外层函数中的变量在内存中常驻,还有一个好处就是1次常驻,万次使用
三迭代器
我们之前一直在用可迭代对象,进行迭代操作,那么到底什么是可迭代对象。本小节主要讨论可迭代对象。首先我们先回顾一下目前我们所熟知的可迭代对象有哪些:
str, list, tuple, dict, set.为什么他们都是可迭代对象呢,因为他们遵循了迭代协议 这个协议我们可以用dir看一下
print(dir(XXX)) 如果里面有__iter__那么他就是一个可迭代对象 这是查看是否为可迭代对象的第一种方法,我们还可以通过isinstence()函数,来看一个对象是什么类型
我们用__next__()来获取一个迭代器中的元素,我们之前for的工作原理也是这样
lst = [1,2,3] lst_iter = lst.__iter__() while True:
try:i = lst_iter.__next__()print(i)
except StopIteration:break
Iterable: 可迭代对象. 内部包含__iter__()函数
Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().迭代器的特点:
1. 节省内存.
2. 惰性机制
3. 不能反复, 只能向下执⾏行行.
转载于:https://www.cnblogs.com/Mrszhao/p/9477054.html
py 的 第 12 天相关推荐
- java获取cpu核数_vn.py社区精选12 - 策略参数优化,你需要懂得压榨CPU!
作者:张国平 万恶的全局锁 基于物理上的限制,各CPU厂商在核心频率上的比赛已经被多核所取代.为了更有效的利用多核处理器的性能,多线程的编程方式被越来越多地应用到了各类程序中,而随之带来的则是线程间 ...
- python web py入门(12)- 实现用户登录论坛
前面已经介绍了怎么注册用户,当用户注册成功之后,就需要使用帐号进行登录,这个登录过程是怎么样实现的呢? 首先是要有一个登录的连接,通过首页点击登录,就会进入登录的URL连接:http://127.0. ...
- zabbix调用sendsms.py脚本,发送短信
zabbix调用python发送短信的操作方法和配置邮件报警类似.过程参考zabbix配置部分. 下面是python的脚本: [root@zabbix01 alertscripts]# cat sen ...
- 没有时间进行测试? —有关在Python中对AWS Lambda进行单元测试的12条建议
AWS Lambda -无服务器- Python - DEVOPS (AWS Lambda - serverless - Python - DEVOPS) Much like software app ...
- Python取出列表相应值的位置(表处理)
#需求 在一个列表中,取出相应值的位置 方法1: #脚本示例 [root@localhost opt]# cat list.py #!/usr/bin/env python #_*_ coding:u ...
- discard connection丢失数据_python kafka 生产者发送数据的三种方式
python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...
- 硬核!Python 四种变量的代码对象和反汇编分析
作者 | 大奎 整理 | 阳哥 来源丨Python数据之道 在Python基础的学习过程中,对变量和参数的理解有助于我们从更基础层面了解Python语言的运行.在这个过程中,还是有不少冷门和细节的地方 ...
- 遍历百万级Redis的键值的大结局
背景 上次改完利用条件变量的形式来进行rdbtool和socket接受的数据联合分析,我再想能不能通过协程来实现避免条件变量这种调用系统调用的方式,当然如果算一下因为每一次接受的socket的数据都尽 ...
- Python源码学习:Python类机制分析-用户自定义类
Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> 上一文,分析了Python在启动初始化时,对内置类的一个基本的初始化流程,本文就简析 ...
- 基于opencv实现模块化图像处理管道
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在这篇文章中,我们将学习如何为图像处理实现一个简单的模块化管道,我 ...
最新文章
- opencv 修改图像数值_opencv 修改图像数值_Python中使用OpenCV读取像素
- JavaScript学习历程和心得
- Swift版iOS游戏框架Sprite Kit基础教程下册
- 动词ing基本用法_百因必有果,你的“福利”就是我第61篇:过去进行时构成及用法...
- 会ps会php,学会ps可以做什么
- 第一篇:SpringCloud 构建微服务系统之服务注册和发现(consul)
- Oracle EBS数据定义移植工具:FNDLOAD
- 本地缓存之Guava简单使用
- lambda的java_一分钟搞明白java8中的lambda
- 1006.复制打开他人的clion工程错误
- 数据表字段不存在 php,laravel 使用原生表达式增加原数据表不存在的字段
- Java怎样获取Content-Type的文件类型Mime Type
- sublime text3 中 python3编译出现中文乱码解决方法
- c语言结构体多次调用错误,C语言在使用中遇到了一个结构体赋值失败的问题?...
- Android实现思维导图功能,Android打造思维导图
- 利用openFrameWork、ofxFaceTrack制作的虚拟眼镜加载系统
- 排序算法7——图解快速排序(两种主元选择方法)以及CUTOFF时间测试
- 爬虫之-bilibili视频下载-下载链接获取
- 一款适合减压放松的小游戏
- R语言logistic回归的细节解读