下一步学习
完成 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" 电子书
实践建议:
- 新代码尽量用 Python 3 语法(通过
from __future__在 Python 2 中兼容) - 使用
six或future库编写兼容代码 - 逐步迁移现有项目,不要一次性重写
- 测试覆盖是迁移的安全网
Python 2.7 的遗产
Python 2.7 虽然停止维护,但以下知识在 Python 3 中仍然适用:
- 基础语法(变量、控制流、函数、类)
- 标准库设计哲学
- 面向对象编程模式
- 异常处理机制
- 迭代器与生成器
Python 3 主要是清理了不一致的设计(print、整数除法、字符串类型),核心编程思想一脉相承。掌握 Python 2.7 的基础后,迁移到 Python 3 主要是适应语法变化,编程能力可以直接迁移。
总结
Python 2.7.18 的学习为你打下了坚实的基础。下一步:
- 短期:在 Python 2.7 项目中实践,巩固基础
- 中期:学习
from __future__和six,编写兼容代码 - 长期:迁移到 Python 3,探索 Web、数据科学、自动化等方向
编程能力的提升来自持续的实践。选择一个小项目(爬虫、工具脚本、Web 应用),用所学知识实现它,在解决实际问题的过程中成长。