Head First Python学习总结
初识Python
Python术语
BIF——内置函数。
组(suite)——Python代码块,会通过缩进来指示分组。
功能齐全(Batteries included)——指Python提供了快速高效地完成工作所需的大多数功能。IDLE说明
IDLE shell允许在编写代码的同时试验代码。
调整IDLE的首选项,以适应工作方式工作。
记住:使用shell时,Alt+P表示前一个命令,Alt+N表示下一个命令,不过如果使用Mac,则要使用Ctrl+P和Ctrl—+N。核心要点
从命令行或在IDLE中运行Python3。
标识符是指示数据对象的名字。标识符没有“类型”,不过标识符所指示的数据对象有类型。
print() BIF会在屏幕上显示一个消息。
列表是一个数据集合,数据项之间用逗号分隔,整个列表用中括号包围。
列表就像是”打了激素”的数组。
可以用BIF处理列表,另外列表还支持一组列表方法。
列表可以存放任意数据,而且数据可以是混合类型。列表还可以包含其他列表。
列表可以随需要伸缩。数据使用的所有内存都有Python为你管理。
Python使用缩进将语句归组在一起。
len() BIF会提供某个数据对象的长度,或者统计一个集合中的项数,如列表中的项数。
for循环允许迭代处理一个列表,这通常比使用一个等价的while循环更方便。
可以利用if…else…语句在代码中完成判断。
isinstance() BIF会检查一个标识符是否指示某个指定类型的数据对象。
使用def来定义一个定制函数。
共享你的代码
Python术语
使用“三重引号字符串”可以在代码中加入一个多行注释。
PyPI就是Python包索引(Python Package Index),这个网站很值得访问。
Python内存中的名字就是存放在“命名空间”中。
Python的主命名空间名为_main_。IDLE说明
在IDLE编辑窗口中按F5可以运行代码。
按F5将模块的代码加载到IDLE shell,模块名会专门导入到IDLE的命名空间。使用IDLE时很便利。在代码中,需要显式使用import语句。核心要点
模块是一个包含Python代码的文本文件。
发布工具允许将模块转换为可共享的包。
setup.py程序提供了模板的元数据,用来构建、安装和上传打包的发布。
使用import语句可以将模块导入到其他程序中。
Python中的各个模块提供了自己的命名空间,使用module.function()形式调用模块的函数时,要用命名空间名限制函数。
使用import语句的from module import function形式可以从一个模块将函数专门导入到当前命名空间。
使用#可以注释掉一行代码,或者为程序增加一个简短的单行注释。
内置函数(built-in-function,BIF)有自己的命名空间,名为_builtins_,这会自动包含在每一个Python程序中。
ranage() BIF可以与for结合使用,从而迭代固定次数。
包含end=”作为print() BIF的一个参数会关闭其默认行为(即在输入中自动包含换行)。
如果为函数参数提供一个缺省值,这个函数就是可选的。
文件与异常
Python术语
异常(exception)因运行时错误而出现,会产生一个traceback。
traceback是出现的运行时错误的一个详细描述。IDLE说明
可以从IDLE的Help菜单选择Python Docs来访问Python的文档。这会在你喜欢的Web浏览器中打开Python3文档。
核心要点
使用open() BIF打开一个磁盘文件,创建一个迭代器从文件读取数据,一次读取一个数据行。
readline()方法从一个打开的文件读取一行数据。
seek()方法可以用来将文件“退回”到起始位置。
close()方法关闭一个之前打开的文件。
split()方法可以将一个字符串分解为一个子串列表。
Python中不可改变的常量列表称为元祖(tuple)。一旦将列表数据赋至一个元祖,就不能再改变。元祖是不可改变的。
数据不符合期望的格式时会出现ValueError。
数据无法正常访问时会出现IOError(例如,可能你的数据文件已经被移走或者重命名)。
help() BIF允许你在IDLE shell中访问Python的文档。
find()方法会在一个字符串中查找一个特定子串。
not关键字将一个条件取反。
try/except语句提供了一个异常处理机制,从而保护可能导致运行时错误的某些代码行。
pass语句就是Python的空语句或null语句,它什么也不做。
持久存储
Python术语
不可变类型——Python中的一些数据类型,一旦赋值,这个值就不能再改变。
腌制——将数据对象保存到一个持久存储中的过程。
解除腌制——从持久存储中恢复一个已保存的数据对象的过程。核心要点
strip()方法可以从字符串中去除不想要的空白符。
print() BIF的file参数控制将数据发送/保存到哪里。
finally组总会执行,而不论try/except语句中出现什么异常。
会向except组传入一个异常对象,并使用as关键字赋至一个标识符。
str() BIF可以用来访问任何数据对象(支持串转换)的串表示。
locals() BIF返回当前作用域中的变量集合。
in操作符用于检查成员关系。
+操作符用于字符串时将连接两个字符串,用于数字时则会将两个数相加。
with语句会自动处理所有已打开文件的关闭工作,即使出现异常也不例外。with语句也是用as关键字。
sys.stdout是Python中所谓的标准输出,可以从标准库的sys模块访问。
标准库的pickle模块允许你容易而高效地将Python数据对象保存到磁盘以及从磁盘恢复。
pickle.dump()函数将数据保存到磁盘。
pickle.load()函数从磁盘恢复数据。
推导数据
Python术语
原地排序——转换然后替换。
复制排序——转换然后返回。
方法串联——从左向右读,对数据应用一组方法。
函数串联——从右向左读,对数据应用一组函数。
列表推导——在一行上指定一个转换(而不是使用迭代)
分片——从一个列表访问多个列表。
集合——一组无序的数据项,其中不包含重复项。核心要点
sort()方法可以在原地改变列表的顺序。
sorted() BIF通过提供复制排序可以对几乎任何数据结构排序。
向sort()或sorted()传入reverse=True可以按降序排列数据。
如果有如下代码:
new_l=[]
for t in old_l:new_l.append(len(t))
使用列表推导重写这个代码,可以写作:new_l=[len(t) for t in old_l]
要访问一个列表中的多个数据项,可以使用分片。如my_list[3:6],这会访问列表中从索引位置3直到(但不包括)索引位置6的列表项。
使用set()工厂方法可以创建一个集合。
定制数据对象
Python术语
字典——这是一个内置的数据结构,允许将数据值与键关联。
键——字典中查找的部分。
值——字典中的数据部分(可以是任何值,也包括另一种数据结构)。
self——这是一个方法参数,总是指向当前对象实例。核心要点
使用dict()工厂函数或使用{}可以创建一个空字典。
要访问一个名为person的字典中与键Name关联的值,可以使用我们熟悉的中括号记法:person[‘Name’].
类似于列表和集合,Python的字典会随着新数据增加到这个数据结构中而动态扩大。
可以先创建一个空字典:new_d={}或new_d=dict()然后增加数据d[‘Name’] = ‘Err name’来填充字典,或者也可以一次完成以上的全部工作:new_d={‘Name’:’Err name’}。
可以用class关键字定义一个类。
类方法(代码)与函数的定义基本相同,也就是说,要用def关键字定义。
类属性(数据)就像是对象实例中的变量。
可以在类中定义init()方法来初始化对象实例。
类中定义的每个方法都必须提供self作为第一个参数。
类中的每个属性前面都必须有self,从而将数据与其实例关联。
类可以从零开始构建,也可以从Python的内置类或者其他定制类继承。
类可以放在一个Python模块中,并上传到PyPI。
Web开发
Python术语
@property——这是一个修饰符,可以使类方法表现的像是一个类属性。
Web术语
Web应用——在Web上运行一个程序。
Web请求——从Web浏览器发送到Web服务器。
Web响应——从Web服务器发送到Web浏览器,作为对Web请求的相应。
CGI——通用网关接口,允许Web服务器运行一个服务器端程序。核心要点
模型-视图-控制器(Model-View-Controller)模式允许你采用一种可维护的方式设计和构建一个Web应用的数据。
模型存储Web应用的数据。
视图显示Web应用的用户界面。
控制器将所有代码与编程逻辑“粘合”在一起。
标准库string模块包含一个名为Template的类,它支持简单的字符串替换。
标准库http.server模块可以用来在Python中建立一个简单的Web服务器。
标准库CGI模块对编写CGI脚本提供了支持。
标准库glob模块非常适合处理文件名列表。
在Linux和Mac OS X上可以使用chmod+x命令设置可执行权限位。
启用标准库cgitb模块时,允许在浏览器中查看CGI编码错误。
CGI代码中可以使用cgitb。enable()打开CGI跟踪。
可以使用cgi.FieldStorage()访问作为Web请求一部分发送给Web服务器的数据,数据将作为一个Python字典。
移动应用开发
Python术语
Python2——Python的前一个版本,它与Python3存在兼容性问题。
Android术语
SL4A——全名为Scripting Layer for Android,允许在你的Android设备上运行Python。
AVD——这是一个Andorid虚拟设备,允许在你的计算机上模拟Android设备。核心要点
JSON库模块允许将Python的内置类型转换为基于文本的JSON数据交换格式。
使用json.dumps()可以创建一个Python类型的字符串版本。
使用json.loads()可以从一个JSON字符串创建一个Python类型。
如果数据使用JSON发送,需要将其Content-Type:设置为application/json。
urllib和urllib2库模块(都在Python 2中提供)可以用来从一个程序向Web服务器发送编码的数据(使用urlencode()和urlopen()函数)。
sys模块提供了sys.stdin、sys.stdout、sys.stderr输入流。
管理你的数据
Python术语
数据库API——这是一种标准化机制,用于从Python程序访问一个基于SQL的数据流。
数据库术语
数据库——一个或多个表的集合。
表——一个或多个数据行的集合,每个数据行包括一个或多个列。
SQL——结构化查询语句,这是数据库世界的语言,允许使用CREATE、INSERT、SELECT等处理数据库中的数据。核心要点
标准库cgi模块汇总fieldStorage()方法允许从CGI脚本访问发送至Web服务器的数据。
标准os库包含一个environ字典,可以很方便地访问程序的环境设置。
SQLite数据库系统作为sqlite3标准库包含在Python中。
connect()方法允许通过一个已有的连接与数据库通信。
cursor()方法允许通过一个已有的连接与数据库通信。
execute()方法允许通过一个已有的连接向数据库发送一个SQL查询。
commit()方法使之前对数据库所做的修改永久保留。
rollback()方法取消对数据做出的所有未完成的修改。
close()方法关闭与数据库的一个现有连接。
?占位符允许在Python代码中为SQL语句指定参数。
扩展你的Web应用
App Engine术语
Datastore——Google App Engine用来持久存储数据的数据库。
实体(Entity)——对应数据行的一种称呼。
属性(Property)——应对数据值的一种称呼。核心要点
每个App Engine Web应用必须有一个名为app.yaml的配置文件。
可以使用GAE Launcher启动、停止、监视、测试、上传和部署你的Web应用。
App Engine的模板技术建立在Django项目所用模板技术基础之上。
App Engine还可以使用Django的表单验证框架。
可以使用self.response对象来构造一个GAE Web的响应。
可以使用self.request对象来访问一个GAE Web应用的表单数据。
响应一个GET请求时,要在一个get()方法中实现必要的功能。
响应一个POST请求时,要在一个post()方法中实现必要的功能。
使用put()方法将数据存储在App Engine datastore中。
处理复杂性
Python术语
条件列表推导尾部包括一个if语句,允许在推导运行控制哪些项可以增加新列表中。
列表推导可以重写为一个等价的for循环。核心要点
input() BIF允许为用户提供提示语并接入输入。
如果你在使用Python 2而且需要input()函数,那么可以使用raw_input()函数。
可以结合Python内置的列表、集合和字典构造复杂的数据结构。
time模块作为标准库的一部分,包含了大量函数可以完成时间格式之间的转换。
- 参考文献:Head First Python