目錄:
閉包函式
裝飾器什麼是閉包函式?
閉,封閉,把乙個函式封閉在另乙個函式裡面起來,就是定義在函式內部的函式
包,將它整體打包,同時引用外部函式作用域的名字,方便接下裡使用
x = 56defouter():
y = 78
definner():
(x, y)
return
inner
#只要是呼叫了外部函式y的命名空間就被稱之為閉包函式,如果他同時還呼叫了全域性x命名空間,不受影響,但如果只是呼叫全域性x,就不能稱之為閉包
def outter():函式在定義階段名字的查詢順序就已經固定死了,不會因為函式呼叫位置的變化而改變!!!給函式體傳值有兩種方式(******):x=2345
def inner():
print(x)
return
inner
res = outter() # res 就是inner函式的位址
1. 直接傳參
deff(password)
print(password)
import二、閉包requests
#第乙個直接給函式傳參
url1 = '
'def
my_get(url):
response =requests.get(url)
if response.status_code == 200:
(len(response.text))
my_get(url1)
my_get('')
裝飾器函式,閉包
defoutter(name):
name = '
ryan
'def
inner():
(name)
return inner
def outer(func): #小爬蟲定義乙個外部函式
def inner(*args, **kwargs): #
定義乙個內部函式(裝飾好的函式)
print('
執行被裝飾函式之前 你可以做的操作
') #
裝飾 res = func(*args, **kwargs) #
需要被裝飾的函式(需要傳參)
print('
執行被裝飾函式之後 你可以做的操作
') #
裝飾return res #
返回原函式的位址,方便以後呼叫
return inner #
返回被裝飾好的函式的位址,方便以後呼叫
#裝飾器:爬蟲的本質就是爬取頁面的html**,從中獲取到你想要的資料(url鏈結位址),有了鏈結之後,
你就可以順著這個鏈結將所有的頁面資源全部爬取下來,requests模組
什麼裝飾器?
#為什麼要用?就像我們裝修房子一樣,我們不會去改變房子內部結構,而是在房子表面進行乙個修飾美化,讓我們住的更舒服
#裝飾器的作用就是幫助我們在不改變原函式的源**和呼叫方式的基礎上,引入新的功能。
#可呼叫:callable,可以加括號執行的
#開放封閉原則:對擴充套件開放 對修改封閉
#必須滿足的兩個條件:
1.不改變源**
2.不改變原來的使用方式
正常it公司會有大量的被定義的函式,如果我們要改動函式的源**,可能會導致函式的連鎖出錯,最終使得整個程式崩潰,同時就算有的源**能改動,但是大量的工作量以及功能需求的不確定,使得工作效率異常低下。
怎麼使用?
先看乙個標準的無引數的裝飾器模版
def outer(func): #1.無參裝飾器定義乙個外部函式
def inner(*args, **kwargs): #
定義乙個內部函式(裝飾好的函式)
print('
執行被裝飾函式之前 你可以做的操作
') #
裝飾 res = func(*args, **kwargs) #
需要被裝飾的函式(需要傳參)
print('
執行被裝飾函式之後 你可以做的操作
') #
裝飾return res #
返回原函式的位址,方便以後呼叫
return inner #
返回被裝飾好的函式的位址,方便以後呼叫
最中間的func()就是原函式的乙個主體,我們ba而不帶()
三個難點:
#重要作用:1.關於函式「變數」(或「變數」函式)的理解
#2.關於高階函式的理解
#3.關於巢狀函式的理解
#1.不能修改被裝飾的函式的源**
#2.不能修改被裝飾的函式的呼叫方式
#3.滿足1、2的情況下給程式增添功能
Day 11 閉包函式 裝飾器
def outer x,y defmy max if x y 引用了outer 的引數,相當與引用了 outer的變數 為閉包函式 return x return y return my max res outer 80,90 print res 裝飾器必須要遵守兩個原則 1 不改變被裝飾物件的源 ...
day 11 迭代器 閉包
1.第一類物件,函式名的使用,函式名就是變數名,函式名儲存的是函式的記憶體位址 溫習前面學過的變數 1 由數字,字母,下劃線組成 2 不能是數字開頭,更不能是純數字 3 不能用關鍵字 4 不要太長 5 要有意義 6 不要用中文 7 區分大小寫 8 駝峰線或者下劃線 2.閉包 在內層函式中引入外層函式...
Day 11 函式名,閉包,裝飾器 作業
1 整理裝飾器的形成過程,背誦裝飾器的固定格式 2 編寫裝飾器,為多個函式加上認證的功能 使用者的賬號密碼 於檔案 要求登入成功一次,後續的函式都無需再輸入使用者名稱和密碼 3.1.為題目3編寫裝飾器,實現快取網頁內容的功能 公升級題 4.寫函式,返回乙個撲克牌列表,裡面有52項,每一項是乙個元組 ...