***********************************************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******)