本文實(shí)例主要是Python中獲取當(dāng)前運(yùn)行函數(shù)的名稱,具體如下。
python 具有強(qiáng)大的自省能力,在函數(shù)運(yùn)行時(shí),可以在函數(shù)內(nèi)部獲取到當(dāng)前所在的函數(shù)名稱,請看示例代碼
#coding=utf-8 import sys import inspect def my_name(): print '1' ,sys._getframe().f_code.co_name print '2' ,inspect.stack()[0][3] def get_current_function_name(): print '5', sys._getframe().f_code.co_name return inspect.stack()[1][3] class MyClass: def function_one(self): print '3',inspect.stack()[0][3] print '4', sys._getframe().f_code.co_name print "6 %s.%s invoked"%(self.__class__.__name__, get_current_function_name()) if __name__ == '__main__': my_name() myclass = MyClass() myclass.function_one()
示例演示了兩種獲取當(dāng)前所在函數(shù)名稱的方法,一種是用sys內(nèi)置模塊,一種是使用inspect模塊。運(yùn)行結(jié)果如下:
1 my_name 2 my_name 3 function_one 4 function_one 5 get_current_function_name 6 MyClass.function_one invoked
sys.getframe().f_code.co_name 方法永遠(yuǎn)獲取當(dāng)前所在的函數(shù)名稱,inspect.stack()方法相對更靈活一些,在get_current_function_name函數(shù)中,sys獲取的函數(shù)名稱是get_cu
rrent_function_name,而inspect方法返回的結(jié)果是function_one。inspect.stack記錄了當(dāng)前的棧內(nèi)信息,想進(jìn)一步了解可以打印inspect.stack()信息。
我在function_one函數(shù)中調(diào)用了get_current_function_name,因此inspect.stack()返回的list中的第一個(gè)元組是有關(guān)get_current_function_name信息的,
第二個(gè)元組才是function_one的相關(guān)信息。
總結(jié)
以上就是本文關(guān)于Python獲取當(dāng)前函數(shù)名稱方法實(shí)例分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選