1. 程式人生 > >py 5.11

py 5.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