为什么我们不能在这里使用带str的eval?

时间:2019-07-08 06:42:59

标签: python python-3.x oop

为什么只能通过repr方法来实现?

import datetime
d=datetime.datetime.now()
x=str(d)
y=eval(x)
print(y)

正在显示

SyntaxError: invalid token

1 个答案:

答案 0 :(得分:0)

调用str(datetime.datetime.now())时,会得到一个表示当前时间的字符串,例如2019-07-08 19:32:04.078030

但是当调用repr(datetime.datetime.now())时,将返回datetime对象的实际格式。像datetime.datetime(2019, 7, 08, 19, 32, 4, 78030)之类的东西。

eval()将字符串评估为python函数。由于2019-07-08 19:32:04.078030不是python命令,因此会出现错误。 datetime.datetime(2019, 7, 08, 19, 32, 4, 78030)是python命令并已执行。

所有可以使用的程序都是

使用str()

import datetime
d=datetime.datetime.now()
x=str(d)
print(x)

使用repr()

import datetime
d=datetime.datetime.now()
x=repr(d)
y=eval(x)
print(y)