日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

真Python技巧實(shí)戰(zhàn)應(yīng)用,函數(shù)參數(shù)自動(dòng)收集并批量處理

來源: 責(zé)編: 時(shí)間:2023-12-09 15:22:33 343觀看
導(dǎo)讀前言分享一個(gè)最近發(fā)現(xiàn)的實(shí)用小技巧。有時(shí)候我會(huì)封裝一下別人的庫(kù)中的某個(gè)功能函數(shù),比如下面是一個(gè)第三方庫(kù)的函數(shù):函數(shù)的參數(shù)非常多。而我需要自定義一個(gè)與它參數(shù)一樣的函數(shù),里面做一些小處理后,調(diào)用它的原函數(shù):為了讓函數(shù)

前言

分享一個(gè)最近發(fā)現(xiàn)的實(shí)用小技巧。有時(shí)候我會(huì)封裝一下別人的庫(kù)中的某個(gè)功能函數(shù),比如下面是一個(gè)第三方庫(kù)的函數(shù):wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

函數(shù)的參數(shù)非常多。而我需要自定義一個(gè)與它參數(shù)一樣的函數(shù),里面做一些小處理后,調(diào)用它的原函數(shù):wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

  • 為了讓函數(shù)有智能提示,這里不能使用 *args 與 **kws 收集參數(shù)
  • 把傳入的字符串處理一下

這里的問題是,難道我一定要把參數(shù)逐一傳入原函數(shù)嗎?wOJ28資訊網(wǎng)——每日最新資訊28at.com

  • 上面的第29行代碼能不能簡(jiǎn)化?
  • 代碼 行 24-27 的處理能不能簡(jiǎn)化?

我們首先要知道一點(diǎn),函數(shù)的參數(shù),其實(shí)與我們普通定義的變量沒有多大差別。區(qū)別只是函數(shù)參數(shù)只是從外部指定值。wOJ28資訊網(wǎng)——每日最新資訊28at.com

既然函數(shù)的參數(shù)是普通的變量,那么很自然我們可以想到使用內(nèi)置函數(shù) locals 獲取本地變量字典:wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

  • 行24:利用 locals 函數(shù)獲取所有參數(shù)的字典
  • 行26:利用 ** 解包傳參調(diào)用

非常簡(jiǎn)單地解決了問題。不過這里注意,最好在函數(shù)一開始的時(shí)候就做這個(gè)事情。這是因?yàn)槿绻趫?zhí)行 locals 之前,你自己在函數(shù)中定義了變量,那么也會(huì)保存在 locals 里面。wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

  • 行24:不能在調(diào)用 locals 之前定義變量

其實(shí)有了參數(shù)字典,批量處理字符串參數(shù)的問題就很容易解決。wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

雖然這里沒有什么問題,但是通常來說,我們不應(yīng)該在遍歷時(shí)修改原字典。可以換成推導(dǎo)式或復(fù)制再修改wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

但是,現(xiàn)在我有好幾個(gè)這種間接調(diào)用的函數(shù)。難道每一個(gè)我都要像上面那樣寫一大串代碼嗎?wOJ28資訊網(wǎng)——每日最新資訊28at.com

我一開始也想到,這不是很簡(jiǎn)單事情嗎,把上面的代碼抽出來,到一個(gè)函數(shù)就可以:wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

需要時(shí),調(diào)用即可:wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

真的可以嗎?wOJ28資訊網(wǎng)——每日最新資訊28at.com

顯然不行。因?yàn)檎{(diào)用 locals 時(shí),函數(shù) strip_str_args 根本沒有任何參數(shù)!wOJ28資訊網(wǎng)——每日最新資訊28at.com

辦法總比困難多,既然不能直接使用 locals ,那就讓外面?zhèn)鬟M(jìn)來吧:wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

調(diào)用的時(shí)候就需要使用 locals:wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

還能不能再簡(jiǎn)化?每次都要傳入 locals ,不符合我的"懶人"風(fēng)格。wOJ28資訊網(wǎng)——每日最新資訊28at.com

以前我就有兩篇文章講解過調(diào)用棧。當(dāng) python 每次進(jìn)入一個(gè)函數(shù),都會(huì)啟用一個(gè)"幀棧",用于保存當(dāng)前函數(shù)執(zhí)行過程中的信息。這些信息當(dāng)然包括了定義的變量。wOJ28資訊網(wǎng)——每日最新資訊28at.com

其實(shí) locals 函數(shù)就是從當(dāng)前 "幀棧" 獲取的數(shù)據(jù):wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

  • 行16:導(dǎo)入 inspect 模塊
  • 行20:獲取當(dāng)前幀棧
  • 行24: cur_frame.f_back 獲取上一層幀棧,就是調(diào)用這個(gè)函數(shù)的人的環(huán)境信息。 f_locals 相當(dāng)于獲得了外部傳進(jìn)來的 locals 字典

現(xiàn)在調(diào)用則很簡(jiǎn)單了:wOJ28資訊網(wǎng)——每日最新資訊28at.com

wOJ28資訊網(wǎng)——每日最新資訊28at.com

  • 要確保在函數(shù)一開始調(diào)用

目前,還有一個(gè)限制,"確保在函數(shù)一開始調(diào)用" 。wOJ28資訊網(wǎng)——每日最新資訊28at.com

這個(gè)限制能去掉嗎?wOJ28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-40665-0.html真Python技巧實(shí)戰(zhàn)應(yīng)用,函數(shù)參數(shù)自動(dòng)收集并批量處理

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 深入了解Git LFS:高效管理大型文件的利器

下一篇: Python枚舉類:定義、使用和優(yōu)秀實(shí)踐

標(biāo)簽:
  • 熱門焦點(diǎn)
  • K60至尊版狂暴引擎2.0加持:超177萬(wàn)跑分?jǐn)孬@性能第一

    Redmi的后性能時(shí)代戰(zhàn)略發(fā)布會(huì)今天下午如期舉辦,在本次發(fā)布會(huì)上,Redmi公布了多項(xiàng)關(guān)于和聯(lián)發(fā)科的深度合作,以及新機(jī)K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 6月iOS設(shè)備好評(píng)榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個(gè),2023年6月的iOS好評(píng)榜和上個(gè)月相比沒有任何排名上的變化,僅僅是部分設(shè)備好評(píng)率的下降,長(zhǎng)年累月的用戶評(píng)價(jià)和逐漸退出市場(chǎng)的老款機(jī)器讓這
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價(jià)12999元,比發(fā)布價(jià)便宜了7000元,在大屏電視市場(chǎng)開卷。據(jù)了解,Redmi MAX 100
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時(shí)35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢(shì)領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過14.
  • K6:面向開發(fā)人員的現(xiàn)代負(fù)載測(cè)試工具

    K6 是一個(gè)開源負(fù)載測(cè)試工具,可以輕松編寫、運(yùn)行和分析性能測(cè)試。它建立在 Go 和 JavaScript 之上,它被設(shè)計(jì)為功能強(qiáng)大、可擴(kuò)展且易于使用。k6 可用于測(cè)試各種應(yīng)用程序,包括 Web
  • 十個(gè)可以手動(dòng)編寫的 JavaScript 數(shù)組 API

    JavaScript 中有很多API,使用得當(dāng),會(huì)很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對(duì)它們進(jìn)行一次小總結(jié)。現(xiàn)在開始吧。1.forEach()forEach()用于遍歷數(shù)組接收一參
  • JavaScript學(xué)習(xí) -AES加密算法

    引言在當(dāng)今數(shù)字化時(shí)代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進(jìn)行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲(chǔ)中可能會(huì)受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

    場(chǎng)景碼猿慢病云管理系統(tǒng)中其實(shí)高并發(fā)的場(chǎng)景不是很多,沒有必要每個(gè)接口都去考慮并發(fā)高的場(chǎng)景,比如添加住院患者的這個(gè)接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:圖片上述代碼有
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對(duì)于自己的“今天”,百度也很迷茫。“新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來一個(gè) 1。”這是2022年底,李彥宏
Top 主站蜘蛛池模板: 叶城县| 海林市| 溆浦县| 长寿区| 应城市| 江北区| 岳普湖县| 灵璧县| 都匀市| 宜阳县| 松原市| 万载县| 临武县| 贵德县| 那坡县| 阜平县| 昌黎县| 黄石市| 日喀则市| 枣庄市| 特克斯县| 贡嘎县| 汪清县| 台南县| 都昌县| 仁怀市| 达孜县| 扎囊县| 延吉市| 梁河县| 海门市| 务川| 喀喇沁旗| 德令哈市| 齐齐哈尔市| 福建省| 滦南县| 孟村| 中江县| 安新县| 托克逊县|