The built in eval() function requires a string argument. However Python interpreter treats the string as a Python expression and evaluates if it is valid and then returns the type object resulting from expression.
String containing arithmetic expression
>>> x=eval('2+2')
>>> type(x)
<class 'int'>
>>> x
4String evaluating to list/tuple
>>> x=eval('tuple([1,2,3])')
>>> x
(1, 2, 3)
>>> type(x)
<class 'tuple'>String containing list comprehension expression
>>> x = eval('list((a*2 for a in range(5)))')
>>> x
[0, 2, 4, 6, 8]
>>> type(x)
<class 'list'>