V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
geew
V2EX  ›  问与答

[python]获取函数命名空间

  •  
  •   geew · 2013-11-13 13:04:14 +08:00 · 2291 次点击
    这是一个创建于 4036 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题:
    如何在函数的外部获取到一个函数的命名空间呢? python有提供这个机制吗

    如:
    # coding: utf8
    from functools import wraps


    def test_wrapper(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
    # get func namespace
    # namespace = {'u': 1} 怎么取到这个
    print args
    print kwargs
    return func(*args, **kwargs)
    return wrapper


    @test_wrapper
    def test(u):
    print 'I am test \n'


    if __name__ == '__main__':
    test(1) # 非关键字调用 只能传到args中, 怎么取到字典的形式呢
    test(u=12) # 这样调用可以在kwargs中取到

    输出:
    (1,)
    {}
    I am test

    ()
    {'u': 12}
    I am test
    2 条回复    1970-01-01 08:00:00 +08:00
    binux
        1
    binux  
       2013-11-13 13:52:47 +08:00   ❤️ 1
    import inspect
    inspect.getcallargs(func, *args, **kwarg)

    另:你这个不叫做获得namespace,你还没给参数赋值呢,哪来的空间
    geew
        2
    geew  
    OP
       2013-11-13 14:25:27 +08:00
    @binux 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2624 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.