字符串,元组,字典,集合,列表,生成器yield都是可迭代的,即可以使用for x in temp来打印。
from collections import Iterable
isinstance([], Iterable)可以判断一个对象是否可以迭代。
对象是可迭代的,但不一定是迭代器。
isinstance([], Iterator)判断一个对象是不是迭代器。
iter()可以把Iterable转化为Iterator
闭包指的是在一个A函数中嵌套一个B函数并且B函数使用了A函数的变量。
只要执行到@代码就会自动进行装饰,而不是调用时装饰。
如果函数有参数,则在闭包的时候就需要写参数。
def test(*args, **kwargs)不定长参数传递,args中以元组保存,kwargs以字典保存。
通用装饰器的模版:
def func(functionname):
def func_in(*args, **kwargs):
ret = functionname(*args, **kwargs)
return ret
return func_in
装饰器带参数
@func("hello")
只需要在外面套一层函数接收参数,返回闭包。