迭代器、生成器、閉包

***********************************************2018.01.10***********************************************************閉包

————————————————迭代器———————————————————————函數

什麼是迭代器?對象

可用next()函數調用的就是迭代器作用域

生成器必定是迭代器it

from collections import Iterableio

isinstance(對象,Iterable)判斷一個對象是否具備可迭代性test

iter(對象)可將可迭代對象轉換成迭代器import

————————————————閉包———————————————————————基礎

閉包函數必須知足兩個條件: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******)

相關文章
相關標籤/搜索