2018.8.10 python中的迭代器
Posted 中杯可乐不加冰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.8.10 python中的迭代器相关的知识,希望对你有一定的参考价值。
主要内容:
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中的迭代器的主要内容,如果未能解决你的问题,请参考以下文章