Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
Python語(yǔ)言學(xué)習(xí):基于python五種方法實(shí)現(xiàn)使用某函數(shù)名【func_01】的字符串格式('func_01')來(lái)調(diào)用該函數(shù)【func_01】執(zhí)行功能
?
?
目錄
問(wèn)題提出
代碼五種設(shè)計(jì)思路
T1方法:eval()
T2方法: locals() 和 globals()
T3方法:
T4、方法
T5方法
綜合
?
?
?
問(wèn)題提出
如何將提取得到的字符串(該字符串且等于函數(shù)名),此時(shí)該函數(shù)名是字符串格式,如何用作函數(shù)實(shí)現(xiàn)其功能?
?
?
代碼五種設(shè)計(jì)思路
T1方法:eval()
通常用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。在這里它將字符串轉(zhuǎn)換成對(duì)應(yīng)的函數(shù)。eval() 功能強(qiáng)大但是比較危險(xiǎn)(eval is evil),不建議使用。
print('eval() 通常用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。在這里它將字符串轉(zhuǎn)換成對(duì)應(yīng)的函數(shù)。') for func in func_list:eval(func)()?
T2方法: locals() 和 globals()
是python的兩個(gè)內(nèi)置函數(shù),通過(guò)它們可以一字典的方式訪(fǎng)問(wèn)局部和全局變量。
print('locals() 和 globals() 是python的兩個(gè)內(nèi)置函數(shù),通過(guò)它們可以一字典的方式訪(fǎng)問(wèn)局部和全局變量。') for func in func_list:locals()[func]() for func in func_list:globals()[func]()
? ??
T3方法:
print('methodcaller方法')
class Foo:def do_foo(self):print('執(zhí)行do_foo()函數(shù)')def do_bar(self):print('執(zhí)行do_bar()函數(shù)')f = Foo()
from operator import methodcaller
methodcaller('do_foo')(f)
?
T4、方法
print('globals().get') globals().get('foo')
? ??
? ??
T5方法
getattr() 是 python 的內(nèi)建函數(shù),getattr(object,name) 就相當(dāng)于 object.name,但是這里 name 可以為變量。
print('getattr()方法') import foo getattr(foo, 'bar')()??
綜合
def foo(): print("foo")def bar():print("bar") func_list = ["foo","bar"]#T1方法:eval() 通常用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。在這里它將字符串轉(zhuǎn)換成對(duì)應(yīng)的函數(shù)。eval() 功能強(qiáng)大但是比較危險(xiǎn)(eval is evil),不建議使用。 print('eval() 通常用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。在這里它將字符串轉(zhuǎn)換成對(duì)應(yīng)的函數(shù)。') for func in func_list:eval(func)()#T2方法: locals() 和 globals() 是python的兩個(gè)內(nèi)置函數(shù),通過(guò)它們可以一字典的方式訪(fǎng)問(wèn)局部和全局變量。 print('locals() 和 globals() 是python的兩個(gè)內(nèi)置函數(shù),通過(guò)它們可以一字典的方式訪(fǎng)問(wèn)局部和全局變量。') for func in func_list:locals()[func]() for func in func_list:globals()[func]()#T3方法: print('methodcaller方法') class Foo:def do_foo(self):print('執(zhí)行do_foo()函數(shù)')def do_bar(self):print('執(zhí)行do_bar()函數(shù)')f = Foo() from operator import methodcaller methodcaller('do_foo')(f)#T4、方法: print('globals().get') globals().get('foo')#T5方法: getattr() 是 python 的內(nèi)建函數(shù),getattr(object,name) 就相當(dāng)于 object.name,但是這里 name 可以為變量。 print('getattr()方法') import foo getattr(foo, 'bar')()總結(jié)
以上是生活随笔為你收集整理的Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DL之DNN优化技术:DNN中抑制过拟合
- 下一篇: Python语言学习之图表可视化:pyt