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

    • 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 历史与特点
    • Python 2 与 Python 3 的核心差异
    • 安装与运行 Python 2.7.18
    • 编码规范 PEP 8
  • 第2章 基础语法

    • 变量与对象
    • 数字类型
    • 字符串 str
    • Unicode 字符串
    • 运算符
    • 空值 None
  • 第3章 流程控制

    • if 条件语句
    • if-else 条件语句
    • if-elif-else 多分支
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 与 xrange
    • 循环控制:break、continue、pass
    • 循环 else 子句
  • 第4章 数据结构

    • 列表基础
    • 列表方法
    • 列表推导式
    • 元组
    • 字典基础
    • 字典方法
    • 字典循环技巧
    • 集合
    • 序列解包
    • 序列比较
  • 第5章 函数

    • 定义函数
    • 参数传递机制
    • 默认参数
    • 关键字参数
    • 可变参数
    • Lambda 表达式
    • 文档字符串
    • 函数对象
  • 第6章 模块与包

    • import 导入
    • 模块搜索路径
    • name 与主程序
    • 编译文件 .pyc 与 .pyo
    • 包结构
    • dir() 函数
  • 第7章 文件与IO

    • 打开与关闭文件
    • 文件读写方法
    • with 上下文管理器
    • 格式化输出:% 操作符
    • 格式化输出:str.format()
    • JSON 序列化
  • 第8章 面向对象

    • 类定义与实例化
    • init 构造方法
    • 类变量与实例变量
    • 方法调用与 self
    • 继承基础
    • 多重继承
    • 新式类与旧式类
    • 私有变量与名称改写
    • 属性装饰器 property
    • 类方法与静态方法
    • 魔术方法
    • 空类与数据记录
  • 第9章 异常处理

    • 异常类型
    • try-except
    • try-except-else-finally
    • 抛出异常 raise
    • 自定义异常
    • with 语句与上下文管理器
  • 第10章 迭代器与生成器

    • 迭代器协议
    • 生成器函数
    • 生成器表达式
    • itertools模块
  • 第11章 标准库精要

    • os模块
    • sys模块
    • datetime模块
    • re模块
    • json模块
    • collections模块
    • math与random模块
    • urllib2与网络请求
    • subprocess与命令执行
    • threading与并发
    • unittest与测试
    • 虚拟环境与包管理
  • 第12章 工程实践

    • 调试技巧
    • 性能分析
    • 文档与注释
    • 下一步学习

下一步学习

完成 Python 2.7.18 的基础学习后,有几个重要的方向可以深入。Python 2.7 已于 2020 年停止维护,建议在学习基础的同时,规划向 Python 3 的迁移路径。

Python 2 与 Python 3 的关键差异

Python 3 是 Python 的未来。理解两者的差异,为迁移做准备:

print 语句 vs 函数:

# Python 2
print "Hello"                   # 语句
print "Hello",                  # 不换行

# Python 3
print("Hello")                  # 函数
print("Hello", end="")          # 不换行

整数除法:

# Python 2
print 5 / 2         # 2(整数除法)
print 5 / 2.0       # 2.5(浮点除法)
print 5 // 2        # 2(地板除,两者相同)

# Python 3
print(5 / 2)        # 2.5(真除法)
print(5 // 2)       # 2(地板除)

字符串类型:

# Python 2:str 是字节串,unicode 是文本
s = "hello"         # str(字节)
u = u"hello"        # unicode

# Python 3:str 是文本,bytes 是字节
s = "hello"         # str(Unicode 文本)
b = b"hello"        # bytes(字节)

range 与 xrange:

# Python 2
range(1000000)      # 创建完整列表(内存大)
xrange(1000000)     # 惰性迭代器(内存小)

# Python 3
range(1000000)      # 惰性迭代器(类似 xrange)
list(range(100))    # 需要列表时显式转换

字典方法:

# Python 2
d.items()           # 返回列表
d.iteritems()       # 返回迭代器(推荐)

# Python 3
d.items()           # 返回视图(类似迭代器)
list(d.items())     # 需要列表时显式转换

异常语法:

# Python 2(两种语法)
except ValueError, e:       # 旧语法
except ValueError as e:     # 新语法(推荐)

# Python 3
except ValueError as e:     # 唯一语法

输入函数:

# Python 2
raw_input("Prompt: ")       # 返回字符串
input("Prompt: ")           # 求值输入(危险)

# Python 3
input("Prompt: ")           # 返回字符串(类似 raw_input)

迁移工具

2to3:自动转换 Python 2 代码到 Python 3

# 查看需要修改的地方
2to3 myscript.py

# 直接修改(备份原文件)
2to3 -w myscript.py

# 转换整个项目
2to3 -w myproject/

six 库:编写兼容 Python 2 和 3 的代码

pip install six
import six

if six.PY2:
    import urllib2
else:
    import urllib.request as urllib2

# 统一 print
from six.moves import print_function

# 统一字符串类型
from six import text_type
isinstance(s, text_type)    # Python 2: unicode, Python 3: str

future 库:在 Python 2 中使用 Python 3 特性

pip install future
from __future__ import print_function      # print 作为函数
from __future__ import division           # 真除法
from __future__ import unicode_literals     # 字符串字面量为 unicode
from __future__ import absolute_import     # 绝对导入

进阶学习方向

Web 开发:

  • Flask / Django(Python 3 为主,旧版本支持 Python 2.7)
  • HTTP 协议、REST API 设计
  • 数据库操作(SQLAlchemy、ORM)

数据科学:

  • NumPy / Pandas(数据处理)
  • Matplotlib / Seaborn(可视化)
  • 注意:Python 2.7 的最新版本科学计算库已停止支持

自动化与运维:

  • Fabric / Ansible(服务器管理)
  • 日志分析、监控脚本
  • CI/CD 流水线

测试与质量:

  • pytest(比 unittest 更强大)
  • 代码覆盖率(coverage.py)
  • 静态分析(pylint、flake8)

性能优化:

  • Cython(编译为 C)
  • PyPy(替代 CPython 的解释器)
  • 异步编程(Python 3 的 asyncio,Python 2 可用 gevent)

学习资源

官方文档:

  • Python 2.7 文档:https://docs.python.org/2.7/
  • Python 3 文档:https://docs.python.org/3/

迁移指南:

  • "Porting Python 2 Code to Python 3"(官方指南)
  • "Supporting Python 3" 电子书

实践建议:

  1. 新代码尽量用 Python 3 语法(通过 from __future__ 在 Python 2 中兼容)
  2. 使用 six 或 future 库编写兼容代码
  3. 逐步迁移现有项目,不要一次性重写
  4. 测试覆盖是迁移的安全网

Python 2.7 的遗产

Python 2.7 虽然停止维护,但以下知识在 Python 3 中仍然适用:

  • 基础语法(变量、控制流、函数、类)
  • 标准库设计哲学
  • 面向对象编程模式
  • 异常处理机制
  • 迭代器与生成器

Python 3 主要是清理了不一致的设计(print、整数除法、字符串类型),核心编程思想一脉相承。掌握 Python 2.7 的基础后,迁移到 Python 3 主要是适应语法变化,编程能力可以直接迁移。

总结

Python 2.7.18 的学习为你打下了坚实的基础。下一步:

  1. 短期:在 Python 2.7 项目中实践,巩固基础
  2. 中期:学习 from __future__ 和 six,编写兼容代码
  3. 长期:迁移到 Python 3,探索 Web、数据科学、自动化等方向

编程能力的提升来自持续的实践。选择一个小项目(爬虫、工具脚本、Web 应用),用所学知识实现它,在解决实际问题的过程中成长。

上一页
文档与注释