geew
V2EX  ›  问与答

[python]获取函数命名空间

  •  
  •   geew · Nov 13, 2013 · 2684 views
    This topic created in 4573 days ago, the information mentioned may be changed or developed.
    问题:
    如何在函数的外部获取到一个函数的命名空间呢? 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 replies    1970-01-01 08:00:00 +08:00
    binux
        1
    binux  
       Nov 13, 2013   ❤️ 1
    import inspect
    inspect.getcallargs(func, *args, **kwarg)

    另:你这个不叫做获得namespace,你还没给参数赋值呢,哪来的空间
    geew
        2
    geew  
    OP
       Nov 13, 2013
    @binux 谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4283 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:08 · PVG 18:08 · LAX 03:08 · JFK 06:08
    ♥ Do have faith in what you're doing.