day-04
阿新 • • 發佈:2017-09-27
原來 現在 urlopen ron pre 應用領域 bsp 應用場景 dex
四 閉包函數
一 什麽是閉包?
內部函數包含對外部作用域而非全局作用域的引用 #提示:之前我們都是通過參數將外部的值傳給函數,閉包提供了另外一種思路,包起來嘍,包起呦,包起來哇
示例:
def outter(): x=110 def inner(): print(x) return inner f=outter() #這裏是把返回值賦值給f f() #然後在用f調用函數
二 閉包的意義與應用
#閉包的意義:返回的函數對象,不僅僅是一個函數對象,在該函數外還包裹了一層作用域,這使得,該函數無論在何處調用,優先使用自己外層包裹的作用域 #應用領域:延遲計算(原來我們是傳參,現在我們是包起來)
from urllib.request import urlopen #加載爬蟲模塊 def index(url): def get(): return urlopen(url).read() return get baidu=index(‘http://www.baidu.com‘) #傳入函數參數 print(baidu().decode(‘utf-8‘))
五 裝飾器
裝飾器就是閉包函數的一種應用場景
開放封閉原則:對修改封閉,對擴展開放
二 什麽是裝飾器
裝飾器他人的器具,本身可以是任意可調用對象,被裝飾者也可以是任意可調用對象。 強調裝飾器的原則:1 不修改被裝飾對象的源代碼 2 不修改被裝飾對象的調用方式 裝飾器的目標:在遵循1和2的前提下,為被裝飾對象添加上新功能
day-04