Python 2
Python 2
(第三版)
修改后的代码中:
添加了一个名为 message 的变量( variable ),指向的值为文本 "Hello Python
world!"
运行程序
可以看到两行不一样的输出
message
message1 message!
message_1 1message
2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头
• 不能包含空格,用下划线来分隔单词
message_1
message 1
2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头
• 不能包含空格,用下划线来分隔单词
• 变量名应使用既简短又具有描述性的英文单词,不建议用拼音
message xiaoxi
msg m
2.2.1 变量:命名和使用
• 只能包含字母、数字和下划线,不能以数字开头
• 不能包含空格,用下划线来分隔单词
• 变量名应使用既简短又具有描述性的英文单词,不建议用拼音
• 变量名区分大小写,命名普通的变量一般使用小写
• 慎用小写字母 l 和大写字母 O ,因为它们容易被人错看成数字
• Python 的关键字和函数名不能用作变量名(见附录 A.4 )
要养成良好的命名习惯
2.2.2 变量:避免命名错误
• 尽量避免拼写错误,容易产生错误,可以利用工具来自动检查
• 利用 VS Code 的提示和运行后展示的 Traceback 信息排错
名称错误
(NameError)
2.2.2 变量:避免命名错误
Be Nice :
不要害怕犯错,更不要因为错误显而易见,就对他人冷嘲热讽 ~
2.2.3 变量是标签
变量是用于存储值的盒子? 变量是可以被赋值的标签
(变量指向特定的值)
好像不太恰当 这个定义好得多!
2.3 字符串
字符串( string )就是一系列字符
• 在 Python 中,用英文引号引起的都是字符串
• 引号可以是双引号
"Ada Lovelace"
"ada lovelace"
"ADA LOVELACE"
都是英文括号哦!
2.3.1 字符串:大小写修改
方法 / 函数( method/ name 后面的点号( dot )让
function ):
Python 对 name 变量执行指
Python 可对数据执行的操作。
定的操作。
name = "ada lovelace"
print([Link]( )) 每个方法后面都跟着一对括号
括号内包含方法需要的额外信息
title 方法所需的额外信息
2.3.1 字符串:大小写修改
方法 / 函数( method/ name 后面的点号( dot )让
function ):
Python 对 name 变量执行指
Python 可对数据执行的操作。
定的操作。
name = "ada lovelace"
print([Link]( )) 每个方法后面都跟着一对括号
括号内包含方法需要的额外信息
print 函数所需的额外信息
2.3.1 字符串:大小写修改
方法 / 函数( method/
function ):
title() :以首字母大写的方
Python 可对数据执行的操作。
name = "ada lovelace" 式显示每个单词,这个方法没有
print([Link]()) 所需的额外信息,因此它后面的
括号内是空的。
目前为止,我们还不用知道
它们之间的区别,但你可以
把方法视为特殊的函数。
关于函数和方法
刚才遇到了两个关键词: 如果你想要力求精确,可以在
• 方法( method ) Python 解释器中通过取掉函数
• 函数( function ) 后面的括号来执行代码,从而确
定函数是否应该被称为方法:
目前为止,我们还不用知道
它们之间的区别,但你可以
把方法视为特殊的函数。
2.3.1 字符串:大小写修改
• upper() :将字符串全部改为大写。
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)
message = f"Hello, {full_name.title()}!"
print(message)
2.3.3 字符串:添加空白
我们可以使用空格来添加空白:
比普通的空格要长一些
2.3.3 字符串:添加空白
或使用特殊的字符来添加空白:
• \t :在字符串中表示制表符。
• \n :在字符串中表示换行符。
Python
print('Python\nRust')
Rust
2.3.3 字符串:添加空白
• 直接使用空格
• \t :在字符串中表示制表符。
• \n :在字符串中表示换行符。
print('Python Rust')
print()
print('Python\tRust')
print()
print('Python\nRust')
2.3.4 字符串:删除空白
额外的空白可能令人迷惑,毕竟很难看出来有什么区别:
字符串空白?
Python 认得!
2.3.4 字符串:删除空白
可以使用以下方法来删除空白:
• lstrip() :移除左端的空白
• rstrip() :移除右端的空白
• strip() :移除两端的空白
' iTruing'.lstrip()
'iTruing '.rstrip()
' iTruing '.strip()
2.3.4 字符串:删除空白
可以使用以下方法来删除空白:
• lstrip() :移除左端的空白
• rstrip() :移除右端的空白
• strip() :移除两端的空白
'iTruing'
'iTruing'
'iTruing'
2.3.4 字符串:删除空白
可以使用以下方法来删除空白:
• lstrip() :移除左端的空白
• rstrip() :移除右端的空白
• strip() :移除两端的空白
' iTruing'.lstrip()
'iTruing '.rstrip()
' iTruing '.strip()
2.3.5 字符串:删除前缀
还有一个常见的字符串处理任务是删除前缀
比如我们有时需要删除网址的前缀 '[Link] 部分
'[Link]
2.3.5 字符串:删除前缀
还有一个常见的字符串处理任务是删除前缀
比如我们有时需要删除网址的前缀 '[Link] 部分
'[Link]'
2.3.5 字符串:删除前缀
还有一个常见的字符串处理任务是删除前缀
比如我们有时需要删除网址的前缀 '[Link] 部分
removeprefix() :移除字符串中指定的前缀
url = '[Link]
运行结果
url = [Link]('[Link]
[Link]
print(url)
2.3.6 字符串:避免语法错误
语法错误:包含非法的 Python 代码时发生的错误
例如,单引号和双引号的错误包裹,时常会引起语法错误:
message = 'Life's pathetic, let's pythonic.'
print(message)
运行结果
File "<stdin>", line 1
message = 'Life's pathetic, let's pythonic.'
^
SyntaxError: unterminated string literal (detected at line 1)
2.3.6 字符串:避免语法错误
语法错误:包含非法的 Python 代码时发生的错误
我们可以这样纠正:
message = "Life's pathetic, let's pythonic."
print(message)
运行结果
Life's pathetic, let's pythonic.
2.3.6 字符串:避免语法错误
语法错误:包含非法的 Python 代码时发生的错误(时常会遇
到)
• 解释器无法正确地确定字符串的结束位置,所以会给出错误
• 语法错误较难定位(不借助工具时)
• 利用编辑器的语法高亮
• 注意编辑器的错误提示
• 查看运行后的错误提示
• 参考书籍附录 C 的建议
字符串的简单拼接
除了使用 f- 字符串来生成字符串,我们还可以对字符串“做运
算” :
可以使用 + 号来拼接字符串:
"Hello" + " iTuring" "Hello iTuring"
还可以使用 * 号来生成重复的字符串:
"Hello " * 2 "Hello Hello "
试着输出一下你的 Ohhhh!
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 1
数
1.5
• 浮点数( float ):带小数点的数
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(1)
数
print(1.5)
• 浮点数( float ):带小数点的数
运行结果
1
1.5
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 1000000
数
1000000.5
• 浮点数( float ):带小数点的数
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 1_000_000
数
1_000_000.5
• 浮点数( float ):带小数点的数
可在数中添加下划线使大数更易读
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(1000000)
数
print(1_000_000)
• 浮点数( float ):带小数点的数
print(1000000.5)
print(1_000_000.5)
可在数中添加下划线使大数更易读
运行结果
1000000
1000000
1000000.5
1000000.5
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 + 3)
数
print(2.5 + 2)
• 浮点数( float ):带小数点的数 print(1 + 2)
print(1.5 + 1.5)
数的基本运算:
运行结果
加( + ) 6
4.5
3
3.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 - 3)
数
print(2.5 - 2)
• 浮点数( float ):带小数点的数 print(1 - 2)
print(1.5 - 1.5)
数的基本运算:
运行结果
加( + )减( - ) 0
0.5
-1
0.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 * 3)
数
print(2.5 * 2)
• 浮点数( float ):带小数点的数 print(1 * 2)
print(1.5 * 1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * ) 9
5.0
2
2.25
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 / 3)
数
print(2.5 / 2)
• 浮点数( float ):带小数点的数 print(1 / 2)
print(1.5 / 1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 1.0
1.25
0.5
1.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 // 3)
数
print(2.5 // 2)
• 浮点数( float ):带小数点的数 print(1 // 2)
print(1.5 //
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 1
双斜杠( // ):表示整数除法 1.0
0
1.0
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 ** 3)
数
print(2.5 ** 2)
• 浮点数( float ):带小数点的数 print(1 ** 2)
print(1.5 **
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 27
双斜杠( // ):表示整数除法 6.25
双乘号( ** ):表示乘方运算 1
1.8371173070873836
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 ** 3)
数
print(2.5 ** 2)
• 浮点数( float ):带小数点的数 print(1 ** 2)
print(1.5 **
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 27
双斜杠( // ):表示整数除法 6.25
双乘号( ** ):表示乘方运算 1
1.8371173070873836
2.4 数:整数和浮点数
• 整数( integer ):不带小数点的 print(3 ** 3)
数
print(2.5 ** 2)
• 浮点数( float ):带小数点的数 print(1 ** 2)
print(1.5 **
1.5)
数的基本运算:
运行结果
加( + )减( - )乘( * )除( / ) 27
双斜杠( // ):表示整数除法 6.25
双乘号( ** ):表示乘方运算 1
1.8371173070873836
2.4 补充:布尔值( Boolean )
用于表示逻辑真或假 print(True)
• True : 表示真 print(False)
• False :表示假
运行结果
True
False
2.4 同时给多个变量赋值
Python 支持在一行代码中给多
个变量赋值:
x, y, z = 0, 0, 0
上面的代码中,我们将
x 、 y 、 z 都初始化为了零。
书写的顺序就是分配的顺序
2.4 常量( constant )
常量:程序内一直保持不变的变量
Python 没有内置的常量支持,我们给出的是一个约定俗成的惯例
• 习惯使用全大写字母(单词由下划线分割)来指出将某个变量视
为常量
• 请不要在程序中修改任何常量!
MAX_CONNECTIONS = 5000
2.5 注释( Comment )
注释:让你能够使用自然语言在
程序中添加说明
• Python 中使用( # )标识注
释
• 解释器会忽略注释的内容
# 向大家问好
print("Hello Python
people!")
2.5 注释( Comment )
注释:让你能够使用自然语言在
程序中添加说明
• Python 中使用( # )标识注
释
• 解释器会忽略注释的内容
# 向大家问好
# print("Hello Python people!")
2.5 该编写什么样的注释
2.5 该编写什么样的注释
• 阐述代码的目的
• 阐述难懂的细节
• 要力求清晰简洁
• 便于个人回忆和团队合作
• 避免添加没必要的注释
• 不要怕麻烦而不写注释
2.6 Python 之禅
Python 社区的理念(由 Tim Peters 撰写)
>>> import this
• Beautiful is better than ugly. The Zen of Python, by Tim Peters
• Simple is better than complex.
• Complex is better than complicated.
• Readability counts.
• There should be one -- and preferably only one --
obvious way to do it.
• Now is better than never.
2.7 小结
• 学习了如何使用变量,如何创建描述性变量名,以及如何消除名
称错误和语法错误
• 学习了字符串是什么,以及如何调整字符串的显示方式,使用空
白来显示整洁的输出,还学习了如何删除字符串中多余的字符。
• 学习了如何使用整数和浮点数,了解了一些使用数值数据的方式。
• 学习了如何编写说明性注释,了解了让代码尽可能简单的理念
在下一章中,我们将学习关于列表的相关知识。
课后拓展
• 学习并使用用于获取帮助信息的内置函数 help()
• 了解如何养成良好的编码习惯
• 了解什么是转义字符,利用它解决 2.3.6 节中出现的错误
• 完成书中习题,粗略地浏览一下 Python 之禅中的其他指导原则
可选拓展
• 学习用于获取变量类型的内置函数 type()
• 了解数值运算的运算优先级及括号的用法
• 了解位运算以及其他的数类型
• 了解精度丢失及其原因