44、Python 编程全解析:从基础语句到在线资源

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 用于数据处理等,可以提高开发效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值