函数名的应用 闭包 迭代器

一. 函数名的应用

  1.可以互相赋值

  2.函数名就是变量

def func():
    print("我是一个小小的函数")
a = func
print(a)
func()
a()
func = 3
print(func)

  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("我是func")
a = 10
def inner():
print("我是inner")
return inner
ret = func()
print(ret)
ret()

5.可以作为参数传递给函数
def my():
print("我是my")
def proxy(fn):
print("在处理之前")
fn()
print("在处理之后")proxy(my)

二.闭包(可以保护变量,还可以让变量常驻内存)
 在内部函数使用外部函数的变量.
        def outer():
            a = 10 # 很耗时
            def inner():
                print(a)
            return inner
        outer()()这种很费时,每次都要加载内存
        ret = outer()
        ret()这种为常驻内存,不需要每次加载
三. 迭代器
  _iter_() 可迭代对象,获取迭代器
  _next_()+_iter_ 运行迭代器
  特点:1.惰性机制 2.只能向下 3.节省内存
  for 循环的内部就是迭代器
  lst = [1,2,4]
  it = lst._iter_() 获取迭代器
  while 1:
    try:
       it._next_()
    except StopIteration:
      break

  Iterable: 可迭代的
  Iterator: 迭代器



posted @ 2018-08-13 17:59  年少有为  阅读(121)  评论(0编辑  收藏  举报