国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中用字符串調用函數或方法示例代碼

2020-01-04 17:07:01
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于Python用字符串調用函數或方法的相關內容,分享出來供大家參考學習,下面來一起看看詳細的介紹:

先看一個例子:

>>> def foo():    print "foo">>> def bar():    print "bar">>> func_list = ["foo","bar"]>>> for func in func_list:    func()TypeError: 'str' object is not callable

我們希望遍歷執行列表中的函數,但是從列表中獲得的函數名是字符串,所以會提示類型錯誤,字符串對象是不可以調用的。如果我們想要字符串變成可調用的對象呢?或是想通過變量調用模塊的屬性和類的屬性呢?

以下有三種方法可以實現。

eval()

>>> for func in func_list:    eval(func)()foobar

eval() 通常用來執行一個字符串表達式,并返回表達式的值。在這里它將字符串轉換成對應的函數。eval() 功能強大但是比較危險(eval is evil),不建議使用。

locals()和globals()

>>> for func in func_list:    locals()[func]()foobar>>> for func in func_list:    globals()[func]()foobar

locals() 和 globals() 是python/266340.html">python的兩個內置函數,通過它們可以一字典的方式訪問局部和全局變量。

getattr()

getattr() 是 python 的內建函數,getattr(object,name) 就相當于 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()

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。

參考

Calling a function of a module from a string with the function's name in Python

How do I use strings to call functions/methods?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰坪| 楚雄市| 琼结县| 堆龙德庆县| 商洛市| 涞源县| 浏阳市| 缙云县| 赤城县| 金华市| 呈贡县| 民丰县| 伊宁县| 花垣县| 松江区| 宣化县| 肥西县| 岳阳市| 永平县| 塘沽区| 金湖县| 莎车县| 吉木萨尔县| 鄢陵县| 钟山县| 娱乐| 中西区| 广南县| 黄梅县| 景东| 霍城县| 吉水县| 南汇区| 灯塔市| 东宁县| 湘西| 武汉市| 巫山县| 宝坻区| 永城市| 黄平县|