Skip to content
2026-04-261分钟guide

Python 基础教程

Python 是数据科学领域最流行的编程语言,语法简洁、生态完整、上手快。根据近几年的开发者调查,Python 在数据分析、机器学习和自动化脚本领域的使用率长期保持第一,几乎所有主流数据工具(Pandas、NumPy、scikit-learn、PySpark)都以 Python 为首选接口。本教程从零开始,覆盖变量、数据类型、流程控制、函数和面向对象这五块核心内容,外加常见坑位和一个综合实战 Demo,每个知识点都配有可运行的代码和预期输出。

学习本教程不需要任何编程基础,但建议你边读边动手:把代码复制到本地 .py 文件或 Jupyter Notebook 里实际跑一遍,亲眼看到输出,比单纯阅读的记忆效果好得多。推荐使用 Python 3.10 及以上版本,本文所有示例均在 Python 3.11 下验证通过。

变量与数据类型

Python 是动态类型语言,定义变量时不需要声明类型,直接赋值即可。

python
# 数字
age = 25
price = 99.9

# 字符串
name = "A2DATA"
message = '欢迎学习'

# 布尔值
is_active = True

# 列表(有序、可变)
skills = ['Python', 'SQL', 'Machine Learning']

# 字典(键值对)
user = {
    'name': '张三',
    'age': 25,
    'vip': True,
}

常见内置类型对比:

类型示例是否可变典型用途
int / float25 / 99.9不可变数值计算
str"A2DATA"不可变文本处理
boolTrue / False不可变条件判断
list[1, 2, 3]可变有序集合
dict{'a': 1}可变键值映射
tuple(1, 2)不可变固定记录
set{1, 2, 3}可变去重、集合运算
NoneTypeNone不可变表示"空值"

可以用 type() 查看变量类型,用 isinstance() 判断类型归属。两者的区别在于 isinstance 会把子类也算进去,写条件判断时优先用它:

python
print(type(99.9))              # <class 'float'>
print(isinstance(True, int))   # True,因为 bool 是 int 的子类

字符串是日常使用频率最高的类型,常用操作包括格式化、切片和方法调用:

python
name = "A2DATA"
print(f"长度是 {len(name)}")     # 长度是 6
print(name.lower())             # a2data
print(name[0:2])                # A2,切片是左闭右开
print("-".join(["2026", "05"])) # 2026-05

预期输出:

text
长度是 6
a2data
A2
2026-05

条件语句

if / elif / else 实现分支逻辑,注意 Python 用缩进(通常 4 个空格)来表示代码块,而不是大括号。

python
score = 85

if score >= 90:
    print('优秀')
elif score >= 60:
    print('及格')
else:
    print('不及格')

Python 还支持三元表达式,把简单的二选一写成一行:result = '及格' if score >= 60 else '不及格'。条件判断中,空字符串、空列表、0None 都会被当作 False,这一点和很多语言不同,写 if my_list: 就能判断列表是否非空,不必写 len(my_list) > 0

循环

for 循环用于遍历序列,while 循环在条件为真时反复执行。

python
# for 循环:遍历 0~4
for i in range(5):
    print(i)

# while 循环:计数到 5
count = 0
while count < 5:
    print('count =', count)
    count += 1

遍历时如果同时需要索引和值,用 enumerate;同时遍历多个序列用 zip。这两个是写数据处理代码时的高频工具:

python
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} 元")

预期输出:

text
1 苹果
2 香蕉
3 橙子
苹果: 3 元
香蕉: 2 元
橙子: 5 元

列表推导式(list comprehension)是 Python 的特色语法,能用一行代码完成"遍历 + 过滤 + 转换",比手写 for 循环更简洁也更快:

python
# 取 0~9 中偶数的平方
squares = [x * x for x in range(10) if x % 2 == 0]
print(squares)   # [0, 4, 16, 36, 64]

函数定义

函数用 def 定义,可以有参数、返回值和文档字符串。

python
def greet(name):
    """向用户问好"""
    return f"你好, {name}!"

# 调用函数
message = greet("A2DATA")
print(message)

函数支持默认参数和关键字参数,让调用更灵活。注意一个经典坑:默认参数不要用可变对象(如 []{}),因为默认值只在函数定义时创建一次,多次调用会共享同一个对象:

python
# 错误写法:每次调用会累积
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 代表实例本身。

python
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 比较内存地址判断值用 ==,判断是否为 Noneis
整数除法结果是小数Python 3 中 / 永远返回 float需要整除用 //
字符串和数字相加报错str 不能直接与 int 拼接str(num) 转换或用 f-string

完整 Demo:成绩统计小程序

把下面代码保存为 grade.py 运行,它综合用到了列表、字典、循环和函数。

python
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']})")

预期输出:

text
平均分:86.3
最高分:小红 (95)

跑通这个 Demo,说明你已经掌握了 Python 的基础骨架。

下一步

掌握这些基础后,就可以开始学习「快速入门」里介绍的 Pandas 数据分析了。

0 条评论
Markdown

评论功能暂未开放

还没有评论

快来发表第一条评论吧

© 2026 A2DATA. All rights reserved.