日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
真Python技巧實戰(zhàn)應(yīng)用,函數(shù)參數(shù)自動收集并批量處理

前言

分享一個最近發(fā)現(xiàn)的實用小技巧。有時候我會封裝一下別人的庫中的某個功能函數(shù),比如下面是一個第三方庫的函數(shù):

邵東網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站

函數(shù)的參數(shù)非常多。而我需要自定義一個與它參數(shù)一樣的函數(shù),里面做一些小處理后,調(diào)用它的原函數(shù):

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

這里的問題是,難道我一定要把參數(shù)逐一傳入原函數(shù)嗎?

  • 上面的第29行代碼能不能簡化?
  • 代碼 行 24-27 的處理能不能簡化?

我們首先要知道一點,函數(shù)的參數(shù),其實與我們普通定義的變量沒有多大差別。區(qū)別只是函數(shù)參數(shù)只是從外部指定值。

既然函數(shù)的參數(shù)是普通的變量,那么很自然我們可以想到使用內(nèi)置函數(shù) locals 獲取本地變量字典:

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

非常簡單地解決了問題。不過這里注意,最好在函數(shù)一開始的時候就做這個事情。這是因為如果在執(zhí)行 locals 之前,你自己在函數(shù)中定義了變量,那么也會保存在 locals 里面。

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

其實有了參數(shù)字典,批量處理字符串參數(shù)的問題就很容易解決。

雖然這里沒有什么問題,但是通常來說,我們不應(yīng)該在遍歷時修改原字典??梢該Q成推導(dǎo)式或復(fù)制再修改

但是,現(xiàn)在我有好幾個這種間接調(diào)用的函數(shù)。難道每一個我都要像上面那樣寫一大串代碼嗎?

我一開始也想到,這不是很簡單事情嗎,把上面的代碼抽出來,到一個函數(shù)就可以:

需要時,調(diào)用即可:

真的可以嗎?

顯然不行。因為調(diào)用 locals 時,函數(shù) strip_str_args 根本沒有任何參數(shù)!

辦法總比困難多,既然不能直接使用 locals ,那就讓外面?zhèn)鬟M來吧:

調(diào)用的時候就需要使用 locals:

還能不能再簡化?每次都要傳入 locals ,不符合我的"懶人"風格。

以前我就有兩篇文章講解過調(diào)用棧。當 python 每次進入一個函數(shù),都會啟用一個"幀棧",用于保存當前函數(shù)執(zhí)行過程中的信息。這些信息當然包括了定義的變量。

其實 locals 函數(shù)就是從當前 "幀棧" 獲取的數(shù)據(jù):

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

現(xiàn)在調(diào)用則很簡單了:

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

目前,還有一個限制,"確保在函數(shù)一開始調(diào)用" 。

這個限制能去掉嗎?


分享標題:真Python技巧實戰(zhàn)應(yīng)用,函數(shù)參數(shù)自動收集并批量處理
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/dhscgej.html