py 5.11
阿新 • • 發佈:2018-05-11
括號 基本 裝飾器 數據類型 end 地址 one 調用 再次
一、函數名的應用(第一類對象)
1.打印print函數名得到的是函數名的地址。 #2.函數名可以被賦值。func = f f()等同於func(). #3.函數名相當於變量,唯一區別:函數名可以調用函數。 #4.可以被放入容器類基礎數據類型中的元素,然後實現循環調用。 #5.可以作為返回值,return 函數名(不加括號等同於返回一個變量)(加括號表示要返回調用函數時被返回的值)View Code
二、閉包
#二、閉包 #1.調用父級(上一層、非全局)的變量,內層函數對外層函數(上一級非全局)的變量的引用。 #2.判斷是否是閉包:_closure_ : 返回cell:是閉包。 返回None:不是閉包。閉包#3.py解釋器中,當執行到函數發現其中有閉包時,函數執行結束臨時名稱空間不會關閉,只有一直長時間不用時,臨時名稱空間才會關。目的 # 是為了爬蟲時不占內存。
三、裝飾器
#三、裝飾器: #功能:不改變原函數的基礎上,給某個函數增加一些其它的功能。 #裝飾器舉例:加執行時間 import time def timmer(f): #形參一定是被裝飾的函數中的函數名。 def inner(*args,**kwargs): #用動態參數來接收各種各樣的實參。 start_time = time.time() ret裝飾器= f(*args,**kwargs) #調用函數中的*和**表示把inner聚合的再次打散,然後傳給自己的形參。 end_time = time.time() print(‘此函數的執行時間為%d‘ % (end_time - start_time)) return ret #666 return inner #將inner變量返回給調用者timmer(),timmer()又將值賦給變量login.login() = inner() @timmer #相當於一步變量賦值 login = timmer(login)def login(a,b): print(a,b) return 666 #將值返回給裝飾器中的調用者f() print(login(2,3)) #return返回來值以後需要print才能顯示出來。
# def wrapper(f): # def inner(*args,**kwargs): # ‘‘‘執行被裝飾函數之前的操作‘‘‘ # ret = f(*args,**kwargs) # """執行被裝飾函數之後的操作""" # return ret # return inner基本框架
py 5.11