重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果一个函数在不知道自己名字的情况下,怎么才能递归调用自己。这是我一个同事问我的,其实也是获取函数名,但是当时也是回答不出来。
创新互联-专业网站定制、快速模板网站建设、高性价比荆门网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式荆门网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖荆门地区。费用合理售后完善,10年实体公司更值得信赖。
如果你想通过函数的名称来获取函数的运行地址,可以像下面这样实现:
[python] view plain copy
# 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
classstdata(Structure):_fields_=[('pBuf',c_char_p),('buflen',c_int)]N=100buf=create_string_buffer(N)d=stdata()d.buflen=Nd.pBuf=cast(buf,c_char_p)n=CallMyCFunc_GetData(byref(d))关键在于create_string_buffer创建可写buffer;cast转换为char*类型。
谦和、温顺且自持的生活,不乱于心,不困于情,不畏将来,不念过去。