python3裝飾器

裝飾器

它允許你修改函數或類的行為,而不更改其源代碼。實質上,裝飾器是接受另一個函數作為參數并返回一個包裝原始函數的新函數。這樣,你可以在不修改原始函數的情況下,添加一些額外的功能或邏輯。

def time_cost(func):""":return:"""def wrapper(*args, **kwargs):""":param args::param kwargs::return:"""start = int(time.time() * 1000)func(*args, **kwargs)end = int(time.time() * 1000)print("call api time cost:%s ms" %(end - start))return wrapper
def ntimes(n):def inner(f):def wrapper(*args, **kwargs):for _ in range(n):rv = f(*args, **kwargs)return rvreturn wrapper
return inner#然后你可以使用上述函數包裝另一個函數,例如前文中的 add 函數:
@ntimes(3)
def add(x, y):print(x + y)
return x + y

Python中有許多內置的裝飾器

例如@staticmethod、@classmethod、@property、@functools.lru_cache、@functools.singledispatch等。你還可以為不同的目的創建自己的自定義裝飾器。

閉包函數?

閉包函數就是定義在函數內部的函數,也就是函數的嵌套定義,根據字面意思理解,閉包函數有兩個關鍵字閉和包分別是的封閉和包裹。需要注意的重點是:閉包函數的作用域關系在函數定義階段就固定死了,與調用位置無關。

1.什么是閉包函數:一個函數的返回值是另外一個函數,返回的函數調用父函數內部的變量,如果返回的函數在外部被執行,就產生了閉包
2.閉包函數的作用:使函數外部能夠調用函數內部放入屬性和方法
3.閉包函數的優缺點:
? ? 優點:使函數外部能夠調用函數內部放入屬性和方法
? ? 缺點:閉包操作導致整個函數的內部環境被長久保存,占用大量內存

__closure__屬性。Python給內部函數添加了這個屬性來攜帶內部函數用到的外部函數中的變量。

閉包作用

數據隱藏

DRY 原則

閉包

閉包函數使用場景

  1. 封裝:這種場景叫做封裝。?
  2. 內部函數可以方便的生成新的函數
  3. 裝飾器:對Python至關重要。這也是內部函數的主要使用場景。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714768.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排隊接水問題

時間限制:1秒 內存限制:128M 題目描述 有n個人在一個水龍頭前排隊接水,假如每個人接水的時間為Ti,請編程找出這n個人排隊的一種順序(若有多種順序則編號小的在前), 使得n個人的平均時間…

ARCGIS進行視域分析及地形圖制作

問題說明 開發商要在本區域建造觀景亭,希望在觀景亭上能看到優美的景色。根據提供的數據,完成以下要求。 一、 數據說明(見“題目3”文件夾) 1. DEM.tif:研究區域的數據高程模型數據。 2. 觀察點.shp:需要建造觀景亭的位置。

美團分布式 ID 框架 Leaf 介紹和使用

一、Leaf 在當今日益數字化的世界里,軟件系統的開發已經成為了幾乎所有行業的核心。然而,隨著應用程序的規模不斷擴大,以及對性能和可擴展性的需求不斷增加,傳統的軟件架構和設計模式也在不斷地面臨挑戰。其中一個主要挑戰就是如…

學生云服務器_學生云主機_學生云數據庫_云+校園特惠套餐

2024年騰訊云學生服務器優惠活動「云校園」,學生服務器優惠價格:輕量應用服務器2核2G學生價30元3個月、58元6個月、112元一年,輕量應用服務器4核8G配置191.1元3個月、352.8元6個月、646.8元一年,CVM云服務器2核4G配置842.4元一年&…

自注意力機制(Self-Attention)

注意:本文引用自專業人工智能社區Venus AI 更多AI知識請參考原站(【http://www.aideeplearning.cn】) Transformer模型中最關鍵部分就是自注意力(Self-Attention)機制,正如 Transformer 的論文的標題是“…

【Vue3】函數式編程(h 函數)

h 函數的原理就是 createVNode。可以使用 h 函數封裝一些小組件。 <template><table border><tr><th>name</th><th>age</th><th>操作</th></tr><tr v-for"item in list" :key"item.age"&…

shell封裝

shift 命令用于對參數的移動(左移)&#xff0c;通常用于在不知道傳入參數個數的情況下依次遍歷每個參數然后進行相應處理&#xff08;常見于Linux中各種程序的啟動腳本&#xff09; shift(shift 1) 命令每執行一次&#xff0c;變量的個數($#)減一&#xff0c;移動2位可以 執行…

數據結構實現-線性表

順序存儲 #include<iostream> using namespace std; #define MaxSize 50 //靜態順序表 template<typename ElemType> struct sqList{ElemType data[MaxSize];//元素int length;//長度 }; //動態順序表 #ifdef DEBUG //關閉啟用 #define InitSize 100 template<…

嵌入式LINUX移植、配置ssh

編譯 https://quantum6.blog.csdn.net/article/details/136299665 編譯時指定prefix&#xff0c;產生的文件會自帶這個目錄。所以直接忽略。 ./configure# 不指定編譯路徑&#xff0c;手動復制。 復制 編譯后的整個目錄打包&#xff0c;復制到開發板。寫個腳本&#xff0c…

kamacoder13.鏤空三角形的C語言解法

13. 鏤空三角形 時間限制&#xff1a;1.000S 空間限制&#xff1a;32MB 題目描述 把一個字符三角形掏空&#xff0c;就能節省材料成本&#xff0c;減輕重量&#xff0c;但關鍵是為了追求另一種視覺效果。在設計的過程中&#xff0c;需要給出各種花紋的材料和大小尺寸的三角…

零拷貝技術深入分析

一、零拷貝 在前面的文章“深淺拷貝、COW及零拷貝”中對零拷貝進行過分析&#xff0c;但沒有舉例子&#xff0c;也沒有深入進行展開分析。本文將結合實際的例程對零拷貝進行更深入的分析和說明。 在傳統的IO操作中&#xff0c;以文件通過網絡傳輸為例 &#xff0c;一般會經歷以…

go語言是如何連接mysql數據庫的?

在 Go 語言中連接 MySQL 數據庫通常使用第三方庫。目前比較流行的 MySQL 客戶端庫包括 github.com/go-sql-driver/mysql、github.com/go-xorm/xorm、github.com/jmoiron/sqlx 等。下面是一個使用 github.com/go-sql-driver/mysql 庫連接 MySQL 數據庫的簡單示例&#xff1a; 首…

GOPATH set to GOROOT (/usr/local/go) has no effect

這個警告信息指出 GOPATH 環境變量被設置為與 GOROOT 相同的值。GOPATH 環境變量用于指定 Go 工作區的位置&#xff0c;而 GOROOT 指定 Go 安裝的位置。將 GOPATH 設置為 GOROOT 表示 Go 工作區和 Go 安裝位置位于同一目錄&#xff0c;這是不推薦的。為了解決此問題&#xff0c…

Zookeeper集群docker部署

集群角色 zookeeper 集群中的機器分為一下三種角色 leader:為客戶端提供讀寫服務(事務性操作)&#xff0c;并維護集群狀態&#xff0c;它是由集群選舉所產生的&#xff1b; follower:為客戶端提供讀(非事務性操作)&#xff0c;轉發給leader寫(事務性操作)&#xff0c;參與選舉操…

K8s控制器

控制器: Deployment: Deployment概述: replicaset:自動創建pod的控制器 Delpoyment控制器: pod的名字需要唯一,在這不寫名字,利用標簽進行創建 replicas:表示你想要克隆的數量,selector:通過標簽.識別哪個pod是我創建出來的.這里的標簽和后面元數據里的標簽要一致. Cluster…

NCDA設計大賽獲獎作品剖析:UI設計如何脫穎而出?

第十二屆大賽簡介 - 未來設計師全國高校數字藝術設計大賽&#xff08;NCDA&#xff09;開始啦&#xff01;視覺傳達設計命題之一: ui 設計&#xff0c;你想知道的都在這里。為了讓大家更好的參加這次比賽&#xff0c;本文特別為大家整理了以往NCDA大賽 UI 設計的優秀獲獎作品&a…

【探索AI】十四深度學習之第2周:深度神經網絡(三)-過擬合與正則化技術

過擬合與正則化技術 過擬合的概念 在機器學習和深度學習的領域中&#xff0c;過擬合&#xff08;Overfitting&#xff09;是一個常見且重要的問題。首先&#xff0c;我們來理解一下什么是過擬合。 過擬合是指模型在訓練數據上表現得過于優秀&#xff0c;以至于在訓練集上的錯…

2024年騰訊云優惠券_代金券_云服務器折扣券免費領取鏈接

騰訊云優惠代金券領取入口共三個渠道&#xff0c;騰訊云新用戶和老用戶均可領取8888元代金券&#xff0c;可用于云服務器等產品購買、續費和升級使用&#xff0c;阿騰云atengyun.com整理騰訊云優惠券&#xff08;代金券&#xff09;領取入口、代金券查詢、優惠券兌換碼使用方法…

【SpringBean】bean的作用域和bean的生命周期

目錄 前言 一 bean的作用域 1. singleton——唯一 bean 實例 2. prototype——每次請求都會創建一個新的 bean 實例 3. request——每一次HTTP請求都會產生一個新的bean&#xff0c;該bean僅在當前HTTP request內有效 4. session——每一次HTTP請求都會產生一個新的 bean&…

程序員的金三銀四求職寶典!

目錄 ?編輯 程序員的金三銀四求職寶典 一、為什么金三銀四是程序員求職的黃金時期&#xff1f; 二、如何準備金三銀四求職&#xff1f; 1. 完善簡歷 2. 增強技術能力 3. 提前考慮目標公司 4. 提前準備面試 三、程序員求職的常見面試題 1. 數據結構和算法 2. 數據庫 …