迭代器

哈赛

 

经典时刻

昨日内容回顾

1 形参的第三种,动态传参

1 位置参数的动态传数 *args

2  关键字的动态传数 **kwargs

  Def  fun(*args,**wkargs)

   Pass

*** 在函数声明的位置,表示聚合

*** 在函数调用的时候,表示打散,传参

 

2命名空间

1 内置命名空间

2全局命名空间

3局部命名空间

 

3作用域:

1,全局作用域:内置+全局,globals()

2,局部作用域:局部(函数内部)locals()

\

4 globalnonlocal

Global 在函数内部(局部)调用全局中的函数

Nonlocal 在局部函数访问外层函数中离他最近的那一层的那个变量

 

 

 今日主要内容

1,函数名的应用(第一类对象)

函数名的命名规范和变量是一样的

函数名其实就是变量名,

可以作为列表中的元素进行存储

 

Def fun1()

Pass

def fun2()

Pass

Lst =[func1,func2]

For e1 in lst:

   E1()

可以作为参数 传递给函数

Def func():

Pass

Def func():

Pass

Def proxy(fn)

Fn()

Proxy(func)

 

可以作为函数的返回值

Def func()

Def inner()

Return inner

Func()()

 

2,闭包

  闭包,在内层函数中访问外层的局部变量

好处:

  1. 可以保护你的变量不收外界影响
  2. 可以让变量常驻内存

写法:

Def under()

A=10

Def inner():

Print(a)

Return inner

 

 

3 迭代器

使用dir 来查看该数据包含了哪些方法

用来遍历列表,字符串,元祖...可迭代对象

可迭代对象:iterable,里面有_intr_()可以获取迭代器,没有_next_()

迭代器: itertor,里面有_liter_()可以获取迭代器,还有_next_()

 

迭代器的特点:

1,只能向前

2,惰性机制

3,省内容(生成器)

 

For 循环的内部机制,

1,首先获取到迭代器,

2使用while循环来获取数据

3,it,_next_()来获取数据

4处理异常  try :xxx except StopIteration:

 

It =xx.iter_()

While 1:

Try :

Data= it._next_()

Xxxx

Except StopIterration

Break

def func():
 a = 10
 def inner():
 print(a)
 print(inner.__closure__) # 如果打印的是None. 不是闭包. 如果不是None, 就是闭包

 func()

posted @ 2018-08-10 07:35  玩蛇少年7372  阅读(69)  评论(0编辑  收藏  举报