国产探花免费观看_亚洲丰满少妇自慰呻吟_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?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 家居| 泗水县| 聊城市| 营山县| 九寨沟县| 龙胜| 尼木县| 扬州市| 十堰市| 舟山市| 波密县| 彰化县| 吉木萨尔县| 衡阳县| 柞水县| 区。| 师宗县| 六枝特区| 保亭| 宣汉县| 珠海市| 财经| 来凤县| 甘肃省| 桂林市| 闻喜县| 隆安县| 儋州市| 三都| 宽城| 北宁市| 平凉市| 泸定县| 马公市| 田阳县| 东乡县| 汉沽区| 保亭| 英吉沙县| 桃源县| 仁化县|