需求背景
最近在工作上, 遇到了一个比较特殊的需求:
为了安全, 设计一个函数或者装饰器, 然后用户在 "定义/调用" 函数时, 只能访问到我们允许的内置变量和全局变量
通过例子来这解释下上面的需求...:func分别是取得全局命名空间中a的值和使用内置命名空间中的函数id获取了a的地址....比如说, 我不确定有多少个变量, 希望通过一个变量名列表, 动态生成这些变量, 在这种情况下, 就能参考这种方法, 不过还是希望谨慎使用, 因为修改了这个, 就是就修改了全局命名空间....好了, 回归到本文, 我们已经知道通过globals函数能够代表全局命名空间, 但是为什么内置命名空间要用globals()['__builtins__'].__dict__来表示?...wrap(func)
为什么我只写伪代码, 因为我发现这个功能实现起来是非常蛋疼!