-2

Why this is achieved by repr method only?

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

It's showing

SyntaxError: invalid token

1 Answers1

0

When you call str(datetime.datetime.now()), you get a string representing the current time such as 2019-07-08 19:32:04.078030.

But when repr(datetime.datetime.now()) is called, the actual format of the datetime object is returned. Something like datetime.datetime(2019, 7, 08, 19, 32, 4, 78030).

eval() evaluates the string as a python function. since 2019-07-08 19:32:04.078030 is not a python command, you get an error. datetime.datetime(2019, 7, 08, 19, 32, 4, 78030) however is a python command and is executed.

Overall the programs that will work are

Using str():

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

Using repr():

import datetime
d=datetime.datetime.now()
x=repr(d)
y=eval(x)
print(y)
Prateek Dhanuka
  • 380
  • 2
  • 22