国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python 通過字符串調用函數或方法

n7then / 1480人閱讀

摘要:如果我們想要字符串變成可調用的對象呢或是想通過變量調用模塊的屬性和類的屬性呢以下有三種方法可以實現。通常用來執行一個字符串表達式,并返回表達式的值。在這里它將字符串轉換成對應的函數。

先看一個例子:

>>> 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)()
foo
bar

eval() 通常用來執行一個字符串表達式,并返回表達式的值。在這里它將字符串轉換成對應的函數。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的兩個內置函數,通過它們可以一字典的方式訪問局部和全局變量。

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()
參考

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?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40696.html

相關文章

  • 【數據科學系統學習】Python # 編程基礎[一]

    摘要:在定義函數時給定的名稱稱作形參,在調用函數時你所提供給函數的值稱作實參。調用函數要調用一個函數,需要知道函數的名稱和參數。默認參數值可以有效幫助解決這一情況。是默認參數定義默認參數要牢記一點默認參數必須指向不變對象。 關于數據科學在做什么,我們已經在前兩篇文章中進行了總結,即專題概述和描述性統計分析。要進行數據科學的探索,需要一個好工具,就是Python。從本篇開始,將總結學習Pyth...

    luckyyulin 評論0 收藏0
  • python基礎教程:內置函數(二)

    摘要:繼續講述更多的的內置函數。傳遞以切換緩沖關閉僅允許在二進制模式下,選擇行緩沖僅在文本模式下可用,并且的整數以指示固定大小的塊緩沖區的大小以字節為單位。啟動內置的幫助系統此函數主要在交互式中使用。 繼續講述更多的Python的內置函數。 showImg(https://segmentfault.com/img/remote/1460000019193976); IO操作 input([p...

    xiaodao 評論0 收藏0
  • 100 個基本 Python 面試問題第二部分(21-40)

    摘要:為我們提供了許多內置函數,例如并提供了創建用戶定義函數的能力。會將該變量視為函數級作用域中的局部變量。回到目錄中函數的用途是什么是中的內置函數之一。請注意,這種類型的參數語法不允許將命名參數傳遞給函數。函數接受一個稱為的可選參數。 ...

    2450184176 評論0 收藏0
  • python3 學習筆記

    摘要:本人很少寫代碼一般都是用的去年時用寫過一些收集系統信息的工具當時是邊看手冊邊寫的如今又要用來寫一個生成的工具就又需要查看手冊了至于為什么不用寫那是因為的庫不兼容永中在這里不得不說雖然很火但是一些庫還是不如多不如兼容性好為了避免以后再出這種事 Python3 Study Notes 本人很少寫 python 代碼, 一般都是用 go 的, 去年時用 python 寫過一些收集系統信息的工...

    tuomao 評論0 收藏0
  • python模塊之sys

    摘要:返回的信息特定于當前線程以及當前堆棧幀。出于某些原因,這個值可能無法計算,將返回返回安卓版本的構建時間,以整數表示。僅適用于安卓平臺返回解釋器的檢查間隔??刹僮鞔藢傩詫崿F強制重新加載模塊等。 sys模塊提供對由解釋器使用或維護的某些變量、與解釋器交互的函數的訪問接口。 sys.abiflags 在使用標準configure腳本構建python的POSIX系統上,該屬性包含了PEP 31...

    csRyan 評論0 收藏0

發表評論

0條評論

n7then

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<