主要内容:

1、函数名的使用

2、闭包

3、迭代器

一、函数名的运用

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

1、函数名的内存地址

def func():
print('呵呵')
print(func)
#结果
# <function func at 0x000000000215D7B8>

2、函数名可以赋值给其它变量

def func():
print('呵呵')
print(func)
a = func
a()

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

 def func1():
print("我是1")
def func2():
print("我是2")
def func3():
print("我是3") lst = [func1, func2, func3]
for el in lst:
el()

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

def func():
print('吃了么')
def func2(fn):
print('我是func2')
fn()
print('我是func2')
func2(func)

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

def func_1():
print('这里是函数1')
def func_2():
print('这里是函数2')
print('这里是函数1')
return func_2
fn = func_1()
fn()

二、闭包

闭包就是内层函数对外层函数(非全局)的变量的引用。可以使用__closure__来检测函数是否闭包,返回cell就是闭包,返回None就不是闭包。

def func1():
name = 'alex'
def func2():
print(name)
func2()
print(func2.__closure__)
func1()

在函数外面调用内部函数:

如果是多层嵌套,需要一层一层的往外返回:

闭包的好处:

1、保护你的变量不受外部影响

2、可以让变量常驻内存

三、迭代器

查看一个对象是否可迭代方法:

野路子:

l = [1,2,3,4]
it = l.__iter__()
print('__iter__'in dir(it))
print('__next__'in dir(it))

官方方法:

使用while循环+迭代器来模拟for循环:

lst = ['哈哈','嘻嘻','啦啦','吼吼']
it = lst.__iter__()
while 1:
try:
el = it.__next__()
print(el)
except StopIteration:
break

总结:

Iterable:可迭代对象,内部包含__iter__()函数

Iterator:迭代器,内部包含__iter__()同时包含__next__()。

迭代器的特点:

1、节省内存

2、惰性机制

3、不能反复,只能向下执行

2018.8.10 python中的迭代器的更多相关文章

  1. python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器

    1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 == 比较的是两个对象的内容是否相等 2. with语句时用于对try except finally 的优 ...

  2. Python中的迭代器和生成器

    本文以实例详解了python的迭代器与生成器,具体如下所示: 1. 迭代器概述: 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后 ...

  3. python中的迭代器 生成器 装饰器

    什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,_ ...

  4. python中的迭代器和生成器学习笔记总结

    生成器就是一个在行为上和迭代器非常类似的对象.   是个对象! 迭代,顾名思意就是不停的代换的意思,迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次“迭代”,而 ...

  5. Python中生成器,迭代器,以及一些常用的内置函数.

    知识点总结 生成器 生成器的本质就是迭代器. 迭代器:Python中提供的已经写好的工具或者通过数据转化得来的. 生成器:需要我们自己用Python代码构建的 创建生成器的三种方法: 通过生成器函数 ...

  6. 2018.8.13 python中生成器和生成器表达式

    主要内容: 1.生成器和生成器函数 2.列表推导式 一.生成器 生成器是指就是迭代器,在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也 ...

  7. 【Python】解析Python中的迭代器

    目录结构: contents structure [-] Iterator VS Iterable Itertools 模块 生成器(Generator) 在开始文章之前,先贴上一张Iterable. ...

  8. 终于理解Python中的迭代器和生成器了!

    迭代器和生成器 目录 迭代器和生成器 可迭代对象和迭代器 基础概念 判断 for循环本质 不想用for循环迭代了,如何使用迭代器? 列表推导式 生成器Generator 概念 如何实现和使用? 生成器 ...

  9. 10.python中的序列

    本来说完字符串.数字.布尔值之后,应该要继续讲元祖.列表之类的.但是元祖和列表都属于序列,所以有必要先讲讲python的序列是什么. 首先,序列是是Python中最基本的数据结构.序列中的每个元素都分 ...

随机推荐

  1. 一个有意思的js块作用域问题

    1.问题 首先把问题放出来,昨天看了一个掘友发的一个问题,然后跟我同事一起研究了一下,没找出来是为什么,然后我回来一直在想为什么,然后各种找资料研究,从各个方面找为什么,比如js上下文,作用域,js垃 ...

  2. 【SQL server】SQL Server 触发器

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

  3. 玩转 SpringBoot 2 之整合 JWT 下篇

    前言 在<玩转 SpringBoot 2 之整合 JWT 上篇> 中介绍了关于 JWT 相关概念和JWT 基本使用的操作方式.本文为 SpringBoot 整合 JWT 的下篇,通过解决 ...

  4. OpenGl 导入读取多个3D模型 并且添加鼠标控制移动旋转

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11627508.html 前言: 因为接下来的项目需求是要读取多个3D模型,并且移动拼接,那么我 ...

  5. php echo/print 输出函数比较

    一.两者区别 echo 支持多个字符串输出,用逗号(,)隔开,print只支持一个字符串输出 echo 输出速度比print快 echo 没有返回值,print返回值总是1   二.使用 echo e ...

  6. ELK 学习笔记之 elasticsearch 版本控制

    版本控制: elasticsearch 版本控制: 内部版本控制 外部版本控制 内部版本控制: 内部版本会检查你提供的版本值和文档的版本值是否一致,如果不一致就报错,一致则可以更新. curl -XP ...

  7. .netcore 开发的 iNeuOS 物联网平台部署在 Ubuntu 操作系统,无缝跨平台。助力《2019 中国.NET 开发者峰会》。

    2019 中国.NET 开发者峰会正式启动 目       录 1.      概述... 2 2.      准备运行程序包... 2 3.      安装.netcore. 3 4.      安 ...

  8. Spring系列(六):Spring事务源码解析

    一.事务概述 1.1 什么是事务 事务是一组原子性的SQL查询,或者说是一个独立的工作单元.要么全部执行,要么全部不执行. 1.2 事务的特性(ACID) ①原子性(atomicity) 一个事务必须 ...

  9. node与mysql的相互使用————node+mysql

    node与mysql的相互使用----node+mysql 为什么选node???因为我是个前端. 为什么选mysql???因为成熟,稳定,听说容易学. 一.mysql数据库: mysql下载和使用我 ...

  10. 02-21 决策树ID3算法

    目录 决策树ID3算法 一.决策树ID3算法学习目标 二.决策树引入 三.决策树ID3算法详解 3.1 if-else和决策树 3.2 信息增益 四.决策树ID3算法流程 4.1 输入 4.2 输出 ...