为什么输入会在给定非英语文本时抛出不同的异常类型

时间:2017-06-01 14:05:33

标签: python-2.7

输入不适用于字符串(python 2.7),并且当用户使用拉丁文本提供时会抛出一个NameError。

如果给它非英语文本(比如说西里尔语),它将抛出一个SyntaxError

为什么?

1 个答案:

答案 0 :(得分:0)

input视为表达式求值程序(与eval不安全,并且已被Python 3中的严格字符串输入替换。

所以它就像你在控制台中输入标识符一样:

SyntaxError: invalid syntax
>>> fac
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
NameError: name 'fac' is not defined
>>> 

fac有效标识符(因为除了其他注意事项,它符合ASCII标准)但未定义,因此NameError

现在(使用法语口音)

>>> féc
  File "<interactive input>", line 1
    féc
     ^
SyntaxError: invalid syntax

请注意,解析在第一个非ASCII字符处停止,因此未查找任何标识符。 SyntaxError首先来到这里。

现在,您似乎需要raw_input()才能输入字符串(或在引号之间输入您的西里尔字符串)。