1. 函数名的使⽤以及第一类对象

函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量.

函数名就是变量名, 函数名存储的是函数的内存地址

函数名可以赋值给其他变量

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

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

函数名可以作为函数的返回值

  1. 闭包

闭包就是内层函数, 对外层函数(非全局)的变量的引⽤. 叫闭包

可以使用__closure__来检测函数是否是闭包. 使⽤函数名.__closure__返回cell就是

闭包. 返回None就不是闭包

作用:

1. 保护变量不受侵害(javascript)

2. 让一个变量常驻内存迭代器

  1. 迭代器

s = "我的哈哈哈"

print(dir(s)) # 可以打印对象中的方法和函数

print(dir(str)) # 查看str能够执行的操作. 内部的方法

print(dir(tuple))   …

print(dir(list))

print(dir(set))

print(dir(dict))

寻找__iter__ 如果能找到. 那么这个类的对象就是⼀个可迭代对象.

dir() 查看变量能够执行的方法(函数)

Iterator: 迭代器,     __iter__(), __next__()

Iterable: 可迭代的,   __iter__()

迭代器本身是可迭代的

for循环的流程:

it = lst.__iter__()# 获取新的迭代器

while 1:

try:

el = it.__next__()

for循环的循环体

except StopIteration:

break

从迭代器中获取数据的唯一方法: __next__()

# 三个特点:

#   1. 节省内存 (生成器)

#   2. 惰性机制, 必须用__next__()来获取数据

#   3. 只能往前. 不能后退

#  如何判断一个数据是否是可迭代对象

#  1. dir() ->  __iter__  可迭代的

#     dir() -> __next__  迭代器

# lst = ["秦始皇", "汉武帝", "孝文帝", "隋炀帝", "李世民"]

# print("__iter__" in dir(lst)) # True 可迭代的

# print("__next__" in dir(lst)) # False 不是迭代器

# it = lst.__iter__() # 迭代器

# print("__iter__" in dir(it)) # True  迭代器本身就是可迭代的

# print("__next__" in dir(it)) # True

2.

# collections 关于集合类的相关操作

# Iterable : 可迭代的

# Iterator : 迭代器

from collections import Iterable, Iterator

print(isinstance(lst, Iterable)) # True

print(isinstance(lst, Iterator)) # False

print(isinstance({1,2,3}, Iterable)) # True, 可以使用for循环

day11迭代器 and 闭包的更多相关文章

  1. python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解

    python中"生成器"."迭代器"."闭包"."装饰器"的深入理解 一.生成器 1.生成器定义:在python中,一边 ...

  2. python 生成器,迭代器,闭包,装饰器

    1.生成器,迭代器,闭包,装饰器的优点 生成器就是一类特殊的迭代器 迭代器的优点也即生成器的优点: 1.节约内存.python在使用生成器时对延迟操作提供了支持. 2.迭代到下一次的调用时,所使用的参 ...

  3. python语法生成器、迭代器、闭包、装饰器总结

    1.生成器 生成器的创建方法: (1)通过列表生成式创建 可以通过将列表生成式的[]改成() eg: # 列表生成式 L = [ x*2 for x in range(5)] # L = [0, 2, ...

  4. day11 第一类对象 闭包 迭代器

    今日主要内容: 1 . 第一类对象 -->函数名--> 变量名 2. 闭包 -->函数的嵌套 3. 迭代器 --> 固定的思想 for 循环 第一类对象  : 函数对象介意向变 ...

  5. python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解

    一.生成器 1.什么是生成器? 在python中,一边循环一边计算的机制,称为生成器:generator. 2.生成器有什么优点? 1.节约内存.python在使用生成器时对延迟操作提供了支持.所谓延 ...

  6. Python四大神兽(迭代器&生成器&闭包&装饰器)

    一.迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不 ...

  7. python中的生成器、迭代器、闭包、装饰器

    迭代器 迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 可迭代对象 以直接作用于 for ...

  8. python全栈开发-Day11 迭代器、生成器、面向过程编程

    一. 迭代器 一 .迭代的概念 迭代器即迭代的工具,那什么是迭代呢? 迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而 ...

  9. day11.迭代器与生成器

    一.迭代器 1.迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次 ...

随机推荐

  1. C# WinForm窗体及其控件自适应各种屏幕分辨率

    C# WinForm窗体及其控件自适应各种屏幕分辨率 一.说明  我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置 ...

  2. ASP.NET错误处理的方式(二)

    要创建页中的全局处理程序,请创建 Page_Error 事件的处理程序.要创建应用程序范围的错误处理程序,请在 Global.asax 文件中将代码添加到 Application_Error 方法.只 ...

  3. 二、python小功能记录——监听鼠标事件

    1.原文链接 #-*- coding:utf-8 -*- from pynput.mouse import Button, Controller ## ======================== ...

  4. Linux(CentOS)网卡的基本设置

    临时设置 修改IP地址: ifconfig eth0 10.60.45.205 mask 255.255.255.0 修改网关地址 route add default gw 10.60.45.1 de ...

  5. Python学习---Django路由系统【all】

    Django URL (路由系统) Django URL (路由系统): URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映 ...

  6. 25个最佳的SSH命令

    参考文献地址(SSH原理与运用(一):远程登录): http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 参考文献地址(SSH原理与 ...

  7. 【心得体会】我考完MOS我明白了…

    [心得体会]我考完MOS我明白了… 原创 2017-11-10 MSP-李桑榆 MSPrecious成长荟 MOS备考 这篇文章写给还没有考或者准备考MOS的同学 网上有很多介绍MOS考试的 http ...

  8. php中的雷同方法

    php中又很多的可选语法,比如echo 使用echo()和print()都可以输出文本,他们的不同之处在于print()函数有一个返回值1代表输出成功,0代表输出失败,二echo()就没有返回值了. ...

  9. HTTP协议图--HTTP 报文首部之请求行、状态行

    1.请求行 举个栗子,下面是一个 HTTP 请求的报文: GET /index.htm HTTP/1.1 Host: sample.com 其中,下面的这行就是请求行, GET /index.htm ...

  10. Eclipse和JDK的安装配置

    工欲善其事,必先利其器.最近开始学习Java语言,必不可少的要先安装一个IDE,我选择了eclipse,下面我们讲讲如何来安装及配置. Step1:工具的下载 这里我们需要用到三个工具安装包,JDK. ...