1.為什麼需要使用裝飾器:簡單點說就是為了避免很多函式輸入重複的**,舉個例子如果有一百個函式你需要計算每個函式執行時間,你不可能說去在每個函式的開頭結尾加個時間戳然後相減,你需要直接呼叫裝飾器函式去計算就可以,詳情**見下圖
import time
def time_it(func):
def inner():
start = time.time()
func()
end = time.time()
print(『用時:{}秒』.format(end-start))
return inner
@time_it
def func1():
time.sleep(2)
print(「func1 is running.」)
ifname== 『main』:
func1()
2.什麼是閉包:簡單點說就是外函式裡面巢狀乙個內函式,外函式return內函式,內函式呼叫外函式的變數,像這樣一種返回內函式加外函式變數即為閉包
def outer(x):
a = x
def inner(y):
b = y
print(a+b)
return inner
f1 = outer(1) # 返回inner函式物件+區域性變數1(閉包)
f1(10)
3.nonlocal的作用:簡單點說就是函式裡面有個巢狀函式,不管是裡面的一層還是幾層,在上層函式寫個變數,要想在內函式裡面改變這個變數,需要將這個變數設定為全域性變數,詳情見例子
def c():
def a():
se=『男』
def b():
nonlocal ***
***=『女』
print(***)
b()a()
print(***)
c()4.如果使用裝飾器一般會接觸乙個模組functools,先看個例子
def inner():
print(』=開始正在執行外函式
==』)
res=func(『我的』)
print(』=結束執行外函式
@deco_out
def test(name=「張三」):
print(『被裝飾的函式{}』.format(test.name))
return name
ifname==『main』:
test()
functools裡面有個模組wraps,它的作用其實很簡單,如果被裝飾的函式test,你直接呼叫該函式,但是由於使用了裝飾器,所以你輸入test,其實它呼叫的是裝飾器的返回值函式,你要想該函式是test本身,就得在呼叫函式的上面加上wraps(func)就可以說明這個呼叫的函式是test
a,b,c=1,2,3 或』123』或【1,2,3】或(1,2,3)都可以
a,b,c=[1,2,3,4,5,6,7,8,9] 代表著可以選擇0個,也可以選擇多個 -->c=[3,4,5,6,7,8,9]
print([1,2,3,4,5,6]) 元組列表字串前面**可以將其拆開
6.sys
sys.ar** -->[『c:/users/dell/pycharmprojects/untitled/python學習**/隨手複製貼上.py』]
就是獲取當前檔案所在路徑
python學習隨筆
初始學習 菜雞乙個 1 用python提取excel資料 data pd.read excel r c users limaoli desktop ybsj.xlsx 這加了乙個r data np.array data 把列表轉換為陣列,方便後面的提取 datamat data 0 3 這個提取的是...
Python 學習隨筆
1.20200421 print輸入respone不能換行的問題 import urllib.parse import urllib.request data bytes urllib.parse.urlencode encoding utf8 respone urllib.request.urlo...
Python 學習隨筆
number 5 def test1 嘗試修改全域性變數值為10 在python中,是不允許直接修改全域性變數的值,如果使用賦值語句,結果是會在函式內部新定義乙個區域性變數 number 10 print test1 d number def test2 print test2 d number t...