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()

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

2018.8.10   python中的迭代器

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

2018.8.10   python中的迭代器

闭包的好处:

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

2、可以让变量常驻内存

三、迭代器

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

野路子:

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

官方方法:

2018.8.10   python中的迭代器

使用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、不能反复,只能向下执行

上一篇:grunt对象之api


下一篇:Innobackupx工具命令简单解析