3. Python 基础知识:从零搭起你的代码地基

说实话,很多初学者觉得 Python 基础语法枯燥,恨不得直接上手写爬虫、搞 AI。但我做了这么多年性能优化,见过太多因为基础不牢,后期排查问题排查到崩溃的案例。今天这一章,咱们就把地基打扎实。你想想看,地基不稳,楼盖得再高也是危房。

Python 基础核心 注释与变量 数据类型 标识符与关键字 输入与输出 运算符 程序类型转换 本章知识体系:从基础语法到类型转换,环环相扣

3.1 注释:给代码留个便签

注释这东西,说白了就是写给未来的自己看的。我有个习惯:写注释时总假设半年后的自己是个刚入行的新手。你想想看,半年后你回头看自己写的代码,如果没有注释,可能连自己都看不懂。

Python 里注释分两种:

  • 单行注释:用 # 开头,只影响当前行
  • 多行注释:用三个引号 ''' 或 """ 包裹
# 这是单行注释,通常用来解释下一行代码
name = "Python"  # 也可以写在代码后面

"""
这是多行注释
可以写好几行说明
我经常用它来写函数说明
"""
我的小技巧:在优化打印速度的项目里,我习惯在关键算法前加注释,标注「这里做了缓存优化」或「此处避免重复计算」。这样别人 review 代码时,一眼就能看出你的优化思路。

3.2 变量与数据类型:代码的容器

变量就像一个个小盒子,用来装数据。Python 是动态类型语言,你不需要提前声明盒子要装什么——想装啥就装啥,灵活得很。

常用的数据类型有这些:

类型 名称 示例 说明
int 整型 age = 25 整数,没有小数点
float 浮点型 price = 19.99 带小数点的数
str 字符串 name = "Python" 文本,用引号包裹
bool 布尔型 is_ok = True 只有 True 和 False
list 列表 items = [1, 2, 3] 有序的可变集合
dict 字典 person = {"name": "Tom"} 键值对存储
# 变量赋值,Python 会自动推断类型
count = 10          # int
pi = 3.14159        # float
message = "Hello"   # str
is_active = True    # bool

# 用 type() 查看类型
print(type(count))   # 输出:<class 'int'>
注意:我曾经在项目中遇到过一个 bug,就是因为把字符串和数字直接相加。Python 不会自动帮你转类型,"5" + 3 会直接报错。记住:不同类型的数据,不能直接运算。

3.3 标识符与关键字:起名字的规矩

标识符就是你给变量、函数起的名字。Python 对起名字有几点要求:

  • 只能包含字母、数字、下划线
  • 不能以数字开头
  • 不能使用 Python 的关键字
  • 区分大小写(Name 和 name 是两个不同的变量)

关键字就是 Python 已经占用的词,比如 if、for、while、class 等。你可以用 import keyword; print(keyword.kwlist) 查看所有关键字。

# 合法的标识符
my_var = 10
userName = "Alice"
_count = 5

# 不合法的标识符
# 2name = "Tom"    # 数字开头,报错
# my-var = 10      # 有连字符,报错
# if = 20          # 用了关键字,报错

命名规范建议:我个人习惯用「蛇形命名法」——变量名全小写,单词间用下划线连接,比如 print_speed、optimize_result。这样在团队协作中,大家一看就知道这是变量还是类名。

3.4 输入与输出:和程序对话

输入输出是程序与外界交互的桥梁。Python 提供了两个最基础的工具:

  • input():从键盘获取输入,返回的是字符串
  • print():把内容输出到控制台
# 输入示例
name = input("请输入你的名字:")
print("你好," + name + "!")

# 输出多个值,用逗号分隔
age = 25
print("姓名:", name, "年龄:", age)

# 格式化输出(我比较喜欢这种方式)
print(f"姓名:{name},年龄:{age}")
避坑指南:我曾经在做一个打印优化项目时,发现用户输入的数字总是算不对。排查了半天才发现——input() 返回的是字符串,直接拿去计算当然会出问题。记住:输入的数字要先用 int() 或 float() 转换。

3.5 运算符:代码里的数学课

运算符就是用来做各种操作的符号。Python 的运算符很丰富,我挑几个常用的说说:

类型 运算符 示例 结果
算术 + - * / // % ** 10 // 3 3(整除)
比较 == != > < >= <= 5 == 5 True
逻辑 and or not True and False False
赋值 = += -= *= /= x += 1 等价于 x = x + 1
# 算术运算符
a = 10
b = 3
print(a + b)   # 13
print(a // b)  # 3(整除,丢掉小数部分)
print(a ** b)  # 1000(10的3次方)

# 逻辑运算符
x = 5
print(x > 3 and x < 10)  # True
print(not (x > 3))       # False
注意:比较运算符 == 和赋值运算符 = 千万别搞混。我见过太多新手在 if 条件里写 if x = 5,这在 Python 里会直接报错,但在其他语言里可能是个隐蔽的 bug。

3.6 程序类型转换:让数据「变形」

类型转换就是把数据从一种类型变成另一种。Python 提供了几个内置函数来做这件事:

  • int(x):把 x 转成整数
  • float(x):把 x 转成浮点数
  • str(x):把 x 转成字符串
  • bool(x):把 x 转成布尔值
  • list(x):把 x 转成列表
# 字符串转数字
num_str = "123"
num_int = int(num_str)      # 123(整数)
num_float = float(num_str)  # 123.0(浮点数)

# 数字转字符串
age = 25
message = "我今年" + str(age) + "岁"  # 必须转成字符串才能拼接

# 布尔转换(记住:0、空字符串、None 都是 False)
print(bool(0))      # False
print(bool(1))      # True
print(bool(""))     # False
print(bool("abc"))  # True

实战经验:在优化打印速度的项目中,我经常需要把用户输入的字符串转成数字进行计算。比如用户输入打印份数,input() 拿到的是 "10",必须用 int() 转成 10 才能参与运算。这一步看似简单,但漏掉的话,程序就会报错。

嗯,到这里,Python 的基础语法就讲完了。这些内容看着简单,但每一个都是后面优化打印速度与精度的基石。你想想看,如果连变量类型都搞不清楚,怎么去优化代码的执行效率?