在paddleocr中遇到了eval()的使用,以前没用过,总结一下,增强理解和记忆
就是eval获得一个字符串输入(字符串),可以是字符串表达式,字符串函数名,字符串类名,会计算字符串中的表达式并返回结果。
import paddle.nn as nn
# 定义一个函数
def aaa(x):
return x**2
# 定义一个类,这里继承自paddle.nn.Layer ,实例化以后,给输入数据,可以直接输出结果。
class Aaa(nn.Layer):
def __init__(self):
super(Aaa, self).__init__()
self.z=3
def forward(self, c):
return c+self.z
if __name__ == '__main__':
b = eval("aaa")
print(b) # 输出函数本身 <function aaa at 0x000002666D2E40D0>
print(b(3)) # 3为输入数据,输出结果为经过计算后的数值 9
a = eval("Aaa")
print(a) # 输出构建的类 <class '__main__.Aaa'>
print(a()) # 输出初始化的类 <__main__.Aaa object at 0x00000266702054C0>
print(a()(9)) # 后面9是输入数据,输出执行结果12