python – 如何从函数中获取函数的名称(或者对函数的“自我”引
发布时间:2020-12-20 11:18:31 所属栏目:Python 来源:网络整理
导读:This answer显示函数的内置__name__属性可以从函数外部使用,即print f .__ name__.但是,如何从函数本身中获取此属性? 只使用不合格的__name__没有帮助:print __name__ print __main__. 在f()中使用print f .__ name__看起来很愚蠢 – 我也可以输入“f”.
This answer显示函数的内置__name__属性可以从函数外部使用,即print f .__ name__.但是,如何从函数本身中获取此属性?
只使用不合格的__name__没有帮助:print __name__ print __main__. 在f()中使用print f .__ name__看起来很愚蠢 – 我也可以输入“f”. 或者,是否有一种函数的自身对象,即我可以获得指向以常见方式执行的函数的指针吗? 我不喜欢this question中提出的方法 – 它觉得为这么简单的任务乱砍堆栈不是正确的方法. 动机:我有一个{keyword:function}的字典,从输入中读取关键字并执行适当的功能.我希望每个函数只执行一次,所以我希望每个函数在执行时在一些数据结构中注册自己.我知道我可以在字典中做到这一点,但我想为此使用单独的数据结构. Python版本是2.6.4 BTW 解决方法
也许你应该使用onlyonce装饰器装饰你正在调用的每个函数?那将是更加pythonic.概念证明如下.
called = set() def onlyonce(fn): def decorated(*largs,**kargs): if fn not in called: called.add(fn) print "Calling" fn(*largs,**kargs) else: print "Already called" return decorated @onlyonce def test_function(): print "I am getting called now" test_function() test_function() test_function() test_function() 此外,函数是“不可变的”,可以存储为字典键.您不必依赖名称.根据您的使用情况,这可能是一个优势(或缺点). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |