相关疑难解决方法(0)

exec如何与当地人合作?

我以为这会打印3,但它打印1:

def f():
    a = 1
    exec("a = 3")
    print(a)
Run Code Online (Sandbox Code Playgroud)

python exec locals python-3.x

24
推荐指数
2
解决办法
9049
查看次数

在Python中反思给定函数的嵌套(本地)函数

鉴于功能

def f():
    x, y = 1, 2 
    def get():
        print 'get'
    def post():
        print 'post'
Run Code Online (Sandbox Code Playgroud)

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

>>> get, post = get_local_functions(f)
>>> get()
'get'
Run Code Online (Sandbox Code Playgroud)

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

import inspect
for c in f.func_code.co_consts:
    if inspect.iscode(c):
        print c.co_name, c
Run Code Online (Sandbox Code Playgroud)

结果

get <code object get at 0x26e78 ...>
post <code object post at 0x269f8 ...>
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何获得实际可调用的函数对象.这甚至可能吗?

谢谢你的帮助,

将.

python function introspection inspect

5
推荐指数
1
解决办法
1509
查看次数

标签 统计

python ×2

exec ×1

function ×1

inspect ×1

introspection ×1

locals ×1

python-3.x ×1