gpt4 book ai didi

python - 在 Python 中自省(introspection)给定函数的嵌套(本地)函数

转载 作者:太空狗 更新时间:2023-10-30 00:47:03 26 4
gpt4 key购买 nike

给定函数

def f():
x, y = 1, 2
def get():
print 'get'
def post():
print 'post'

有没有办法让我以调用它们的方式访问它的本地 get() 和 post() 函数?我正在寻找一个可以像上面定义的函数 f() 一样工作的函数:

>>> get, post = get_local_functions(f)
>>> get()
'get'

我可以像这样访问那些本地函数的代码对象

import inspect
for c in f.func_code.co_consts:
if inspect.iscode(c):
print c.co_name, c

结果

get <code object get at 0x26e78 ...>
post <code object post at 0x269f8 ...>

但我不知道如何获取实际的可调用函数对象。这可能吗?

谢谢你的帮助,

将.

最佳答案

你已经很接近了——只是缺少模块:

import inspect
import new

def f():
x, y = 1, 2
def get():
print 'get'
def post():
print 'post'

for c in f.func_code.co_consts:
if inspect.iscode(c):
f = new.function(c, globals())
print f # Here you have your function :].

但为什么要这么麻烦呢?使用类不是更容易吗?无论如何,实例化看起来像一个函数调用。

关于python - 在 Python 中自省(introspection)给定函数的嵌套(本地)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com