python里怎么样通过函数名称来获取函数地址

如果你想通过函数的名称来获取函数的运行地址,可以像下面这样实现:

# File: builtin-import-example-2.py

def getfunctionbyname(module_name, function_name):
module = __import__(module_name)
return getattr(module, function_name)

print( repr(getfunctionbyname("dbm", "open")) )

在这段代码里,通过open字符串的名称获取数据库管理模块dbm的open函数地址。
运行之后,输出如下:

=== RESTART: D:\work\csdn\python_Game1\example\builtin-import-example-2.py ===
<function open at 0x00000226467B2BF8>
>>> 

python获取调用栈中的函数信息

 

导入sys模块,

sys._getframe(i)表示栈中第i层,i=0表示栈顶

sys.getframe(i).f_code.co_name表示第i层的函数

例如

import treePlotter as tp
import sys

def a():
b()
def b():
c()
def c():
print(sys._getframe(0).f_code.co_name)
print(sys._getframe(1).f_code.co_name)
print(sys._getframe(2).f_code.co_name)
a()
返回值为
D:\python\python.exe F:/python/Tree/two.py
c
b
a

 

posted @ 2019-08-05 20:28  C,python,linux,java  阅读(1408)  评论(0编辑  收藏  举报