第3章:Python基础知识——注释、变量、数据类型、标识符与关键字、输入输出、运算符、类型转换
各位同学,欢迎来到第3章。说实话,Python基础语法这块,很多教程讲得跟念经似的。我当年刚入行时也踩过不少坑,今天咱们就聊聊这些最基础、但最容易出问题的地方。
3.1 注释——给代码加个“说明书”
注释这东西,说白了就是写给人类看的。机器根本不鸟它。我见过太多新手,要么不写注释,要么写一堆废话。
Python里注释分两种:
- 单行注释:用
#开头 - 多行注释:用三个单引号
'''或三个双引号"""包裹
# 这是单行注释,我习惯在代码逻辑转折处加一条
print("Hello, NLP!")
'''
这是多行注释
可以写好几行
我一般用来临时屏蔽大段代码
'''
我的小习惯:注释不是越多越好。好的代码本身就像注释,变量名起得清楚,逻辑写得直白。我一般只在“为什么这么写”的地方加注释,而不是“写了什么”。
3.2 变量与数据类型——Python的“盒子”哲学
变量是什么?你可以把它想象成一个盒子。你把数据放进去,然后贴个标签。Python里不需要提前声明盒子的类型,你放什么它就是什么。
常见的数据类型有这些:
| 类型 | 例子 | 说明 |
|---|---|---|
| int(整型) | age = 25 |
整数,没有小数点 |
| float(浮点型) | pi = 3.14 |
带小数点的数 |
| str(字符串) | name = "NLP" |
文本,用引号包着 |
| bool(布尔型) | is_ok = True |
只有 True 或 False |
| list(列表) | nums = [1, 2, 3] |
有序的集合,可修改 |
| dict(字典) | info = {"name": "Tom"} |
键值对,像查字典 |
# 你看,Python多灵活
my_var = 10 # 现在是整数
print(type(my_var)) # <class 'int'>
my_var = "hello" # 现在变成字符串了
print(type(my_var)) # <class 'str'>
注意:这种灵活性是把双刃剑。我曾经在项目中因为变量类型被意外改变,排查了整整一下午。建议你在关键地方用
type() 检查一下。
3.3 标识符和关键字——起名字的规矩
标识符就是你给变量、函数、类起的名字。Python对名字有要求:
- 只能包含字母、数字、下划线
- 不能以数字开头
- 不能是Python的关键字
- 大小写敏感(
Name和name是两个东西)
关键字是Python自己保留的词,比如 if、for、while、class 这些。你不能拿它们当变量名。
# 合法的标识符
my_var = 1
var2 = 2
_name = "private"
# 非法的标识符
# 2var = 3 # 数字开头,报错
# for = 4 # 关键字,报错
# my-var = 5 # 有连字符,报错
我的建议:变量名要见名知意。别用
a、b、c 这种。你想想看,三个月后你回来看代码,看到 a = 100,你知道它代表什么吗?我一般用 max_length、total_count 这种。
3.4 输入函数——让程序和人对话
input() 函数用来接收用户输入。注意一点:它返回的永远是字符串!
name = input("请输入你的名字:")
print("你好," + name)
# 如果你想要数字,得自己转
age = input("请输入年龄:")
age = int(age) # 转成整数
print("明年你" + str(age + 1) + "岁了")
我曾经踩过的坑:用户输入什么你都得防着。如果用户输入了 "abc",你直接
int() 转换,程序就崩了。实际项目中一定要加异常处理,这个咱们后面会讲。
3.5 输出函数——把结果亮出来
print() 是最常用的输出函数。它有几个小技巧:
- 默认换行,想不换行用
end="" - 多个值用逗号隔开,会自动加空格
- 可以用
sep参数指定分隔符
print("Hello", "World") # 输出:Hello World
print("Hello", "World", sep="-") # 输出:Hello-World
print("不换行", end="") # 不换行
print("接着输出")
3.6 运算符——计算的工具
Python的运算符分几大类:
| 类型 | 运算符 | 例子 |
|---|---|---|
| 算术运算符 | + - * / // % ** |
10 // 3 = 3(整除) |
| 比较运算符 | == != > < >= <= |
5 > 3 返回 True |
| 赋值运算符 | = += -= *= /= |
x += 1 等价于 x = x + 1 |
| 逻辑运算符 | and or not |
True and False 返回 False |
| 成员运算符 | in not in |
"a" in "abc" 返回 True |
# 算术运算
print(10 / 3) # 3.333... 浮点数除法
print(10 // 3) # 3 整数除法
print(10 % 3) # 1 取余数
print(2 ** 3) # 8 幂运算
# 逻辑运算
a = True
b = False
print(a and b) # False
print(a or b) # True
print(not a) # False
重点:Python里
/ 和 // 的区别一定要记清楚。我在做NLP数据预处理时,经常用 // 来做分页计算,用 % 来判断是否整除。
3.7 类型转换——让数据“变形”
有时候你需要把一种类型转成另一种。Python提供了几个内置函数:
int(x):转成整数float(x):转成浮点数str(x):转成字符串bool(x):转成布尔值list(x):转成列表
# 字符串转数字
s = "123"
n = int(s) # 123
f = float(s) # 123.0
# 数字转字符串
num = 456
text = str(num) # "456"
# 布尔转换——这个有意思
print(bool(0)) # False
print(bool(1)) # True
print(bool("")) # False
print(bool("abc")) # True
print(bool([])) # False
print(bool([1])) # True
注意:不是所有转换都能成功。比如
int("abc") 就会报错。还有,把浮点数转成整数会直接截断小数部分,不是四舍五入。int(3.9) 得到的是 3,不是 4。
3.8 避坑指南——我踩过的那些坑
最后,分享几个我实际工作中遇到的坑:
- 字符串拼接 vs 数字相加:
"5" + 3会报错,因为类型不同。得先转成同类型。 - 浮点数精度问题:
0.1 + 0.2不等于0.3,而是0.30000000000000004。做金融计算时千万别用浮点数。 - 布尔值的陷阱:
True其实等于 1,False等于 0。所以True + True结果是 2。嗯,这个我当年也懵过。 - input() 返回字符串:你输入 123,它返回的是 "123",不是 123。做比较时特别容易出错。
好了,这一章的内容就这些。说白了,Python基础语法就是这些规矩,记住它们,后面写代码就顺了。下一章咱们聊聊流程控制,到时候见。