sssssssssssssssssss
一个 Python 程序是由一个解析器读取的。解析器的输入是一个由词法分析器生成的符号流。本章介绍了词法分析器如何将文件分解为符号。
Python 将程序文本以 Unicode 代码点的方式读入;源文件的编码格式由编码声明给出,其默认值为 UTF-8 ,详见 PEP 3120 。源文件无法被解析时,会引发 SyntaxError 异常。
圆括号、 方括号或大括号中的表达式可以跨多个物理行,而无需使用反斜杠。例如:
month_names = ['Januari', 'Februari', 'Maart', # These are the
'April', 'Mei', 'Juni', # Dutch names
'Juli','Augustus', 'September', # for the months
'Oktober', 'November', 'December'] # of the year
可以在隐式行连接的末尾添加注释。接续行的缩进可以不考虑。并且允许出现空的接续行。在隐式的接续行中是不存在 NEWLINE 符号的。隐式的行连接在三重引用串(后述)中也是合法的,在那种情况下不能添加注释。
一个只包含空格符、制表符、换页符和可能是注释的逻辑行可以忽略(也就是说没有 NEWLINE 符号产生)。在交互式输入语句时,空行的处理可能不同,其依赖于输入-计算-输出循环的实现方式。在标准的交互实现中,一个纯粹的空逻辑行(即不包含任何东西,甚至是空白和注释)可以结束多行语句。
位于逻辑行开始前的空白(空格和制表符)用于计算行的缩进层次,该层次可用于语句的分组。
制表符被(从左到右)替换为一至八个空格,这样直到包括替换部分的总字符数是八的倍数(这与 Unix 中使用的规则是相同的)。第一个非空字符前的空格总数决定了行的缩进。不能使用反斜线在多个物理行之间对缩进进行拆分;第一个反斜线之前的空白字符用于检测缩进。
在以下情形下缩进会被认为是不符合逻辑的:一个源文件中既包含制表符又包含空格,此时如果该文件的意义依赖于包含在空格符中的制表符时,就会触发 TabError 异常。
**跨平台兼容性注意:**由于非 UNIX 平台上文本编辑器的特性,在单个源文件中混合使用空格符和制表符的缩进是不明智的。还需要注意的是,不同的平台可能会显式的限制最大缩进级别。