美文网首页
Python 将字符串作为代码运行

Python 将字符串作为代码运行

作者: 全方位小白 | 来源:发表于2020-07-14 23:57 被阅读0次

    我冷静了一辈子,我必须要做出点改变才行。

    今天又是拖到十一点半之后才写日更的一天。Anyway,开始今天的内容。

    今天搞测试用例的时候不同的用例之间只有5%的代码是不同的,因此希望能够用处理字符串的方式来复用其余的95%代码,测试脚本是用Python写的。所以今天会罕见地出现Python的内容。

    Python运行字符串的接口:exec() 与 eval()

    1. exec()

    【以下内容摘自菜鸟教程】:Python 将字符串作为代码执行

    def exec_code(): 
        LOC = """ 
    def factorial(num): 
        fact=1 
        for i in range(1,num+1): 
            fact = fact*i 
        return fact 
    print(factorial(5)) 
    """
        exec(LOC) 
     
    exec_code()
    

    输出为

    120
    

    这段代码中LOC是一个字符串,其中的内容是一个函数体及其调用,最后使用exec()函数执行这段代码块。
    注意事项

    1. 使用时特别要注意缩进的问题;
    2. 如果python只是一层皮,比如调用tensorflow、TVM等时,该方法很可能会失效,原因就要深入到代码的调用逻辑和运行次序中了,此处就不展开了。
    3. 如果字符串是外界引入的,则需要考虑安全问题,此时可以增加一个字典,起到命名空间的作用。(摘自CSDN博客

    举个栗子:

    #Python3版:
    from math import sqrt
    scope = {}
    exec('sqrt = 1', scope)
    print(sqrt(4))
    print(scope['sqrt'])
    

    输出为

    1
    

    2. eval()

    eval()函数相对常见一些,与上边的区别简单讲就是eval()函数是会有返回值的。
    举个栗子:

    >>>n = 6
    >>> eval("n + 4")
    10
    

    相关文章

      网友评论

          本文标题:Python 将字符串作为代码运行

          本文链接:https://www.haomeiwen.com/subject/dxtchktx.html