function="luckywin."+case_name+"."+def_name
察哈爾右翼前ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
function=eval(function)
function(player_id,test_url)
function是個字符串,function(player_id,test_url) 這樣寫肯定不是字符串,怎么能用eval呢,直接eval function返回函數(shù)名,然后調(diào)用函數(shù)
定義一個A類,然后實例化一個A對象,通過setattr函數(shù)來給當前類添加一個變量,值是test函數(shù)。調(diào)用haha函數(shù),就相當于調(diào)用了test函數(shù)。 例2,定義一個模塊,通過另一個模塊函數(shù)調(diào)用函數(shù)來增加變量,值是test2函數(shù)。調(diào)用haha函數(shù),就相當于調(diào)用了test2函數(shù)。
原理
python系統(tǒng)會維護一個變量的字典,可以通過locals()或者globals()獲取到該字典。由于字典是可變對象,那么,就可以動態(tài)的增加變量。由于函數(shù)也是一個對象,那么就可以將變量指向函數(shù)。這樣就可以達到動態(tài)修改函數(shù)名的目的了。
你好,方法如下:
要寫一個程序,讓linuxany1=1,linuxany2=2,… inuxany100=100,你會怎么做?
最容易想到的自然是eval,但是實際上根本不需要這種危險的東西,因為Python的變量名就是一個字典的key而已。要獲取這個字典,直接用locals和globals函數(shù)即可。
names = locals()
for i in xrange(1, 101):
... names['linuxany%s' % i] = i
... linuxany1
1 linuxany2
2 linuxany100
100
不過你也許會說這個例子沒什么用,畢竟用數(shù)組來實現(xiàn)更為實用。
舉一個例子:服務器使用一種對象數(shù)據(jù)庫,可以直接保存對象到數(shù)據(jù)庫中。服務器列出目前支持的所有類,而用戶想添加一個不存在于列表中的類,于是向服務器發(fā)送一段JSON或XML文本。服務器解析這段文本,將它轉(zhuǎn)換成一個class對象,并且設置類名。之后用戶就可以隨意生成這個類的對象。
關(guān)鍵是這個數(shù)據(jù)庫和類名相關(guān),你不能用一個通用的Object類來保存所有的對象,否則查詢時就亂套了。
除了動態(tài)設置變量名,動態(tài)刪除也是可以的,例如
del locals()['linuxany1']
同樣,delattr也是可用的。
希望能幫到你。