婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python通過函數名調用函數的幾種方法總結

python通過函數名調用函數的幾種方法總結

熱門標簽:小蘇云呼電話機器人 北瀚ai電銷機器人官網手機版 佛山400電話辦理 儋州電話機器人 朝陽手機外呼系統 北京電銷外呼系統加盟 市場上的電銷機器人 所得系統電梯怎樣主板設置外呼 地圖標注面積

一、通過eval實現

 常用內置函數

(不用import就可以直接使用) :

  • help(obj) 在線幫助, obj可是任何類型
  • callable(obj) 查看一個obj是不是可以像函數一樣調用
  • repr(obj) 得到obj的表示字符串,可以利用這個字符串
  • eval重建該對象的一個拷貝
  • eval_r(str) 表示合法的python表達式,返回這個表達式
  • dir(obj) 查看obj的name space中可見的name
  • hasattr(obj,name) 查看一個obj的name space中是否有name
  • getattr(obj,name) 得到一個obj的name space中的一個name
  • setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object
  • delattr(obj,name) 從obj的name space中刪除一個name vars(obj) 返回一個object的name
  • space。用dictionary表示
  • locals() 返回一個局部name space,用dictionary表示
  • globals() 返回一個全局name space,用dictionary表示
  • type(obj) 查看一個obj的類型
  • isinstance(obj,cls) 查看obj是不是cls的instance
  • issubclass(subcls,supcls) 查看subcls是不是supcls的子類

1.通過eval調用同一個類內的函數 eval()使用原因:

1)在編譯語言里要動態地產生代碼,基本上是不可能的,但動態語言是可以,意味著軟件已經部署到服務器上了,但只要作很少的更改,只好直接修改這部分的代碼,就可立即實現變化,不用整個軟件重新加載。

2)在machin learning里根據用戶使用這個軟件頻率,以及方式,可動態地修改代碼,適應用戶的變化。

eval()函數

eval(expression[, globals[, locals]])
  • expression – 表達式。
  • globals – 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。
  • locals – 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

返回傳入字符串的表達式的結果

class TestA:
    def __init__(self):
        self.config_dict = {
            "be_called_function_name": "self.be_called_function()",
        }
        pass

    def active_call_function(self):
        print("here is active_call_function.")
        be_called_function_name = self.config_dict["be_called_function_name"]
        # 就直接調用。如果有其他參數,一樣地傳就好了
        # 另外也可以是"be_called_function_name"是"be_called_function",然后eval(be_called_function_name)()
        eval(be_called_function_name)
        pass

    def be_called_function(self):
        print("here is be_called_function.")

if __name__ == "__main__":
    obj = TestA()
    obj.active_call_function()

2.通過eval調用同一個文件內的一級函數

class TestA:
    def __init__(self):
        self.config_dict = {
            "be_called_function_name": "be_called_function()",
        }
        pass

    def active_call_function(self):
        print("here is active_call_function.")
        be_called_function_name = self.config_dict["be_called_function_name"]
        # 就直接調用。如果有其他參數,一樣地傳就好了
        # 另外也可以是"be_called_function_name"是"be_called_function",然后eval(be_called_function_name)()
        eval(be_called_function_name)
        pass

def be_called_function():
    print("here is be_called_function.")

if __name__ == "__main__":
    obj = TestA()
    obj.active_call_function()

二、通過getattr實現

getattr() 函數用于返回一個對象屬性值。語法如下:

getattr(object, name[, default])
  • object – 對象。
  • name – 字符串,對象屬性。
  • default – 默認返回值,如果不提供該參數,在沒有對應屬性時,將觸發 AttributeError。

getattr(object, name) = object.name
getattr(a, ‘b')的作用就和a.b是一樣的

示例:

result = obj.method(args)
 
// 使用getattr
func = getattr(obj, "method")
result = func(args)
// 或者寫成一行
result = getattr(obj, "method")(args)

主要有兩種異常,異常的安全用法:
AttributeError:對象中沒有該屬性。

try:
    func = getattr(obj, "method")
except AttributeError:
    ...... deal
else:
    result = func(args)
 
// 或指定默認返回值
func = getattr(obj, "method", None)
if func:
    func(args)

TypeError: 不可調用

func = getattr(obj, "method", None)
if callable(func):
    func(args)

1.通過函數名調用同一個類內的函數

class TestA:
    def __init__(self):
        self.config_dict = {
            "be_called_function_name": "be_called_function",
        }
        pass

    def active_call_function(self):
        print("here is active_call_function.")
        # getaattr(module_name, function_name),module_name傳self即可
        be_called_function = getattr(self, self.config_dict["be_called_function_name"])
        # 就直接調用。如果有其他參數,一樣地傳就好了
        be_called_function()
        pass

    def be_called_function(self):
        print("here is be_called_function.")


if __name__ == "__main__":
    obj = TestA()
    obj.active_call_function()

2.通過函數名調用其他類的函數

class TestA:
    def __init__(self):
        self.config_dict = {
            "be_called_function_name": "be_called_function",
        }
        pass

    def active_call_function(self):
        print("here is active_call_function.")
        # getaattr(module_name, function_name),module_name傳被調用的函數所在的類的類實例
        testb_obj = TestB()
        be_called_function = getattr(testb_obj, self.config_dict["be_called_function_name"])
        # 就直接調用。如果有其他參數,一樣地傳就好了
        be_called_function()
        pass


class TestB:
    def be_called_function(self):
        print("here is be_called_function.")


if __name__ == "__main__":
    obj = TestA()
    obj.active_call_function()

3.通過函數名調用同文件的一級函數

import sys


class TestA:
    def __init__(self):
        self.config_dict = {
            "be_called_function_name": "be_called_function",
        }
        pass

    def active_call_function(self):
        print("here is active_call_function.")
        # getaattr(module_name, function_name),module_name傳當前模塊名
        module_name = sys.modules['__main__']
        be_called_function = getattr(module_name, self.config_dict["be_called_function_name"])
        # 就直接調用。如果有其他參數,一樣地傳就好了
        be_called_function()
        pass


def be_called_function():
    print("here is be_called_function.")


if __name__ == "__main__":
    obj = TestA()
    obj.active_call_function()

4.通過函數名調用在其他文件的一級函數

class TestA:
    def __init__(self):
        self.config_dict = {
            "be_called_function_name": "be_called_function",
        }
        pass

    def active_call_function(self):
        print("here is active_call_function.")
        # getaattr(module_name, function_name),module_name傳函數所在模塊名
        # __import__()傳函數所在文件
        module_name = __import__("test_call_function_by_string1")
        be_called_function = getattr(module_name, self.config_dict["be_called_function_name"])
        # 就直接調用。如果有其他參數,一樣地傳就好了
        be_called_function()
        pass


if __name__ == "__main__":
    obj = TestA()
    obj.active_call_function()

到此這篇關于python通過函數名調用函數的幾種方法總結的文章就介紹到這了,更多相關python通過函數名調用函數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • OpenCV-Python實現通用形態學函數
  • Python量化交易實戰之使用Resample函數轉換“日K”數據
  • Python函數裝飾器的使用教程
  • 解決Python中的modf()函數取小數部分不準確問題
  • 淺談Python中的函數(def)及參數傳遞操作
  • Python基礎之函數嵌套知識總結
  • python 定義函數 返回值只取其中一個的實現
  • 這三個好用的python函數你不能不知道!

標簽:江蘇 定西 云南 金融催收 商丘 龍巖 寧夏 酒泉

巨人網絡通訊聲明:本文標題《python通過函數名調用函數的幾種方法總結》,本文關鍵詞  python,通過,函數,名,調用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python通過函數名調用函數的幾種方法總結》相關的同類信息!
  • 本頁收集關于python通過函數名調用函數的幾種方法總結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品国产三级国产普通话99 | 日韩欧美激情在线| 激情久久久久久久久久久久久久久久| 国产精品久久久久久久久图文区 | 国模套图日韩精品一区二区| 亚洲欧美日韩在线不卡| 日韩欧美一二区| 欧洲一区二区三区在线| 美腿丝袜亚洲综合| 日韩激情av在线| 国产精品理伦片| 精品动漫一区二区三区在线观看| 欧美熟乱第一页| voyeur盗摄精品| 国产在线不卡一区| 亚洲成人福利片| 一区二区三区精品视频在线| 国产婷婷色一区二区三区四区| 欧美日韩精品电影| 99久久精品费精品国产一区二区| 看片网站欧美日韩| 青青草国产成人99久久| 亚洲最大的成人av| 午夜精品一区在线观看| 亚洲欧洲精品一区二区精品久久久| 国产女同性恋一区二区| 26uuu精品一区二区三区四区在线| 精品伦理精品一区| 国产日韩欧美精品在线| 国产日产精品1区| 日韩写真欧美这视频| 精品国产sm最大网站免费看| 国产亚洲欧美日韩在线一区| 国产精品午夜电影| 亚洲美女视频在线观看| 亚洲一区视频在线| 蜜臀av一区二区在线免费观看| 九一久久久久久| 成人免费高清在线观看| 91在线国产福利| 色欧美88888久久久久久影院| 91麻豆国产自产在线观看| 在线观看国产一区二区| 欧美电影在线免费观看| 久久综合九色综合欧美亚洲| 国产欧美精品一区| 一区二区三区四区五区视频在线观看| 亚洲高清不卡在线观看| 久久精品久久99精品久久| 国产成人精品亚洲日本在线桃色| 成人免费看视频| 欧美精品久久99| 国产丝袜欧美中文另类| 亚洲一区二区三区中文字幕在线 | 国产欧美一区在线| 中文一区二区在线观看| 亚洲精品一二三区| 一区二区三区精品在线| 国产一本一道久久香蕉| 色网站国产精品| 欧美精品一区二区三区很污很色的 | 一区二区三区日韩在线观看| 免费成人av资源网| 99久久99精品久久久久久| 欧美大片在线观看一区| 自拍偷拍欧美激情| 久久精品国产精品亚洲精品| 色综合天天综合色综合av| 欧美v日韩v国产v| 一区二区三区蜜桃网| 国产成人在线观看免费网站| 欧美三区在线视频| 亚洲欧洲成人自拍| 国产乱码精品1区2区3区| 欧美日韩精品一二三区| 久久综合色8888| 日韩成人伦理电影在线观看| 成人天堂资源www在线| 欧美一区二区日韩| 亚洲欧美另类久久久精品2019| 香港成人在线视频| 国产精品夜夜嗨| 日韩欧美精品三级| 亚洲综合在线五月| 国产福利一区在线| 91超碰这里只有精品国产| 亚洲伦理在线精品| 黄色精品一二区| 日韩一区二区三区视频在线| 亚洲激情在线播放| 不卡的av网站| 久久久高清一区二区三区| 亚洲免费三区一区二区| 风流少妇一区二区| 久久中文字幕电影| 麻豆视频一区二区| 欧美一级久久久| 日本强好片久久久久久aaa| 在线观看日韩电影| 一区二区三区在线观看国产| 色综合久久88色综合天天免费| 亚洲日本一区二区| 91福利精品第一导航| 亚洲一区二区中文在线| 欧美日韩国产另类不卡| 日韩电影在线观看电影| 日韩美女主播在线视频一区二区三区| 日韩国产欧美一区二区三区| 678五月天丁香亚洲综合网| 日韩不卡手机在线v区| 精品91自产拍在线观看一区| 国产在线不卡视频| 亚洲欧美日韩精品久久久久| 欧美色涩在线第一页| 另类中文字幕网| 国产无遮挡一区二区三区毛片日本 | 亚洲综合在线视频| 99久久精品国产精品久久| 亚洲天堂成人网| 在线观看视频一区| 日韩精品电影在线| 欧美一区二区视频免费观看| 国产一区在线看| 国产人久久人人人人爽| 不卡大黄网站免费看| 1区2区3区欧美| 777奇米成人网| 国产成人8x视频一区二区| 亚洲色图欧美激情| 欧美一级欧美三级在线观看| 国产精品一二三四区| 亚洲一区二区视频在线观看| 精品久久久久久亚洲综合网| a4yy欧美一区二区三区| 免费在线看成人av| 成人免费在线播放视频| 日韩欧美成人一区二区| 色婷婷综合久久久久中文| 美女视频一区在线观看| 1000精品久久久久久久久| 91精品国产综合久久久久久漫画| 成人免费毛片a| 免费成人结看片| 亚洲综合免费观看高清完整版在线| 欧美刺激午夜性久久久久久久 | 欧美日韩美少妇| 波多野结衣在线aⅴ中文字幕不卡| 亚洲成a人片综合在线| 亚洲国产成人自拍| 日韩亚洲欧美综合| 欧美中文字幕一区二区三区亚洲 | 精品国产乱码久久久久久图片 | 亚洲一级二级三级在线免费观看| 欧美激情一区二区在线| 欧美电影免费观看高清完整版| 欧美无乱码久久久免费午夜一区 | 成人免费精品视频| 亚洲激情欧美激情| 一区二区三区在线视频观看58| 国产亚洲综合在线| 日韩视频123| 制服丝袜中文字幕一区| 欧美色综合网站| 99久久免费视频.com| 国产乱码精品1区2区3区| 蜜臀av性久久久久av蜜臀妖精 | 日韩一级免费观看| 4hu四虎永久在线影院成人| 欧美日韩国产综合一区二区| 欧美在线看片a免费观看| 欧美在线你懂的| 欧美影视一区在线| 91网站在线播放| 99久久久精品免费观看国产蜜| 美国十次了思思久久精品导航| 婷婷综合在线观看| 亚洲一区av在线| 亚洲成人av福利| 图片区小说区国产精品视频| 亚洲已满18点击进入久久| 国产女主播一区| 久久久久久久久99精品| 精品国产精品一区二区夜夜嗨 | 激情伊人五月天久久综合| 国内精品免费**视频| 国产成人av自拍| av午夜一区麻豆| 色域天天综合网| 欧美一级xxx| 国产欧美精品在线观看| 亚洲欧美另类久久久精品| 日本在线不卡视频| 在线看国产一区二区| 欧美高清在线精品一区| 美日韩一级片在线观看| 欧美综合欧美视频| 国产精品久久久久天堂| 国产精品中文有码| 欧美大片顶级少妇| 婷婷中文字幕一区三区|