lemon_wb 发表于 2021-8-11 14:33:37

eval()函数的作用

在百度上查eval()的作用,网上给出的解释是:它的作用是把对应的字符串解析成js代码并运行(将json的字符串解析成为JSON对象);
给出的例子是num=eval(input(“请输入一个整数:”))
或者num=eval(‘x+1’)
我的问题是,如果代码写成num=input("请输入一个整数:")
或者num=x+1
代码一样也没有问题啊。那eval()函数的作用是什么?{:5_111:}

逃兵 发表于 2021-8-11 14:41:05

eval()
用来去掉字符串最外层的引号

假如我们有个字符串形式的字典

string = "{'data': 123, 'name': 'taobing', 'time': '2021811 14:37:40', 'other': {'IP': '192.168.1.1'}}"

想把它的数据类型从字符串变为字典

可以直接dic = eval(string)

kogawananari 发表于 2021-8-11 14:48:30

js不分语句和表达式 直接把字符串当成代码执行并且返回
python的eval只能把代码当成表达式执行并返回
eval还可以传参把参数带入到字符串里 例子:
def solve(eq1, eq2, var=('x', 'y')):
    eq1 = eq1.replace("=", "-(") + ")"
    eq1_x0 = eval(eq1, {var: 1j, var: 0})
    eq1_y0 = eval(eq1, {var: 0, var: 1j})
    eq1_a = -(eq1_x0.imag) / (eq1_y0.imag)
    eq1_b = -eq1_y0.real / eq1_y0.imag
    eq2 = eq2.replace("=", "-(") + ")"
    eq2 = eval(eq2.replace(var, "({0}*x+{1})".format(*)),
               {var: 1j})
    x = -eq2.real / eq2.imag
    y = eq1_a * x + eq1_b
    return "{}={};{}={}".format(var, x, var, y)


print(solve('x+y=10', '2*x+4*y=16'))

南归 发表于 2021-8-11 16:19:47

5和"5"不一样
页: [1]
查看完整版本: eval()函数的作用