鱼C论坛

 找回密码
 立即注册
查看: 1455|回复: 3

eval()函数的作用

[复制链接]
发表于 2021-8-11 14:33:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在百度上查eval()的作用,网上给出的解释是:它的作用是把对应的字符串解析成js代码并运行(将json的字符串解析成为JSON对象);
给出的例子是num=eval(input(“请输入一个整数:”))
或者num=eval(‘x+1’)
我的问题是,如果代码写成num=input("请输入一个整数:")
或者num=x+1
代码一样也没有问题啊。那eval()函数的作用是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[0]: 1j, var[1]: 0})
    eq1_y0 = eval(eq1, {var[0]: 0, var[1]: 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[1], "({0}*x+{1})".format(*[eq1_a, eq1_b])),
               {var[0]: 1j})
    x = -eq2.real / eq2.imag
    y = eq1_a * x + eq1_b
    return "{}={};{}={}".format(var[0], x, var[1], y)


print(solve('x+y=10', '2*x+4*y=16'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-11 16:19:47 | 显示全部楼层
5和"5"不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 04:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表