已有字符串形式的函數(shù)名稱,那么如何調(diào)用這個函數(shù)呢?
成都創(chuàng)新互聯(lián)是專業(yè)的網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計等網(wǎng)站開發(fā)一體化解決方案;包括成都h5網(wǎng)站建設(shè),小程序定制開發(fā),網(wǎng)站定制,企業(yè)網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā),成都響應(yīng)式網(wǎng)站建設(shè)公司,建網(wǎng)站,PHP網(wǎng)站建設(shè),軟件開發(fā),軟文發(fā)布平臺,網(wǎng)站營銷。歡迎做網(wǎng)站的企業(yè)前來合作洽談,成都創(chuàng)新互聯(lián)將竭誠為您服務(wù)!
通過調(diào)用內(nèi)置函數(shù)locals()和globals()返回的字典對象,就可以可以獲得名稱與對象的映射關(guān)系。其中,locals()僅在全局范圍內(nèi)調(diào)用時可以獲得函數(shù)對象。 我們來看以下的例子。
需要注意的是,使用上述方法通過字符串調(diào)用函數(shù)時,為了系統(tǒng)的安全,防止執(zhí)行任意函數(shù),需要對函數(shù)名做一些處理,也就是使用統(tǒng)一的前綴為這些函數(shù)命名。例如在上述例子中,使用前綴cmd_+函數(shù)名的形式定義函數(shù)(cmd_help,cmd_sum)。
在傳入函數(shù)名字符串時,只傳入函數(shù)名的后半部分(如"help","sum"),由程序添加前綴后組成完整的函數(shù)名,再調(diào)用該函數(shù)。
對于類的成員函數(shù),則可以使用getattr()獲得類成員函數(shù)。
上述代碼通過字符串調(diào)用了類成員函數(shù),與前一段代碼執(zhí)行的結(jié)果相同。
此外,還可以使用字典將字符串與函數(shù)對應(yīng)起來調(diào)用,缺點就是每增加一個函數(shù)需要相應(yīng)在字典對象中添加相應(yīng)的鍵值,增加代碼維護工作量。
以上代碼在Python 3.6以上運行通過。
分兩步:定義函數(shù)和調(diào)用函數(shù)。
1.定義函數(shù)用def關(guān)鍵字,然后定義函數(shù)名和入?yún)ⅲ约昂瘮?shù)執(zhí)行語句。
2.通過函數(shù)名調(diào)用函數(shù)即可,需要傳入?yún)?shù)的話需要加上參數(shù)值
兩個方法:
1.Python中靜態(tài)方法的作用就是保證方法里面所使用的屬性和值都是靜態(tài)不變的,使用靜態(tài)方法一般都不會定義參數(shù),因為靜態(tài)方法只能夠使用靜態(tài)屬性。python內(nèi)定義靜態(tài)方法的方式為在定義函數(shù)的代碼前加上一個@staticmethod這樣的標(biāo)識符。
2.一般的類方法在定義之后需要實例化這個類才能夠通過類對象點方法的形式去調(diào)用它,但是靜態(tài)方法可以直接通過類名去調(diào)用。因為為靜態(tài)方法就相當(dāng)于是一個暴露在外部的自定義函數(shù)一樣,只需要使用類名找到它就可以使用了。同時靜態(tài)方法也能夠去用實例化之后的類對象對調(diào)用。