飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 第1章 Python简介

    • Python是什么
    • 安装与运行
    • 交互式解释器
    • 注释与编码规范
  • 第2章 变量与数据类型

    • 变量与对象
    • 整数 int
    • 浮点数 float
    • 复数 complex
    • 布尔值 bool
    • 字符串 str
    • 空值 None
    • 类型转换
  • 第3章 运算符与表达式

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 身份与成员运算符
    • 海象运算符
    • 运算符优先级
  • 第4章 流程控制

    • if 语句
    • if-else 语句
    • if-elif-else 语句
    • match-case 语句
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 函数
    • break 与 continue
    • 循环的 else 子句
    • pass 语句
  • 第5章 数据结构

    • 列表创建与索引
    • 列表方法
    • 列表推导式
    • 元组
    • 序列解包
    • 集合
    • 字典创建与访问
    • 字典方法
    • 字典推导式
    • range 对象
  • 第6章 函数

    • 定义函数
    • 位置参数与关键字参数
    • 默认参数
    • 可变参数
    • 解包实参
    • 函数返回值
    • lambda 表达式
    • 文档字符串与注解
    • 作用域与命名空间
    • global 与 nonlocal
  • 第7章 模块与包

    • 模块导入
    • 模块搜索路径
    • 包与相对导入
    • 标准库概览
  • 第8章 文件与输入输出

    • 文件读写
    • 上下文管理器
    • 字符串格式化
    • JSON 与 CSV
  • 第9章 面向对象

    • 类与对象
    • 方法
    • 实例变量与类变量
    • 私有变量
    • 继承
    • 多重继承
    • 魔术方法
    • 属性装饰器
    • 数据类 dataclass
  • 第10章 异常处理

    • 语法错误与异常
    • try-except
    • 异常链与 raise
    • 清理操作
    • 自定义异常
  • 第11章 迭代器与生成器

    • 迭代器协议
    • 生成器
    • 生成器表达式
    • 迭代工具
  • 第12章 高级特性

    • 装饰器
    • 函数式编程
  • 第13章 工程实践

    • 测试与调试
    • 代码质量
    • 虚拟环境

Python是什么

Python 诞生于 1991 年,由 Guido van Rossum 在荷兰国家数学和计算机科学研究所(CWI)发布。它的名字并非来自蟒蛇,而是源自英国喜剧团体 Monty Python 的《飞行马戏团》——这种幽默气质也贯穿了 Python 的文档和社区文化。

设计哲学:简洁与实用

Python 的核心设计哲学是让代码可读性接近自然语言。这体现在三个层面:语法层面用缩进表示代码块,而非大括号;语义层面提供高级数据结构,让复杂操作可以用一行表达;运行时层面采用解释执行,写完即可运行,无需编译链接。

# 读取文件并统计每行单词数,Python 只需几行
with open("data.txt") as f:
    for line in f:
        print(len(line.split()))

同样的功能在 C 语言中需要显式打开文件、分配缓冲区、检查 EOF、关闭文件句柄,代码量通常是 Python 的 5 到 10 倍。Python 的简洁不是"功能缩水",而是把常见模式内置到语言和标准库中。

语言性质:解释型、动态类型、自动内存管理

Python 是解释型语言。源代码由 Python 解释器逐行翻译成字节码并执行,不需要像 C/C++ 那样经过编译、链接生成可执行文件。这意味着开发周期极短:修改代码后立刻运行,无需等待编译。

# 解释执行的即时性:修改后立即生效
x = 10
print(x * 2)  # 输出 20,无需编译步骤

Python 也是动态类型语言。变量类型在运行时自动推断,不需要像 Java 或 C 那样预先声明 int x 或 String s。一个变量可以先存整数,再存字符串,但这不是推荐做法:

# 动态类型:变量类型由赋值决定
value = 42          # 此时 value 是 int
value = "hello"     # 现在 value 变成 str
value = [1, 2, 3]   # 又变成 list

# 错误示例:对错误类型执行操作
value = "42"
print(value + 10)   # TypeError: can only concatenate str to str

Python 还具备自动内存管理。对象创建后,Python 的垃圾回收机制会自动追踪引用计数,当对象不再被引用时释放内存。开发者不需要手动 malloc 和 free:

# 自动内存管理:对象生命周期由解释器处理
import sys
s = "a" * 10**6     # 创建一个巨大的字符串
print(sys.getrefcount(s))  # 查看引用计数,通常大于 1
s = None            # 解除引用,内存将在适当时机释放

与其他语言的对比

与 Shell 脚本相比:Shell 擅长移动文件、管道文本,但遇到 GUI 应用、游戏开发、复杂数据结构时就力不从心。Python 既能做系统管理,也能做应用开发:

# Python 可以调用系统命令,也能做 Shell 不擅长的事
import subprocess
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)  # 获取命令输出并进一步处理

# Shell 难以实现的 GUI 提示框,Python 轻松做到
import tkinter
from tkinter import messagebox
messagebox.showinfo("提示", "任务完成")  # 弹出图形对话框

与 C/C++/Java 相比:这些静态类型语言执行效率高,但开发周期长。定义一个简单的数据处理流程,C 语言需要处理类型声明、内存分配、错误码检查;Python 则直接表达意图:

# 读取 CSV 并筛选数据,Python 的表达力
import csv
with open("sales.csv") as f:
    reader = csv.DictReader(f)
    high_value = [row for row in reader if float(row["amount"]) > 1000]

与 Perl/Awk 相比:Perl 和 Awk 在文本处理领域很强,但语法晦涩,代码难以维护。Python 用更清晰的结构解决同样的问题,而且适用范围远超文本处理:

# 正则匹配并提取分组,Python 语法更清晰
import re
text = "Email: user@example.com"
match = re.search(r"(\w+)@(\w+\.\w+)", text)
if match:
    print(match.group(1))  # user
    print(match.group(2))  # example.com

适用场景

Python 的模块化和丰富的标准库让它几乎无处不在。标准库涵盖 I/O、系统调用、网络套接字、图形界面(tkinter)、数据库、多线程等,开箱即用:

# 标准库示例:无需安装第三方包即可实现常见功能
import os
import json
import urllib.request

# 路径操作
print(os.path.join("home", "user", "docs"))  # home/user/docs

# JSON 序列化
data = {"name": "Python", "version": 3.12}
print(json.dumps(data, indent=2))

# 简单的 HTTP 请求
with urllib.request.urlopen("https://api.github.com") as resp:
    print(resp.status)  # 200

在自动化运维领域,Python 可以批量重命名文件、处理日志、生成报表;在 Web 开发中,Django 和 Flask 是主流框架;数据科学和人工智能领域,NumPy、pandas、TensorFlow 构成了完整生态。Python 还常被用作胶水语言,把 C/C++ 写的高性能模块粘合在一起:

# Python 调用 C 扩展的典型模式(伪代码示意)
# import fast_core  # C 模块提供高性能计算
# result = fast_core.compute(data)  # Python 负责调度,C 负责运算

可扩展性

Python 的"可扩展"是双向的。一方面,可以用 C/C++ 为 Python 编写扩展模块,把性能瓶颈部分用编译型语言实现;另一方面,可以把 Python 解释器嵌入到 C 程序中,让现有应用获得脚本能力:

# 纯 Python 实现斐波那契,便于理解算法
def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)

# 对于性能敏感场景,可用 C 扩展替换
# 但接口保持不变,调用方无需修改代码

Python 3.12 的关键改进

Python 3.12 在语法和性能上都有显著进步。类型形参语法简化(PEP 695)让泛型函数更易写:

# Python 3.12 之前,需要显式导入 TypeVar
# from typing import TypeVar
# T = TypeVar("T")
# def first(items: list[T]) -> T: ...

# Python 3.12 直接内联声明
def first[T](items: list[T]) -> T:
    return items[0]

print(first([1, 2, 3]))      # 1,推断为 int
print(first(["a", "b"]))     # a,推断为 str

f-string 的嵌套引号限制被解除(PEP 701),报错信息也更加精准。当把赋值运算符 = 误写成比较时,解释器会直接提示 "did you mean to use '=='?":

# 3.12 的错误提示更友好
x = 5
# if x = 5:  # SyntaxError: did you mean to use '=='?
if x == 5:
    print("正确")

学习建议

Python 的最佳学习方式是边读边练。启动解释器,把教程中的代码亲手输入一遍,观察输出,故意制造一些错误看看报错信息。比如尝试访问未定义的变量,理解 NameError 的含义:

>>> print(undefined_var)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'undefined_var' is not defined

这种即时反馈是解释型语言的优势——错误在输入后立即暴露,不需要等待编译阶段。

下一页
安装与运行