如果一個函數(shù)在不知道自己名字的情況下,怎么才能遞歸調(diào)用自己。這是我一個同事問我的,其實也是獲取函數(shù)名,但是當(dāng)時也是回答不出來。
站在用戶的角度思考問題,與客戶深入溝通,找到延邊朝鮮族網(wǎng)站設(shè)計與延邊朝鮮族網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋延邊朝鮮族地區(qū)。
謙和、溫順且自持的生活,不亂于心,不困于情,不畏將來,不念過去。
classstdata(Structure):_fields_=[('pBuf',c_char_p),('buflen',c_int)]N=100buf=create_string_buffer(N)d=stdata()d.buflen=Nd.pBuf=cast(buf,c_char_p)n=CallMyCFunc_GetData(byref(d))關(guān)鍵在于create_string_buffer創(chuàng)建可寫buffer;cast轉(zhuǎn)換為char*類型。
定義一個A類,然后實例化一個A對象,通過setattr函數(shù)來給當(dāng)前類添加一個變量,值是test函數(shù)。調(diào)用haha函數(shù),就相當(dāng)于調(diào)用了test函數(shù)。 例2,定義一個模塊,通過另一個模塊函數(shù)調(diào)用函數(shù)來增加變量,值是test2函數(shù)。調(diào)用haha函數(shù),就相當(dāng)于調(diào)用了test2函數(shù)。
原理
python系統(tǒng)會維護一個變量的字典,可以通過locals()或者globals()獲取到該字典。由于字典是可變對象,那么,就可以動態(tài)的增加變量。由于函數(shù)也是一個對象,那么就可以將變量指向函數(shù)。這樣就可以達到動態(tài)修改函數(shù)名的目的了。
源文件的函數(shù)名?源文件是文件名就能理解,這個函數(shù)名不知道是想表達什么。
如果你想通過函數(shù)的名稱來獲取函數(shù)的運行地址,可以像下面這樣實現(xiàn):
[python]?view plain?copy
#?File:?builtin-import-example-2.py
def?getfunctionbyname(module_name,?function_name):
module?=?__import__(module_name)
return?getattr(module,?function_name)
print(?repr(getfunctionbyname("dbm",?"open"))?)
在這段代碼里,通過open字符串的名稱獲取數(shù)據(jù)庫管理模塊dbm的open函數(shù)地址。
運行之后,輸出如下:
=== RESTART: D:\work\csdn\python_Game1\example\builtin-import-example-2.py ===
function open at 0x00000226467B2BF8
文章標(biāo)題:python取函數(shù)名 python函數(shù)必須有函數(shù)名嗎
分享路徑:http://jinyejixie.com/article8/dosooip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、建站公司、、網(wǎng)站策劃、ChatGPT、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)