7.1 學習日記
今日內容
裝飾器是一個用來被裝飾者新增功能的工具
被裝飾者:函式
裝飾器:可以用函式事先裝飾器這種工具
無參裝飾器
無參裝飾器模板
from functools import wraps
def otter():
#finc原函式的地址這裡是(lndex)
@wraps(finc)
#把內建屬性覆蓋給裝飾器,裝的更像
def wrapper(*args,**kwargs):
#將原函式需要的值一模一樣的還給他
res = finc(*args,**kwargs)
#將原函式的返回值賦值給res
return res
#返回原函式的返回值
return wrapper
#返回wrapper的記憶體地址,
@otter #函式語法糖(要呼叫裝飾器,要把裝飾器寫在上面)
def index(x): #原函式
print(x)
return 4546
裝飾器語法糖
@後面跟一個函式的記憶體地址,python會自動觸發這個函式的執行,將正下方的那個函式的記憶體地址當作引數傳進來,將返回值返回給原函式名
from functools import wraps
@wraps:把內建屬性覆蓋給裝飾器(加在裝飾器裡)
疊加多個裝飾器:載入順序與執行順序
@deco1 #列印111
@deco2 #列印222
@deco3 #列印333
def index(x): #原函式
print(x)
return 4546
結果是
111
222
333
載入順序是從下往上
執行順序是從上往下
載入順序:先載入最下面的裝飾器,把原函式的記憶體地址載入到func3,返回wrapper3的地址。
再載入deco2,把wrapper3的記憶體地址載入到func2,定義wrapper2,返回wrapper2的地址。
再載入deco1,把wrapper2的記憶體地址載入到func1,定義wrapper1,返回wrapper1的地址。
把wrapper1的記憶體地址返回給了原函式(index)
執行順序:呼叫index就是呼叫wrapper1,執行wrapper1,再執行wrapper2,再執行wrapper3,最後執行原函式(index)
有參函式裝飾器
如果最內側的函式還需要輸入一個值,但是已經沒辦法改原始碼了,那就再裝飾的最外層加上,但是這樣語法糖就沒有辦法使用了。
語法糖怎麼使用呢?在普通語法糖的後面加上括號輸入最外層函式需要的值。
無參裝飾器模板
from functools import wraps
def outter(x,y):
#finc原函式的地址這裡是(lndex)
@wraps(finc)
#把內建屬性覆蓋給裝飾器,裝的更像
def wrapper(*args,**kwargs):
#將原函式需要的值一模一樣的還給他
res = finc(*args,**kwargs)
#將原函式的返回值賦值給res
return res
#返回原函式的返回值
return wrapper
#返回wrapper的記憶體地址,
@outter(111,222)
def index(x,y): #原函式
print(x,y)
return 4546
相關推薦
7.1 學習日記
今日內容 裝飾器是一個用來被裝飾者新增功能的工具 被裝飾者:函式 裝飾器:可以用函式事先裝飾器這種工具
7.2學習日記
今日內容 迭代器 什麼是迭代器就是用來迭代取值的工具什麼是迭代迭代就是一個重複的過程,但是沒錯重複都是基於上一次結果進行的單純的重複不叫迭代迭代:count = 1while count < 5print(count)count += 1為何要
7.5學習日記
今日內容 匿名函式 什麼是匿名函式匿名函式就是沒有名字的函式為何要用匿名函式用於臨時使用一次的場景和其他函式配合使用如何定義匿名函式def foo(x,y):return x+yprint((lambda x,y: x + y)(1,2))sal
7.12學習日記
今日內容 面向過程概念 面向過程:不是一門技術, 是一種程式設計思想核心是過程兩個字過程就是先幹什麼,再幹什麼,最後幹什麼優點:複雜的問題簡單化,流程化缺點:牽一髮而動全身,擴充套件性差應用場景:對擴充
7.13學習日記
今日內容 繫結方法 1.繫結給物件的2.繫結給類的 繫結給物件 class Student():country = \'China\'def __init__(self,name,age):self.name1 = nameself.age = agedef tell_info(self):print(\'%s-%s\' % (self.name,
7.15學習日記
今日內容 mixnins機制 # 1.多繼承分主類和輔類,繼承輔類就有該輔類中的功能,不影響子類使用,輔類使用特殊結尾(Minxin,able,ible)# 2.規範寫法,輔類寫在主類左邊class Vehicle: # 交通工具passclass Flyable
7.20學習日記
今日內容 同步非同步阻塞非阻塞 並行:指的是兩者同時執行,比如賽跑併發:指的是在資源有限的情況下,兩者交替輪流使用資源同步:一個任務如果需要依賴另一個任務的完成,就會等到另一個任務完成才會完成現在的任
7.21學習日記
今日內容 程序間資料隔離 在一整個程序內執行時資料是不隔離的def task():global nn = 10print(f\'這是子程序中的{n}\')if __name__ == \'__main__\':n = 100task()print(f\'這是主程序中的{n}\')# 這是子程序
7.22學習日記
今日內容 執行緒的概念 程序是作業系統排程的最小單位一個程序至少有一個執行緒一個程序中可以開多個執行緒執行緒是cpu排程的最小單位真正幹活的是執行緒
2022.4.1學習日記
弗洛伊德演算法顯示各點到各點最短距離和最短路徑: static int top=Integer.MAX_VALUE;
pytest--學習日記1
一、pytest的簡介及簡單使用 1. pytest與unittest一樣,也是python的單元測試框架,但比unittest更靈活。
微服務分散式電商專案學習筆記(三)---- docker介紹安裝以及使用docker安裝軟體(2020/7/1)
其實在介紹docker的使用和安裝之前應該還要介紹虛擬機器的安裝與配置,以及虛擬網路的配置,但是我使用的是vmware,而視訊課使用的是vagrant,這一塊我簡看的,因此沒有過多的介紹,至於vmware的安裝配置和虛擬網路
JAVA的學習日記7
Java流程控制 Scanner物件 之前學的基本語法中並沒有實現程式和人的互動,但是Java提供了這樣一個工具類,可以獲取使用者的輸入。java.util.Scanner是Java5的新特徵,我們可以通過Scanner類來獲取使用者輸入
Logstash 7.9.1 學習
個人學習筆記,謝絕轉載!!! 原文:https://www.cnblogs.com/wshenjin/p/13666614.html 安裝和配置
<資料視覺化>pyecharts的學習(版本1.7.1)
1.安裝pyecharts和相應的地圖包 安裝pyecharts pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts==1.7.1
C++ Primer Plus 學習日記1
技術標籤:C++ Primer Plus自學c++ 第3章 處理資料 C++ climits 中的符號常量 C++ climits 中的符號常量
Python學習日記(1)
技術標籤:pythonpython 前言 因為工作的需要,在學習的過程中,需要一邊規劃教學大綱,學習記錄流程不一定順暢,且使用的軟體為程式設計貓海龜編輯器
2021.1.3學習日記(水仙花數問題)
習題4-6 水仙花數 (20分) 水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。本題要求編寫程式,計算所有N位水仙花數。
C++學習日記-7月8日
今天是7月8日,我們接著開始C++的學習。 最近找到了一個關於C++的刷題網站 確實很好用
2021-2022-1 20211405《資訊保安專業導論》第7周學習總結
作業資訊 2020-2021-1資訊保安專業導論 <2020-2021-1資訊保安專業導論> 2020-2021-1資訊保安專業導論第七週作業