需求背景
最近在工作上, 遇到了一个比较特殊的需求:
为了安全, 设计一个函数或者装饰器, 然后用户在 "定义/调用" 函数时, 只能访问到我们允许的内置变量和全局变量
通过例子来这解释下上面的需求...引入别的模块, 然后再执行模块中的方法, 也是可行的!...Python_project/ftp/2.py', '__package__': None, 's': {...}, '__name__': '__main__', '__doc__': None}
3
可以看出, 我们并没有定义变量...比如说, 我不确定有多少个变量, 希望通过一个变量名列表, 动态生成这些变量, 在这种情况下, 就能参考这种方法, 不过还是希望谨慎使用, 因为修改了这个, 就是就修改了全局命名空间....,
关于代码运行原理, 其实在关键部位的代码, 都已经加了注释, 可能在exec那部分会比较迷惑, 但其实大家将对应的变量代入字符串就能懂了, 替换之后, 其实也就是函数的定义+执行, 可以通过print