Python 基础教程
Python 是数据科学领域最流行的编程语言,语法简洁、生态完整、上手快。根据近几年的开发者调查,Python 在数据分析、机器学习和自动化脚本领域的使用率长期保持第一,几乎所有主流数据工具(Pandas、NumPy、scikit-learn、PySpark)都以 Python 为首选接口。本教程从零开始,覆盖变量、数据类型、流程控制、函数和面向对象这五块核心内容,外加常见坑位和一个综合实战 Demo,每个知识点都配有可运行的代码和预期输出。
学习本教程不需要任何编程基础,但建议你边读边动手:把代码复制到本地 .py 文件或 Jupyter Notebook 里实际跑一遍,亲眼看到输出,比单纯阅读的记忆效果好得多。推荐使用 Python 3.10 及以上版本,本文所有示例均在 Python 3.11 下验证通过。
变量与数据类型
Python 是动态类型语言,定义变量时不需要声明类型,直接赋值即可。
# 数字
age = 25
price = 99.9
# 字符串
name = "A2DATA"
message = '欢迎学习'
# 布尔值
is_active = True
# 列表(有序、可变)
skills = ['Python', 'SQL', 'Machine Learning']
# 字典(键值对)
user = {
'name': '张三',
'age': 25,
'vip': True,
}常见内置类型对比:
| 类型 | 示例 | 是否可变 | 典型用途 |
|---|---|---|---|
int / float | 25 / 99.9 | 不可变 | 数值计算 |
str | "A2DATA" | 不可变 | 文本处理 |
bool | True / False | 不可变 | 条件判断 |
list | [1, 2, 3] | 可变 | 有序集合 |
dict | {'a': 1} | 可变 | 键值映射 |
tuple | (1, 2) | 不可变 | 固定记录 |
set | {1, 2, 3} | 可变 | 去重、集合运算 |
NoneType | None | 不可变 | 表示"空值" |
可以用 type() 查看变量类型,用 isinstance() 判断类型归属。两者的区别在于 isinstance 会把子类也算进去,写条件判断时优先用它:
print(type(99.9)) # <class 'float'>
print(isinstance(True, int)) # True,因为 bool 是 int 的子类字符串是日常使用频率最高的类型,常用操作包括格式化、切片和方法调用:
name = "A2DATA"
print(f"长度是 {len(name)}") # 长度是 6
print(name.lower()) # a2data
print(name[0:2]) # A2,切片是左闭右开
print("-".join(["2026", "05"])) # 2026-05预期输出:
长度是 6
a2data
A2
2026-05条件语句
用 if / elif / else 实现分支逻辑,注意 Python 用缩进(通常 4 个空格)来表示代码块,而不是大括号。
score = 85
if score >= 90:
print('优秀')
elif score >= 60:
print('及格')
else:
print('不及格')Python 还支持三元表达式,把简单的二选一写成一行:result = '及格' if score >= 60 else '不及格'。条件判断中,空字符串、空列表、0、None 都会被当作 False,这一点和很多语言不同,写 if my_list: 就能判断列表是否非空,不必写 len(my_list) > 0。
循环
for 循环用于遍历序列,while 循环在条件为真时反复执行。
# for 循环:遍历 0~4
for i in range(5):
print(i)
# while 循环:计数到 5
count = 0
while count < 5:
print('count =', count)
count += 1遍历时如果同时需要索引和值,用 enumerate;同时遍历多个序列用 zip。这两个是写数据处理代码时的高频工具:
fruits = ['苹果', '香蕉', '橙子']
for idx, name in enumerate(fruits, start=1):
print(idx, name)
prices = [3, 2, 5]
for name, price in zip(fruits, prices):
print(f"{name}: {price} 元")预期输出:
1 苹果
2 香蕉
3 橙子
苹果: 3 元
香蕉: 2 元
橙子: 5 元列表推导式(list comprehension)是 Python 的特色语法,能用一行代码完成"遍历 + 过滤 + 转换",比手写 for 循环更简洁也更快:
# 取 0~9 中偶数的平方
squares = [x * x for x in range(10) if x % 2 == 0]
print(squares) # [0, 4, 16, 36, 64]函数定义
函数用 def 定义,可以有参数、返回值和文档字符串。
def greet(name):
"""向用户问好"""
return f"你好, {name}!"
# 调用函数
message = greet("A2DATA")
print(message)函数支持默认参数和关键字参数,让调用更灵活。注意一个经典坑:默认参数不要用可变对象(如 [] 或 {}),因为默认值只在函数定义时创建一次,多次调用会共享同一个对象:
# 错误写法:每次调用会累积
def bad_append(item, target=[]):
target.append(item)
return target
# 正确写法:用 None 作哨兵值
def good_append(item, target=None):
if target is None:
target = []
target.append(item)
return target类与对象
Python 支持面向对象编程,用 class 定义类,__init__ 是构造方法,self 代表实例本身。
class User:
def __init__(self, name, level):
self.name = name
self.level = level
def introduce(self):
return f"我是 {self.name},等级 {self.level}"
user = User("Jack", 10)
print(user.introduce())常见坑位速查
新手最容易踩的几个问题,提前知道能省下大量调试时间:
| 现象 | 原因 | 解决办法 |
|---|---|---|
IndentationError | 缩进不一致,混用空格和 Tab | 统一用 4 个空格 |
列表 b = a 后改 b 也改了 a | 赋值只复制引用,没复制数据 | 用 b = a.copy() 或 b = a[:] |
== 和 is 结果不同 | == 比较值,is 比较内存地址 | 判断值用 ==,判断是否为 None 用 is |
| 整数除法结果是小数 | Python 3 中 / 永远返回 float | 需要整除用 // |
| 字符串和数字相加报错 | str 不能直接与 int 拼接 | 用 str(num) 转换或用 f-string |
完整 Demo:成绩统计小程序
把下面代码保存为 grade.py 运行,它综合用到了列表、字典、循环和函数。
def analyze(students):
"""计算平均分并找出最高分学生"""
total = 0
top = students[0]
for s in students:
total += s['score']
if s['score'] > top['score']:
top = s
avg = total / len(students)
return avg, top
students = [
{'name': '小明', 'score': 88},
{'name': '小红', 'score': 95},
{'name': '小刚', 'score': 76},
]
avg, top = analyze(students)
print(f"平均分:{avg:.1f}")
print(f"最高分:{top['name']} ({top['score']})")预期输出:
平均分:86.3
最高分:小红 (95)跑通这个 Demo,说明你已经掌握了 Python 的基础骨架。
下一步
掌握这些基础后,就可以开始学习「快速入门」里介绍的 Pandas 数据分析了。

评论功能暂未开放
还没有评论
快来发表第一条评论吧