需求背景
最近在工作上, 遇到了一个比较特殊的需求:
为了安全, 设计一个函数或者装饰器, 然后用户在 "定义/调用" 函数时, 只能访问到我们允许的内置变量和全局变量
通过例子来这解释下上面的需求...我们真正想要讨论的是下面的例子:
# 装饰函数
def wrap(f):
# 调用用户传入的函数
f()
a = 123
# 用户自定义函数
def func():
import...注: globals函数 是用来打印当前全局命名空间的函数, 同样, 也能通过修改这个函数返回的字典对应的key, 实现全局命名空间的修改.例如:
s = globals()
print s
s['a'...它提供四种用处:
1.对是否是模块,框架,函数等进行类型检查。...,
关于代码运行原理, 其实在关键部位的代码, 都已经加了注释, 可能在exec那部分会比较迷惑, 但其实大家将对应的变量代入字符串就能懂了, 替换之后, 其实也就是函数的定义+执行, 可以通过print