Python的迭代器和闭包装饰器

字符串,元组,字典,集合,列表,生成器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")

只需要在外面套一层函数接收参数,返回闭包。

 

posted @ 2017-10-21 21:10  我为Xin媛学Python  阅读(143)  评论(0)    收藏  举报