函数名的使用,闭包,迭代器

函数名的使用:

1,函数名可以当做值赋值给变量

2,函数名可以当参数去传递,传递函数名的时候,如说+()就是传递这个函数的返回值

3,函数名可以当做返回值被返回,返回值不能加括号,接力要一层一层传递,中间断了就传不到

def foo():
    print(2)
def func(msg):
    print(1)
    return msg()
print(func(fool))

4,函数名可以当做一个元素存放在容器中

5,查看函数内存地址print(函数名)

def func():
    
    pass
def func2(msg):
    print(msg)

func(func())

for i in lst:    遍历

  i()        调用

闭包

使用函数__closure__获取的内容不是None就是闭包,嵌套函数并且内部函数使用外部变量(非全局变量)就是闭包

好处:保护这个变量不被外界修改

         生命周期延长

    节省开辟空间和销毁空间的时间差

应用场景: import requests

迭代器

遵守迭代协议:

  可以被for循环的就是可迭代对象__iter__可迭代

  只有__iter__方法的就是可迭代对象

新建一个迭代器,具有__iter__和__next__方法

迭代器不能回退,是惰性的,一次性

lst=[1,2,3,4,5]
l=lst.__next__()      创建一个迭代器
print(l.__next__())   执行   1
...2
...3
...4
...5

for 循环机制

lst=[1,2,3,4,5]
l=lst.__iter__()
while True:
    try:     异常捕获
        print(l.__next__())
        except stopIteration
            break

查看是否是可迭代对象

from collections import Iterable,Iterator
lst=[1,2,3,4]
li=lst.__iter__()
print(isinstance([1,2,3,4],Tterator))
原文地址:https://www.cnblogs.com/weize111/p/10251232.html