Python的程序通过解析器进行读取,再通过分词器生成词元流,转为Unicode代码点。
行
每个程序的源文件为了便于编写和阅读,都会有多行。那么如果一行很长你的屏幕显示不下去,或者你不希望那么一行那么长,如何处理?
- 显示拼接行
可用反斜杠(\)拼接。规则如下:在不以注释内的反斜杠结尾时,上一行将与下一行拼接成一行,然后这个反斜杠及其后的换行符被删除。
name = "adsf\
sfadsfadsfasdf"
print(name)
#adsfsfadsfadsfasdf- 隐式拼接行
圆括号、方括号、花括号内的表达式可以分成多个物理行,不必使用反斜杠。
month_names = ['January','February','March', # 1-3月份
'April','May','June', # 4-6月份
'July','August','September', # 7-9月份
'October','November','December'] # 10-12月份- 隐式行拼接可含注释;
- 后续行的缩进并不重要;
- 还支持空的后续行。
缩进
程序编写时,使用空白符对行进行缩进,形成层级。不紧紧会了美观,还通过计算缩进层级决定语句组块。
首个非空字符前的空格数决定了该行的缩进层次。(注意:缩进不能用反斜杠进行多行拼接,在用多个反斜杠进行多行拼接时,首个反斜杠之前的空白符才决定缩进的层次)
# 函数定义的缩进
def calculate_average(numbers):
# 第一级缩进 (4空格)
total = sum(numbers)
count = len(numbers)
if count == 0:
# 第二级缩进 (8空格)
return 0 # 特殊情况处理
else:
average = total / count
return average
# 类定义的缩进
class Student:
# 类体第一级缩进 (4空格)
def __init__(self, name, age):
# 方法体第一级缩进 (8空格)
self.name = name
self.age = age
def display_info(self):
# 方法体第一级缩进 (8空格)
if self.age >= 18:
# 第二级缩进 (12空格)
print(f"{self.name} 是成年人")
else:
print(f"{self.name} 是未成年人")
# 循环和条件语句的缩进
numbers = [1, 2, 3, 4, 5]
even_squares = []
for num in numbers:
# 循环体第一级缩进 (4空格)
if num % 2 == 0:
# 条件体第一级缩进 (8空格)
even_squares.append(num ** 2)
else:
print(f"跳过奇数: {num}")
print(f"偶数的平方: {even_squares}")
# 多行语句的缩进
long_string = (
"这是一个非常长的字符串,"
"为了可读性我们把它分成多行,"
"注意括号内的对齐方式"
)
result = some_long_function_name(
argument1, argument2,
argument3, argument4
)注释
注释以井号 (#) 开头,在行末尾截止。
注意,井号不是字符串字面值。除非应用隐式行拼接规则,否则,注释代表逻辑行结束。
句法不解析注释。
编码声明
Python 脚本第一或第二行的注释匹配正则表达式 coding[=:]\s*([-\w.]+) 时,该注释会被当作编码声明;
这个表达式的第一组指定了源码文件的编码。
编码声明必须独占一行,在第二行时,则第一行必须也是注释。编码表达式的形式如下:
# -*- coding: <encoding-name> -*-
















