为什么Python的eval(输入("输入输入:"))会改变输入的数据类型?

leb*_*ski 5 python eval type-conversion

在Python 3中,我编写了一个简单的命令来接受来自用户的整数输入:

x = int(input("Enter a number: "))
Run Code Online (Sandbox Code Playgroud)

如果我跳过该int()部分并简单地使用x = input("Enter a number: "),我的输入数据类型是一个字符串,而不是整数.我明白那个.

但是,如果我使用以下命令:

x = eval(input("Enter a number: "))
Run Code Online (Sandbox Code Playgroud)

输入的数据类型是'int'.

为什么会这样?

bak*_*kal 6

为什么会这样?

x = eval(input("Enter a number: ")) 与...不是一回事 x = eval('input("Enter a number: ")')

前者首先调用input(...),获取一个字符串,例如'5'然后对其进行评估,这就是为什么你得到一个int,这样:

>>> eval('5') # the str '5' is e.g. the value it gets after calling input(...)
5 # You get an int
Run Code Online (Sandbox Code Playgroud)

而后者(更符合您的期望),评估表达式 'input("Enter a number: ")'

>>> x = eval('input("Enter a number: ")')
Enter a number: 5
>>> x 
'5' # Here you get a str
Run Code Online (Sandbox Code Playgroud)