国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python通過函數名調用函數的幾種場景

瀏覽:2日期:2022-07-10 11:23:27

一、說明

之前寫了一篇“Python執行系統命令教程”講了如何執行系統命令。

除了執行系統命令外,我們有時還需要動態地執行一些python代碼,有經驗的朋友就會知道可以使用內置函數eval實現這一需求,如eval('print(__file__)'),這還是比較簡單的。

但如果要動態執行一個函數,講的資料就會少一點,這次就要看這個需求該如何實現。

二、通過eval實現

2.1 通過eval調用同一個類內的函數

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.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) passdef be_called_function(): print('here is be_called_function.')if __name__ == '__main__': obj = TestA() obj.active_call_function()

三、通過getattr實現

3.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()

3.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() passclass TestB: def be_called_function(self): print('here is be_called_function.')if __name__ == '__main__': obj = TestA() obj.active_call_function()

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

import sysclass 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() passdef be_called_function(): print('here is be_called_function.')if __name__ == '__main__': obj = TestA() obj.active_call_function()

3.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() passif __name__ == '__main__': obj = TestA() obj.active_call_function()

以上就是python通過函數名調用函數的幾種場景的詳細內容,更多關于python通過函數名調用函數的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 成人香蕉xxxxxxx | 一区二区三区在线观看视频 | 99爱在线视频这里只有精品 | 自拍偷在线精品自拍偷无码专区 | 一级一级毛片免费播放 | 日韩国产欧美一区二区三区 | 理论片我不卡在线观看 | 欧美午夜激情影院 | 午夜在线精品不卡国产 | 日本强不卡在线观看 | 亚洲成人自拍 | 日韩第一视频 | 亚洲欧美专区精品久久 | 亚洲天堂男人网 | 欧美与黑人午夜性猛交久久久 | 亚洲精品一级片 | 青青爽国产手机在线观看免费 | 亚洲国产一区二区三区a毛片 | 亚洲夜| 久久久久国产免费 | 一级毛片在线 | 午夜性爽快免费视频播放 | 性猛交毛片 | 午夜一区二区福利视频在线 | 欧美日本一区二区三区 | a免费视频 | 一区二区精品在线观看 | 国产一级在线观看视频 | 亚洲精品美女国产一区 | 久操福利视频 | 性做久久久久久久免费看 | 精品视频一区二区三区免费 | 久久99国产精品一区二区 | 久久色精品| 国产精品毛片va一区二区三区 | 成年人免费毛片 | 亚洲精品成人久久 | 欧美一级毛片日韩一级 | 手机看片精品国产福利盒子 | 国产成人一区二区三区视频免费 | 欧美精品国产制服第一页 |