Python将字符串作为代码运⾏
我冷静了⼀辈⼦,我必须要做出点改变才⾏。
今天⼜是拖到⼗⼀点半之后才写⽇更的⼀天。Anyway,开始今天的内容。
今天搞测试⽤例的时候不同的⽤例之间只有5%的代码是不同的,因此希望能够⽤处理字符串的⽅式来复⽤其余的95%代码,测试脚本是⽤Python写的。所以今天会罕见地出现Python的内容。
Python运⾏字符串的接⼝:exec() 与 eval()
####1. exec()
【以下内容摘⾃菜鸟教程】:
def exec_code():
LOC = """
def factorial(num):
fact=1
for i in range(1,num+1):
fact = fact*i
return fact
print(factorial(5))
"""
菜鸟教程python函数exec(LOC)
exec_code()
输出为
120
这段代码中LOC是⼀个字符串,其中的内容是⼀个函数体及其调⽤,最后使⽤exec()函数执⾏这段代码块。
注意事项
1. 使⽤时特别要注意缩进的问题;
2. 如果python只是⼀层⽪,⽐如调⽤tensorflow、TVM等时,该⽅法很可能会失效,原因就要深⼊到代码的调⽤逻辑和运⾏次序中
了,此处就不展开了。
3. 如果字符串是外界引⼊的,则需要考虑安全问题,此时可以增加⼀个字典,起到命名空间的作⽤。(摘⾃
举个栗⼦:
#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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。