[python]python的反射(续)-exec

作为解释型脚本语言,本质上其实根本不存在反射的问题。因为任意字符串都可以解释为代码。

perl中有eval, python中同样也有,不过细分成了eval和exec.

这个可以算是终极的反射杀器,由于威力太大,python3中在语法上做了一些限制。

允许exec导入到局部变量空间而不是全局空间。

比模块的加载更近一步,我们可以把一部分代码,或者说规则、模板,保存在远程的集中服务器或者配置中心,然后动态通过eval加载。这样就省去了不同机器分发代码的麻烦。

极端情况下,执行的服务器上可以只运行一个通用的框架,核心代码全部从中心服务器获取并注入。这个有点类似erlang的gensvr的思路了。

        str='''
def DEV_R_CI_IOX_CPU():
    """DEV_R_CI_IOX_CPU"""
    oids=".1.3.6.1.2.1.1.1.0"
    ret=_httpsnmpget(oids)
    return ret
t=DEV_R_CI_IOX_CPU
'''
    #str=rpc.getfile(fid)   
    _locals = locals()  
    exec(str,globals(),_locals)  #用局部变量来注入
    f=_locals['t']      #模板中的函数名只有核对意义。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值