Python中用字符串調(diào)用函數(shù)或方法示例代碼
前言
本文主要給大家介紹了關(guān)于Python用字符串調(diào)用函數(shù)或方法的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面來一起看看詳細(xì)的介紹:
先看一個例子:
>>> def foo():
print "foo"
>>> def bar():
print "bar"
>>> func_list = ["foo","bar"]
>>> for func in func_list:
func()
TypeError: 'str' object is not callable
我們希望遍歷執(zhí)行列表中的函數(shù),但是從列表中獲得的函數(shù)名是字符串,所以會提示類型錯誤,字符串對象是不可以調(diào)用的。如果我們想要字符串變成可調(diào)用的對象呢?或是想通過變量調(diào)用模塊的屬性和類的屬性呢?
以下有三種方法可以實現(xiàn)。
eval()
>>> for func in func_list:
eval(func)()
foo
bar
eval() 通常用來執(zhí)行一個字符串表達式,并返回表達式的值。在這里它將字符串轉(zhuǎn)換成對應(yīng)的函數(shù)。eval() 功能強大但是比較危險(eval is evil),不建議使用。
locals()和globals()
>>> for func in func_list:
locals()[func]()
foo
bar
>>> for func in func_list:
globals()[func]()
foo
bar
locals() 和 globals() 是python的兩個內(nèi)置函數(shù),通過它們可以一字典的方式訪問局部和全局變量。
getattr()
getattr() 是 python 的內(nèi)建函數(shù),getattr(object,name) 就相當(dāng)于 object.name,但是這里 name 可以為變量。
返回 foo 模塊的 bar 方法
>>> import foo >>> getattr(foo, 'bar')()
返回 Foo 類的屬性
>>> class Foo:
def do_foo(self):
...
def do_bar(self):
...
>>> f = getattr(foo_instance, 'do_' + opname)
>>> f()
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
參考
Calling a function of a module from a string with the function's name in Python
相關(guān)文章
Pytorch中關(guān)于RNN輸入和輸出的形狀總結(jié)
這篇文章主要介紹了Pytorch中關(guān)于RNN輸入和輸出的形狀總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
python使用minimize()?函數(shù)替代matlab的fmincon函數(shù)
這篇文章主要介紹了python使用minimize()函數(shù)替代matlab的fmincon函數(shù),在matlab中,fmincon函數(shù)可以用于求解帶約束的非線性多變量函數(shù)的最小值,即可以用來求解非線性規(guī)劃問題2022-09-09
Python 中pandas.read_excel詳細(xì)介紹
這篇文章主要介紹了Python 中pandas.read_excel詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-06-06
python使用xlsxwriter實現(xiàn)有向無環(huán)圖到Excel的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了python使用xlsxwriter實現(xiàn)有向無環(huán)圖到Excel的轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12
django數(shù)據(jù)模型on_delete, db_constraint的使用詳解
這篇文章主要介紹了django數(shù)據(jù)模型on_delete, db_constraint的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python實現(xiàn)多條件篩選Excel數(shù)據(jù)并批量繪制直方圖
這篇文章主要為大家介紹了如何Python對Excel數(shù)據(jù)進行多條件篩選和去除并批量繪制直方圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2023-09-09

