[python]获取函数命名空间

2013-11-13 13:04:14 +08:00
 geew
问题:
如何在函数的外部获取到一个函数的命名空间呢? 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
2290 次点击
所在节点    问与答
2 条回复
binux
2013-11-13 13:52:47 +08:00
import inspect
inspect.getcallargs(func, *args, **kwarg)

另:你这个不叫做获得namespace,你还没给参数赋值呢,哪来的空间
geew
2013-11-13 14:25:27 +08:00
@binux 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89115

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX