Python 编程全解析:从基础语句到在线资源
1. Python 语句基础
1.1 简单语句
简单语句由单个(逻辑)行组成,涵盖表达式语句、断言语句、赋值语句等。
- 表达式语句 :表达式可单独作为语句,在函数调用或文档字符串场景中极为实用。例如:
raw_input('Press <Enter> when ready')
- 断言语句 :用于检查条件是否为真,若为假则抛出
AssertionError,可选择性附带错误消息。示例如下:
assert age >= 12, 'Children under the age of 12 are not allowed'
- 赋值语句 :将变量与值绑定,支持通过序列解包同时为多个变量赋值,也能进行链式赋值。示例:
x = 42 # 简单赋值
name, age = 'Gumby', 60 # 序列解包
x = y = z = 10 # 链式赋值
- 增强赋值语句 :借助运算符增强赋值操作,运算符会作用于变量的现有值和新值,变量将重新绑定到结果。若原始值可变,可能会直接修改而变量仍绑定到原始对象。例如:
x *= 2 # x 翻倍
x += 5 # x 加 5
1.2 其他简单语句
- pass 语句 :作为“无操作”语句,不执行任何操作,常用于占位或在语法上需要语句块但无需执行操作的情况。示例:
try: x.name
except AttributeError: pass
else: print 'Hello', x.name
- del 语句 :用于解除变量和属性的绑定,从数据结构(映射或序列)中移除部分(位置、切片或槽),但不能直接删除值,值只能通过垃圾回收机制删除。示例:
del x # 解除变量绑定
del seq[42] # 删除序列元素
del seq[42:] # 删除序列切片
del map['foo'] # 删除映射项
- print 语句 :将一个或多个值(自动使用
str格式化,用单个空格分隔)写入指定流,默认是sys.stdout。除非语句以逗号结尾,否则会在写入字符串末尾添加换行符。示例:
print 'Hello, world!' # 写入 'Hello, world\n' 到 sys.stdout
print 1, 2, 3 # 写入 '1 2 3\n' 到 sys.stdout
print >> somefile, 'xyz' # 写入 'xyz' 到 somefile
print 42, # 写入 '42 ' 到 sys.stdout
- return 语句 :终止函数执行并返回一个值,若未提供值则返回
None。示例:
return # 从当前函数返回 None
return 42 # 从当前函数返回 42
return 1, 2, 3 # 从当前函数返回 (1, 2, 3)
- yield 语句 :暂时暂停生成器的执行并产生一个值,生成器是一种迭代器,可用于
for循环等场景。示例:
yield 42 # 从当前函数返回 42
- raise 语句 :用于抛出异常,可不带参数(在
except子句中重新抛出当前捕获的异常),可带Exception的子类和可选参数(此时会构造一个实例),也可带Exception子类的实例。示例:
raise # 只能在 except 子句中使用
raise IndexError
raise IndexError, 'index out of bounds'
raise IndexError('index out of bounds')
- break 语句 :结束最近的循环语句(
for或while),并继续执行循环语句之后的代码。示例:
while True:
line = file.readline()
if not line: break
print line
- continue 语句 :与
break语句类似,暂停当前循环的迭代,但不结束整个循环,而是继续下一次迭代的开始。示例:
while True:
line = file.readline()
if not line: break
if line.isspace(): continue
print line
- import 语句 :用于从外部模块导入名称(绑定到函数、类或其他值的变量)。示例:
import math
from math import sqrt
from math import sqrt as squareroot
from math import *
- global 语句 :用于将变量标记为全局变量,在函数中使用,允许函数体中的语句重新绑定全局变量。不过,使用
global语句通常被认为是不良风格,应尽量避免。示例:
count = 1
def inc():
global count
count += 1
- exec 语句 :用于执行包含 Python 语句的字符串,可选择性指定全局和局部命名空间(字典)。示例:
exec 'print "Hello, world!"'
exec 'x = 2' in myglobals, mylocals # ... 其中 myglobals 和 mylocals 是字典
2. 复合语句
复合语句包含其他语句组(块),常见的有 if 语句、 while 语句、 for 语句、 try 语句等。
- if 语句 :用于条件执行,可包含 elif 和 else 子句。示例:
if x < 10:
print 'Less than ten'
elif 10 <= x < 20:
print 'Less than twenty'
else:
print 'Twenty or more'
- while 语句 :在给定条件为真时进行重复执行(循环),可包含
else子句(若循环正常结束,即没有break或return语句时执行)。示例:
x = 1
while x < 100:
x *= 2
print x
- for 语句 :用于对序列或其他可迭代对象(具有
__iter__方法并返回迭代器的对象)的元素进行重复执行(循环),可包含else子句(若循环正常结束,即没有break或return语句时执行)。示例:
for i in range(10, 0, -1):
print i
print 'Ignition!'
- try 语句 :用于包裹可能出现一个或多个已知异常的代码块,使程序能够捕获这些异常并在捕获到异常时执行异常处理代码。示例:
try:
1/0
except ZeroDivisionError:
print "Can't divide anything by zero."
3. 函数与类定义
3.1 函数定义
函数定义用于创建函数对象,并将全局或局部变量绑定到这些函数对象。示例:
def double(x):
return x*2
3.2 类定义
类定义用于创建类对象,并将全局或局部变量绑定到这些类对象。示例:
class Doubler:
def __init__(self, value):
self.value = value
def double(self):
self.value *= 2
4. Python 在线资源
4.1 Python 发行版
有多种 Python 发行版可供选择,以下是一些比较知名的发行版:
| 发行版名称 | 描述 | 链接 |
| — | — | — |
| 官方 Python 发行版 | 自带名为 IDLE 的默认集成开发环境(IDE) | http://python.org/download |
| ActivePython | ActiveState 的 Python 发行版,除官方发行版外还包含多个非标准包,也是 Visual Python(Visual Studio .NET 的 Python 插件)的所在地 | http://activestate.com |
| Jython | Python 的 Java 实现 | http://www.jython.org |
| IronPython | Python 的 C# 实现 | http://ironpython.com http://workspaces.gotdotnet.com/ironpython |
| MacPython | Python 的 Macintosh 端口 | http://www.cwi.nl/~jack/macpython.html |
| win32all | Python for Windows 扩展 | http://starship.python.net/crew/mhammond |
4.2 Python 文档
大部分 Python 问题的答案很可能能在 Python.org 网站上找到,文档可在 http://python.org/doc 找到,细分如下:
- 官方 Python 教程 : http://python.org/doc/tut ,是对该语言相对简单的介绍。
- Python 语言参考 : http://python.org/doc/ref ,精确定义了 Python 语言,虽不适合初学者入门,但能为大多数关于语言的问题提供精确答案。
- Python 库参考 : http://python.org/doc/lib ,可能是最有用的 Python 文档,描述了标准 Python 库中的所有(或大部分)模块。若想解决 Python 中的问题,这里应是首选查找之处,或许解决方案已存在于库中。
- 扩展和嵌入 Python 解释器 : http://python.org/doc/ext ,描述了如何用 C 语言编写 Python 扩展模块,以及如何将 Python 解释器作为更大 C 程序的一部分使用(Python 本身就是用 C 实现的)。
- Macintosh 库模块 : http://python.org/doc/mac ,描述了 Python 的 Macintosh 端口特有的功能。
- Python/C API 参考手册 : http://python.org/doc/api ,是一份较为技术性的文档,详细描述了 Python/C API(应用程序编程接口),使 C 程序能够与 Python 解释器进行交互。
此外,还有 Python 在线文档 http://pydoc.org 和 pyhelp.cgi http://starship.python.net/crew/theller/pyhelp.cgi 可用于搜索标准 Python 文档。若想获取 Python 社区提供的“配方”和解决方案, Python Cookbook 是个不错的选择。Python 的未来由其仁慈的终身独裁者(BDFL)Guido van Rossum 决定,但其决策会受到所谓的 Python 增强提案的指导,可在 http://python.org/peps 访问这些提案。各种 HOWTO 文档(相对具体的教程)可在 http://python.org/doc/howto 找到。
4.3 有用的工具包和模块
寻找用 Python 实现的软件(包括可在自己程序中使用的有用工具包和模块)的主要来源之一是 Vaults of Parnassus 。若在此处未找到所需内容,可尝试使用标准 Web 搜索,或者查看 freshmeat.net 或 SourceForge 。
4.4 新闻组和邮件列表
Python 讨论的重要论坛是 Usenet 组 comp.lang.python ,若认真学习 Python,建议至少定期浏览该组。其配套组 comp.lang.python.announce 包含有关新 Python 软件(包括新 Python 发行版、Python 扩展和使用 Python 编写的软件)的公告。有多个官方邮件列表可供使用,例如 comp.lang.python 组在 python-list@python.org 邮件列表中有镜像。若遇到 Python 问题需要帮助,可向 help@python.org 发送电子邮件(当然,前提是已尝试了所有其他选项)。对于学习 Python 编程, tutor@python.org 邮件列表可能会有所帮助。有关如何加入这些(以及其他)邮件列表的信息,可查看 http://mail.python.org/mailman/listinfo 。
以下是一些知名的 Python GUI 工具包及其 URL:
| 工具包名称 | URL |
| — | — |
| Tkinter | http://python.org/topics/tkinter/doc.html |
| wxPython | http://www.wxpython.org |
| PythonWin | http://starship.python.net/crew/mhammond |
| Java Swing | http://java.sun.com/docs/books/tutorial/uiswing |
| PyGTK | http://www.pygtk.org |
| PyQt | http://www.thekompany.com/projects/pykde |
以下是十个项目中使用的第三方模块及其 URL:
| 模块名称 | URL |
| — | — |
| Psycopg | http://initd.org/Software/psycopg |
| MySQLdb | http://sourceforge.net/projects/mysql-python |
| Pygame | http://www.pygame.org |
| PyXML | http://sourceforge.net/projects/pyxml |
| ReportLab | http://www.reportlab.org |
| SimpleXMLRPCServer | http://www.sweetapp.com/xmlrpc |
5. Python 符号与变量索引
5.1 符号索引
Python 中有众多符号,它们在不同的场景下有着不同的用途,以下是一些常见符号及其相关说明:
| 符号 | 用途 | 相关页码 |
| — | — | — |
| - 运算符 | 用于数值运算等 | 558 |
| != 运算符 | 不等于比较 | 558 |
| #! 字符序列 | 用于脚本指定解释器 | 21 |
| % 字符 | 用于转换说明符等 | 56 |
| % 运算符 | 取模运算等 | 558 |
| & 运算符 | 按位与运算 | 558 |
| * 运算符 | 乘法运算,还可作为分布运算符和收集运算符 | 123, 124, 558 |
| ** 运算符 | 幂运算,也可作为分布运算符和收集运算符 | 122, 123, 124, 558 |
| + 运算符 | 加法运算,可用于拼接序列 | 37, 551, 558 |
| / 运算符 | 除法运算 | 558 |
| = 运算符 | 赋值操作 | 547 |
| == 运算符 | 相等比较 | 547, 558 |
| > 运算符 | 大于比较 | 558 |
| >= 运算符 | 大于等于比较 | 558 |
| >> 运算符 | 右移运算 | 558 |
| ^ 运算符 | 按位异或运算 | 558 |
| __all__ 变量 | 模块相关 | 212 |
| __delattr__ 方法 | 用于旧风格类实现属性 | 188 |
| __delitem__ 方法 | 基本序列和映射协议相关 | 180 |
| __dict__ 属性 | 类或对象的属性字典 | 156 |
| __doc__ 属性 | 文档字符串 | 112 |
| __future__ 模块 | 用于引入未来的语言特性 | 19 |
| __getattr__ 方法 | 用于旧风格类实现属性 | 188, 189 |
| __getattribute__ 方法 | 可能陷入无限循环陷阱,用于旧风格类实现属性 | 188, 189 |
| __getitem__ 方法 | 基本序列和映射协议相关 | 180, 182 |
| __init__ 方法 | 类的初始化方法 | 173, 175 |
| __iter__ 方法 | 迭代器相关 | 173, 189, 190 |
| __len__ 方法 | 基本序列和映射协议相关 | 180, 182 |
| __setattr__ 方法 | 用于旧风格类实现属性 | 188 |
| __setitem__ 方法 | 基本序列和映射协议相关 | 180 |
| | 运算符 | 按位或运算 | 558 |
| ~ 运算符 | 按位取反运算 | 558 |
| ` ` 反引号 | 将 Python 值转换为字符串 | 25 - 26, 551 |
5.2 变量与方法索引
除了符号,Python 中的变量和方法也有各自的用途和特点,以下是一些常见的变量和方法及其说明:
| 变量/方法 | 用途 | 相关页码 |
| — | — | — |
| abs 函数 | 返回绝对值 | 17, 559 |
| abstraction | 抽象概念,在类、函数等方面有应用 | 109, 139 |
| accessor methods | 访问器方法 | 184 - 185 |
| action 属性 | <form> 标签的属性 | 476 |
| action 方法 | 规则对象的方法 | 400, 401 |
| ActivePython | 一种 Python 发行版 | 571 |
| add 函数 | operator 模块中的加法函数 | 142 |
| add 方法 | Set 类的添加元素方法 | 223 |
| addFilter 方法 | Parser 类的添加过滤器方法 | 401, 402 |
| addition operator (+) | 加法运算符 | 37 |
| addRule 方法 | Parser 类的添加规则方法 | 401, 402 |
| algorithms | 算法相关 | 9, 10 |
6. Python 项目实践
6.1 街机游戏项目
街机游戏项目是一个有趣的实践,其目标是创建一个具有挑战性的游戏。以下是该项目的主要流程:
graph LR
A[项目目标] --> B[准备工作]
B --> C[首次实现]
C --> D[进一步探索]
B --> E[工具准备]
- 目标 :创建一个具有特定玩法和挑战性的街机游戏。
- 准备工作 :包括环境搭建、资源收集等。
- 首次实现 :从基本的游戏框架开始,逐步添加游戏元素,如角色、关卡等。例如:
# 示例代码,首次实现部分功能
import pygame
# 初始化 pygame
pygame.init()
# 设置屏幕大小
screen = pygame.display.set_mode((800, 600))
# 游戏主循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
pygame.quit()
- 进一步探索 :优化游戏性能、添加更多功能等。
6.2 公告板项目
公告板项目用于创建一个可以发布和管理公告的系统。其流程如下:
graph LR
A[项目目标] --> B[准备工作]
B --> C[首次实现]
C --> D[进一步探索]
B --> E[工具准备]
- 目标 :开发一个功能完善的公告板系统。
- 准备工作 :确定数据库、设计页面布局等。
- 首次实现 :搭建基本的公告发布和显示功能。例如:
# 示例代码,首次实现公告显示功能
import sqlite3
# 连接数据库
conn = sqlite3.connect('bulletin_board.db')
c = conn.cursor()
# 查询公告
c.execute("SELECT * FROM announcements")
announcements = c.fetchall()
# 显示公告
for announcement in announcements:
print(announcement)
conn.close()
- 进一步探索 :添加用户管理、公告编辑等功能。
6.3 新闻项目
新闻项目主要用于获取和展示新闻内容。其流程如下:
graph LR
A[项目目标] --> B[准备工作]
B --> C[首次实现]
C --> D[进一步探索]
B --> E[工具准备]
- 目标 :创建一个新闻获取和展示平台。
- 准备工作 :选择新闻源、设计数据结构等。
- 首次实现 :实现新闻的获取和简单展示。例如:
# 示例代码,首次实现新闻获取功能
import requests
# 发送请求获取新闻
response = requests.get('https://newsapi.org/v2/top-headlines?country=us&apiKey=YOUR_API_KEY')
news = response.json()
# 显示新闻标题
for article in news['articles']:
print(article['title'])
- 进一步探索 :添加新闻分类、搜索等功能。
7. Python 编程要点总结
7.1 编程概念要点
- 抽象 :在类和函数中广泛应用,帮助我们将复杂的问题简化,提高代码的可维护性和复用性。例如,通过定义抽象类和接口,可以规范代码的结构。
- 封装 :将数据和操作封装在类中,保护数据的安全性,同时提供统一的接口进行访问。例如:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_name(self):
return self.__name
def get_age(self):
return self.__age
- 继承 :允许子类继承父类的属性和方法,实现代码的复用和扩展。例如:
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
- 多态 :不同的对象可以对同一消息做出不同的响应,提高代码的灵活性。例如,不同的图形类可以实现相同的绘制方法,但绘制出不同的图形。
7.2 编程技巧要点
- 序列操作 :Python 中的序列(如列表、元组)操作非常强大,包括索引、切片、拼接等。例如:
my_list = [1, 2, 3, 4, 5]
print(my_list[2:4]) # 切片操作
- 迭代器和生成器 :迭代器和生成器可以节省内存,提高代码的效率。例如:
# 生成器示例
def my_generator():
for i in range(5):
yield i
gen = my_generator()
for num in gen:
print(num)
- 异常处理 :使用
try-except语句可以捕获和处理程序中可能出现的异常,增强程序的健壮性。例如:
try:
result = 1 / 0
except ZeroDivisionError:
print("Can't divide by zero.")
7.3 资源利用要点
- 在线资源 :充分利用 Python 的在线资源,如官方文档、新闻组和邮件列表等,获取最新的知识和帮助。
- 工具包和模块 :合理使用各种工具包和模块,如
numpy用于数值计算,pandas用于数据处理等,可以提高开发效率。
超级会员免费看
5771

被折叠的 条评论
为什么被折叠?



