day11 第一类对象 闭包 迭代器
今日主要内容:
1 . 第一类对象 -->函数名--> 变量名
2. 闭包 -->函数的嵌套
3. 迭代器 --> 固定的思想 for 循环
第一类对象 :
函数对象介意向变量一样进行赋值
还可以作为列表的元素进行使用
还可以作为返回值返回
可以作为参数进行传参
闭包 :
内层函数对外层函数的变量的使用
闭包 的优点:
1.可以保护函数不被外界侵害
2 . 让一个变量常驻内存
如何通过函数查看一个闭包:
__closure__: 有东西就是闭包,没东西就不是闭包
迭代器 :
如果一个函数中有__iter__函数表示这个数据是可迭代的
dir(数据):返回这个数据可以执行所有的操作
判断迭代器和可迭代对象的方案(野路子):
如果一个函数内部只有__iters__这就是只是可迭代对象
如果 一个函数内部 既有__iters__还有 __next__ 这个就是迭代器
判断迭代器和可迭代对象的方案(官方)
form collections import Iterable , Iterator
isinstance(对象 , Iterable)是否是可迭代的
isinstance(对象,Iterator)是否是迭代器
模拟for 循环
lst=[]
首先先拿迭代器
it=lst.__iter__()
while 1:
try:
it.__next__()
except StopIteration:
break
特点:
1. 节省内存(主要食是生成器)
2.惰性机制
3.只能向前,不能向后
作用: 统一了各种数据类型的遍历(int ,bool,除外)
day11 第一类对象 闭包 迭代器的更多相关文章
- Python_Mix*函数名的使用以及第一类对象,闭包,迭代器,for循环的内部机制
一:函数名的应用(第一类对象) 函数名的命名规范和变量是一样的,函数名其实就是变量名, 0)函数名可以赋值给其他变量 def func(): #定义一个名为func的函数 print('my ange ...
- python 第一类对象 闭包 迭代器
########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...
- python第一类对象,闭包,迭代器
一.第一类对象 第一类对象 -> 函数名 -> 变量名 1.特征: 函数对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 还可以作为返回值返回 还可 ...
- python 函数名的应用(第一类对象),闭包,迭代器
1.函数名的应用(第一类对象) 函数名的命名规范和变量是一样的 函数名其实就是变量名 可以作为列表中的元素进行储存. def func1(): pass def func2(): pass lst = ...
- 巨蟒python全栈开发-第11天 第一类对象 闭包 迭代器
一.今日主要内容总览(重点) 1.第一类对象->函数名=>变量名 (1)函数对象可以像变量一样进行赋值 (2)还可以作为列表的元素进行使用 (3)还可以作为返回值返回 (4)还可以作为参数 ...
- 13 Python之第一类对象闭包和迭代器
def fn(): print("我叫fn") fn() print(fn)## <function fn at 0x0000000001D12E18> f ...
- python基础(13):函数名的使用、第一类对象、闭包、迭代器
1. 函数名的运用 函数名是⼀个变量,但它是⼀个特殊的变量,与括号配合可以执⾏函数的变量. 1.1 函数名的内存地址 def func(): print("呵呵") print(f ...
- python之函数闭包、可迭代对象和迭代器
一.函数名的应用 # 1,函数名就是函数的内存地址,而函数名()则是运行这个函数. def func(): return print(func) # 返回一个地址 # 2,函数名可以作为变量. def ...
- 函数的第一类对象,f格式化,迭代器以及递归
函数名的第一类对象及使用,f格式化以及迭代器 1.函数的第一类对象 第一类对象 --特殊点 1.可以当作值被赋值给变量 def func(): print(1) a = func a() 2.可以当作 ...
随机推荐
- P493 brass
实现多态共有继承的两种方法 1 在派生类中重新定义基类的方法 2 使用虚方法 P493程序清单13.7使用的方法为在派生类中重新定义基类的方法 brass.h #ifndef BRASS_H #def ...
- ubuntu下安装anaconda
1. 到官网http://continuum.io/downloads下载anaconda. 选择linux64-bit-python2.7 2. 安装anaconda,在终端输入:cd ~/Do ...
- python中socket模块详解
socket模块简介 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket通常被叫做"套接字",用于描述IP地址和端口,是一个通信 ...
- json包
1.官网下载 2.pom文件下载: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId&g ...
- Getting started with Processing 第九章总结
函数 函数的力量在于模块化. 范例 掷骰子 rollDice()函数 rollDice(int numSides){int d = 1+int(random(numSides));println(&q ...
- lombok插件:Data自动get/set方法, Slf4j实现Logger的调用
lombok插件:Data自动get/set方法, Slf4j实现Logger的调用 lombok.Data import lombok.Data; import org.hibernate.anno ...
- 使用validate()方法进行输入校验 --Struts2框架
服务器端的输入校验包含两种方式:硬编码方式和配置文件方式.本文演示硬编码方式中使用validate()方法进行输入校验. 1.项目目录结构: 2.项目核心代码: BookAction.java: pu ...
- LeetCode--235--二叉树的最近公共祖先
问题描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的 ...
- java压缩流
java压缩流是为了减少传输时的数据量,可以将文件压缩成ZIP.JAR.GZIP等文件格式.
- leetcode-algorithms-29 Divide Two Integers
leetcode-algorithms-29 Divide Two Integers Given two integers dividend and divisor, divide two integ ...