迭代器、生成器、闭包
***********************************************2018.01.10***********************************************************
————————————————迭代器———————————————————————
什么是迭代器?
可用next()函数调用的就是迭代器
生成器一定是迭代器
from collections import Iterable
isinstance(对象,Iterable)判断一个对象是否具有可迭代性
iter(对象)可将可迭代对象转换成迭代器
————————————————闭包———————————————————————
闭包函数必须满足两个条件:1.函数内部定义的函数 2.包含对外部作用域而非全局作用域的引用
外部函数返回内部函数的引用
用例:创建多个方程式
def test(a,b):
def test_in(x):
print(a*x+b)
return test_in
line1=test(1,1)#括号中的参数赋给a,b
line2=test(1,2)
line3=test(4,5)
#调用line1,取一个坐标点
line(10)#括号中的参数赋给x
————————————————装饰器——————————————————————
在不改变原函数的基础上,让原函数实现另外的功能,就是装饰器
装饰器:外部函数传入被装饰函数名,内部函数返回装饰函数名。
特点:1.不修改被装饰函数的调用方式 2.不修改被装饰函数的源代码
多重装饰器的顺序是由近到远
想对多参数函数进行装饰,装饰器闭包内函数需要相同数量的参数。使用*args,**args
def w1(func):
def inner():
func()
return inner
@w1#语法糖
def f1():
print('****F1*****)
def f2():
print('*****f2******)
posted on 2018-01-11 08:17 Jerry_Zhao 阅读(116) 评论(0) 编辑 收藏 举报