@spiritnotes
2016-03-08T08:07:17.000000Z
字数 742
阅读 6179
Python
在程序处理中,有时候需要出现获取函数名字,这时有可能在函数内部,也有可能在函数外部,不同的情况下应该如何获取呢?
在函数外部比较简单,直接采用__name__即可
def fun_name():passz = fun_nameprint(z.__name__)print(getattr(z,'__name__'))
而在函数内部就需要复杂一点了,有如下方法:
def fun_name():import sysprint(sys._getframe().f_code.co_name)z = fun_namez()
def dec_name(f):name = f.__name__def new_f(*a, **ka):return f(*a, __name__ = name, **ka)return new_f@dec_namedef fun_name(x, __name__):print(__name__)z = fun_namez(1)
import inspectdef fun_name():print(inspect.stack()[0][3])z = fun_namez()
代码: https://github.com/spiritwiki/codes/tree/master/LearnPython
函数外边获得函数的名字fun_namefun_name函数内部通过sys._getframe().f_code.co_name获得名字fun_name通过装饰器将名字作为参数传入函数fun_name通过inspect获取名字fun_name
