1 关于注释
Python 使用井号#作为单行注释的符号, 使用三个连续的单引号'''或者三个连续的双引号"""注释多行内容。
2 数字
2.1 基本运算
解释器像一个简单的计算器:你可以输入一个表达式,它将给出结果值。 表达式语法很直观:运算符 +
, -
, *
和 /
可被用来执行算术运算;圆括号 (()
) 可被用来进行分组。 例如:
python
print(2 + 2)
print(50 - 5*6)
print((50 - 5*6) / 4)
print(8 / 5)
整数(如,2
、4
、20
)的类型是 int,带小数(如,5.0
、1.6
)的类型是 float。
除法运算 (/
) 总是返回浮点数。 如果要做得到一个整数结果你可以使用 //
运算符;要计算余数你可以使用 %
:
python
print(17 / 3) # 经典除法运算返回一个浮点数
print(17 // 3) # 向下取整除法运算会丢弃小数部分
print(17 % 3) # % 运算返回相除的余数
2.2 乘方
Python 用 **
运算符计算乘方,**
比 -
的优先级更高, 所以 -3**2
会被解释成 -(3**2)
,因此,结果是 -9
。要避免这个问题,并且得到 9
, 可以用 (-3)**2
。
python
print(5 ** 2) # 5 的平方
print(2 ** 7) # 2 的 7 次方
2.3 赋值
等号(=
)用于给变量赋值,如果变量未定义(即,未赋值),使用该变量会提示not defined错误:
python
width = 20
height = 5 * 9
print(width * height)
除了 int 和 float,Python 还支持其他数字类型,例如 Decimal 或 Fraction。Python 还内置支持 复数,后缀 j
或 J
用于表示虚数(例如 3+5j
)。
3 文本
3.1 定义
除了数字 Python 还可以操作文本(由 str 类型表示,称为"字符串")。 它们可以用成对的单引号 ('...'
) 或双引号 ("..."
) 来标示,结果完全相同 。与其他语言不同,特殊字符如 \n
在单引号('...'
)和双引号("..."
)里的意义一样。这两种引号唯一的区别是,不需要在单引号里转义双引号 "
(但此时必须把单引号转义成 \'
),反之亦然。
python
print('猪肉') # 单引号
print("鸡蛋") # 双引号
print('1975') # 用引号括起来的数字也是字符串
3.2 转义
要标示引号本身,我们需要对它进行"转义",即在前面加一个 \
。 或者,我们也可以使用不同类型的引号:
python
print('doesn\'t') # 使用 \' 来转义单引号
print("doesn't") # 或者改用双引号
在 Python shell 中,字符串定义和输出字符串看起来可能不同。 print() 函数会略去标示用的引号,并打印经过转义的特殊字符,产生更为易读的输出。如果不希望前置 \
的字符转义成特殊字符,可以使用 原始字符串 ,在引号前添加 r
即可:
python
print('C:\some\name') # 这里 \n 表示换行符!
print(r'C:\some\name') # 请注意引号前的 r
3.3 多行
字符串文字可以跨越多行。一种方法是使用三重引号:"""..."""
或 '''...'''
。行尾会自动包含在字符串中,但可以通过在行尾添加 \
来避免这种情况。 在下面的示例中,不包含首行换行符::
python
print("""\
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
""")
3.4 拼接
字符串可以用 +
合并(粘到一起),也可以用 *
重复,相邻的两个或多个 字符串字面值 (引号标注的字符)会自动合并,这项功能只能用于两个字面值,不能用于变量或表达式:
python
print(3 * 'un' + 'ium') # 3 乘以 'un',再加 'ium'
print('Py' 'thon') # 自动拼接
合并多个变量,或合并变量与字面值,要用 +
python
prefix = 'Py'
print(prefix + 'thon')
3.5 索引与切片
字符串支持 索引 (下标访问),第一个字符的索引是 0。单字符没有专用的类型,就是长度为一的字符串,索引还支持负数,用负数索引时,从右边开始计数,注意,-0 和 0 一样,因此,负数索引从 -1 开始。
python
print('Python'[1])
print('Python'[-1])
除了索引操作,还支持 切片 。 索引用来获取单个字符,而 切片 允许你获取子字符串。切片索引的默认值很有用;省略开始索引时,默认值为 0,省略结束索引时,默认为到字符串的结尾。注意,输出结果包含切片开始,但不包含切片结束。
python
word = 'Python'
print(word[:2]) # 从开头到 2 号位 (不含) 的字符
print(word[4:]) # 从 4 号位 (含) 到末尾
print(word[-2:]) # 从倒数第二个 (含) 到末尾
索引越界会报错,但是切片会自动处理越界索引:
python
word = 'Python'
print(word[4:42])
print(word[42:])
Python 字符串不能修改。因此,为字符串中某个索引位置赋值会报错,要生成不同的字符串,应新建一个字符串:
python
word = 'Python'
print('J' + word[1:])
print(word[:2] + 'py')
3.6 长度
内置函数 len() 返回字符串的长度:
python
s = 'supercalifragilisticexpialidocious'
print(len(s))
4 列表
4.1 定义
Python 支持多种 复合 数据类型,可将不同值组合在一起。最常用的 列表 ,是用方括号标注,逗号分隔的一组值。列表 可以包含不同类型的元素,但一般情况下,各个元素的类型相同。和字符串一样,列表也支持索引和切片:
python
squares = [1, 4, 9, 16, 25]
print(squares)
print(squares[0]) # 索引操作将返回条目
print(squares[-3:]) # 切片操作将返回一个新列表
4.2 添加与合并
列表内容可以改变,还支持合并操作,你也可以在通过使用 list.append()
方法,在列表末尾添加新条目:
python
squares = [1, 4, 9, 16, 25]
squares[2] = 36
print(squares)
merged = squares + [36, 49, 64, 81, 100]
print(merged)
merged.append(121)
print(merged)
4.3 浅拷贝
Python 中的简单赋值绝不会复制数据。 当你将一个列表赋值给一个变量时,该变量将引用 现有的列表。你通过一个变量对列表所做的任何更改都会被引用它的所有其他变量看到。:
python
rgb = ["Red", "Green", "Blue"]
rgba = rgb
print(id(rgb) == id(rgba)) # 它们指向同一个对象
rgba.append("Alph")
print(rgb)
切片操作返回包含请求元素的新列表。为切片赋值可以改变列表大小,甚至清空整个列表:
python
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(letters)
# 替换一些值
letters[2:5] = ['C', 'D', 'E']
print(letters)
# 现在移除它们
letters[2:5] = []
print(letters)
# 通过用一个空列表替代所有元素来清空列表
letters[:] = []
print(letters)
4.4 长度与嵌套
内置函数 len() 也支持列表:
python
letters = ['a', 'b', 'c', 'd']
print(len(letters))
还可以嵌套列表(创建包含其他列表的列表),例如:
python
a = ['a', 'b', 'c']
n = [1, 2, 3]
x = [a, n]
print(x)