Python 为什么我们可以';在这里不能用带str的eval?
为什么这只能通过Python 为什么我们可以';在这里不能用带str的eval?,python,python-3.x,oop,Python,Python 3.x,Oop,为什么这只能通过repr方法实现 import datetime d=datetime.datetime.now() x=str(d) y=eval(x) print(y) 正在放映 SyntaxError: invalid token 调用str(datetime.datetime.now())时,会得到一个表示当前时间的字符串,例如2019-07-08 19:32:04.078030 但是当调用repr(datetime.datetime.now())时,会返回datetime对象的实际
repr
方法实现
import datetime
d=datetime.datetime.now()
x=str(d)
y=eval(x)
print(y)
正在放映
SyntaxError: invalid token
调用str(datetime.datetime.now())
时,会得到一个表示当前时间的字符串,例如2019-07-08 19:32:04.078030
但是当调用repr(datetime.datetime.now())
时,会返回datetime对象的实际格式。类似于datetime.datetime(2019、7、08、19、32、47830)
eval()
将字符串作为python函数进行计算。由于2019-07-08 19:32:04.078030
不是python命令,因此会出现错误datetime.datetime(2019、7、08、19、32、47830)
不过是一个python命令,可以执行
总的来说,有效的计划是
使用str()
:
使用repr()
:
你看了你要计算的字符串了吗?只有一个是语法上有效的Python。对不起,你能说得更具体一点吗?但我的程序在不使用eval时运行良好,为什么?你是什么意思?你的意思是没有错误吗?是的,删除eval,就不会有错误是的,删除eval不会导致错误,但是你的输出现在看起来像
datetime.datetime(2019,7,08,19,32,4,78030)
而不是2019-07-08 19:32:04.078030
是的,找到了解决方案。谢谢
import datetime
d=datetime.datetime.now()
x=str(d)
print(x)
import datetime
d=datetime.datetime.now()
x=repr(d)
y=eval(x)
print(y)