1. 外部獲取
從外部的情況好獲取,可以使用指向函數的對象,然后用__name__屬性。
def a(): pass a.__name__
或者
getattr(a,'__name__')
2. 內部獲取
1)使用修飾器的方法
使用修飾器就可以對函數指向一個變量,然后取變量對象的__name__方法。
def timeit(func): def run(*argv): print func.__name__ if argv: ret = func(*argv) else: ret = func() return ret return run @timeit def t(a): print a t(1)
2)使用sys模塊的方法
def a(): print sys._getframe().f_code.co_name
二、 使用inspect模塊動態獲取當前運行的函數名
動態獲取當前運行的函數名很方便,特別是對於一些debug系統來說
import inspect def get_current_function_name(): return inspect.stack()[1][3] class MyClass: def function_one(self): print "%s.%s invoked"%(self.__class__.__name__, get_current_function_name()) if __name__ == "__main__": myclass = MyClass() myclass.function_one()