Head Fiest Python读书笔记

1.按下Alt+P,可以一退回到IDLE之前输入的代码语句,或者按下Alt+N可以移动到下一个代码语句(如果有的话)。可以利用这两个按键组合在IDLE中已经输入的所有代码之间转换,根据需要重新执行其中的任何语句代码。

2.很多其他的编程语言坚持要求代码中使用的每一个标识符都必须声明有类型信息。但是对Python并不适用:标识符只是名字,可以指示某个类型的数据对象。
可以把Python列表想象成一个高层集合。对于列表来说,数据项的类型并不重要。

3、append()方法在列表末尾增加一个数据项,pop()方法从从列表末尾删除数据,extend()方法在列表末尾增加一个数据项集合。
在列表中找到并删除一个特定的数据项(使用remove()方法),加一个数据项(使用insert()方法)。

4、Python列表可以包含混合类型的数据。在同一个Python列表中混合存放字符串和数字是允许的。列表并不关心这些事物的类型是什么,因为列表的存在只是为了提供一种机制,从未可以采用列表形式的存储数据。

5、如果我们要在一个字符串中嵌入一个双引号,可以用\”进行转义,或者用单引号引起这个字符串。

6、isinstance() BIF允许检查某个特定的标识符是否包含某个特定类型的数据。

7、在Python或者是IDLE shell中,键入dir(builtins)可以看到Python提供的内置方法列表。

8、Python3默认递归的深度不能超过100,这意味着很多个“列表中的列表中的列表中的···”另外,如果你希望嵌套更深,还可以改变这个深度上限。

9、组(suite)——python代码块,会通过缩进来指示分组;
功能齐全(Batteries included)——Python提供了快速高效地完成工作所需的大多数功能。

使用def来定义一个函数。

10、Python提供了一组技术,可以很容易地实现共享,这包括模块和一些发布工具:
模块允许你合理组织代码来实现最优共享。
发布工具允许你向全世界共享你的测试。

Python标准库里已经预加了大量模块······而且它们已经在你的计算机上了。如果标准库里没有你要的模块,为什么不去互联网试试看呢?我听说第三方的Python模块都放在PyPI上面。

Python包索引(Python Package index,PyPI)为Internet上的第三方Python模块提供了一个集中的存储库。准备好之后,就可以使用PyPI来发布你的模块,从而使你的代码可供其他人使用。

11、注释 “”” “”“或者是”’ ”’
或者是在一行的任意位置加上一个”#“,则从这一点直到当前末尾的所有内容都是注释。

12、我怎么知道Python模块放在什么地方?
可以问IDLE。在IDLE窗口键入import sys;sys.path,可以看到一个位置列表,Python解释器就放在这些位置上。

import sys;sys.path
['', 'E:\\SPSS\\Python3\\Lib\\idlelib', 'E:\\SPSS\\Python3\\Lib\\site-packages', 'E:\\SPSS', 'E:\\SPSS\\Python3\\python34.zip', 'E:\\SPSS\\Python3\\DLLs', 'E:\\SPSS\\Python3\\lib', 'E:\\SPSS\\Python3']

13、竟然可以使用”;“把多行代码放在一行上,但是并不建议这么做。

14、然后按F5运行这个模块的代码···

15、准备发布
为了共享新创建的这个模块,需要准备一个发布。在Python中,所谓的”发布“(distribution)是指一个文件集合,这些文件联合在一起允许你构建、打包和发布你的模块。一旦发布存在,就可以把模块安装到你的Python本地副本上,还可以把模块上传到PyPI与全世界共享。

16、Python中的所有代码都与一个命名空间关联。主Pytho程序中(以及在IDLE shell中)的代码会与一个名字为main的命名空间关联。将代码放在取单独的模块中时,Python会自动传创建一个与模块同名的命名空间。

在通过print_lol(cast)调用这个函数,而需要限定为nester.print_lol(cast)。

17、使用一个普通的import语句时,如import nester,这会指示Python解释器允许你使用命名空间来限定nester的函数。不过,还可以更为特定:from nester import print_lol

from module import function形式会搅乱你的当前命名空间,因为当前命名空间中已定义的名字会被导入的名字重写。

18、注册PyPI网站:
首先访问PyPI网站(http://pypi.python.org/),并请求一个PyPI ID。
已经把函数中的代码放在一个模块中,用来创建一个发布,而且已经安装在你的Python本地副本中。要把这个发布上传到PyPI,需要完成以下两个步骤:通过命令窗口注册PyPI,以及通过命令行窗口上传。

19、如果遇到一个需求,而且你认为这个需求很普遍,先问问自己有没有一个内置函数(BIF)可以提供帮助。

20、list() 工厂函数创建一个新的空列表
range() 返回一个迭代器,根据需要生成一个指定范围的数字。
enumerate()创建成对数据的一个编号列表,从0开始
int()将一个字符串或者是另一个数转换成一个整数。
id() 返回一个Python对象的唯一标识。
next()返回一个可迭代的数据结构(如列表)中的下一项。

21、要使用print()BIF在屏幕上显示一个制表符(TAB),而不是简单换行,需要使用以下的Python代码:

print("\t",end = ")

22、理想的解决方案是同时提供这两个API,一个API提供新特性,而另一个不提供。
为了将一个函数的必要参数变成可选的参数,需要为这个参数提供一个缺省值。如果没有提供参数值,就会使用这个缺省值。如果提供了一个参数值,则会使用这个值而不是缺省值。关键在于,参数的缺省值实际上使得这个参数成为可选参数。

def print_lol(the_list.level=0):

level=0通过增加一个缺省值使得”level“变成一个可选的参数。

23、模块是一个包含Python代码的文本文件,发布工具允许将模块转换为可共享的包。setup.py程序提供了模块的元数据,用来构建、安装和上传打包的发布。包含end=’ ‘作为print()BIF的一个参数会关闭其默认行为(即在输入中自动包含换行)

24、Python中的基本输入机制是基于行的:从文本文件向程序读入数据时,一次会到达一个数据行。
使用open()BIF处理文件中的数据时,会创建一个迭代器从文件向你的代码行输入数据行,一次传入一行数据。

25、import os——从标准库导入os
os.getcwd()——获得当前的工作目录
os.chdir()切换工作目录

26、要处理大量意外的情况时,最好的办法是增加额外的逻辑来进行处理。如果有更多担心的问题,就需要更多的代码。或者也可以允许这些错误发生,然后只需要在各个错误发生时分别处理相应的错误。这会是一种非凡的做法。

27、每个Python字符串还有一个find()方法,用来尝试找出一个字符串中的子串,如果无法找到,find()方法会返回值-1.如果find()可以找到子串,这个方法会返回到该子串在原字符串中的索引位置。
先尝试运行代码,然后处理可能发生的错误。

28、在正常的控制流期间,Python尝试运行你的代码,如果没有任何问题,代码会继续正常执行。在异常控制流期间,Python先尝试运行你的代码,如果发现有问题,就会执行恢复代码,然后继续正常执行你的代码。

29、tuple 元组,用小括号标识,是创建后不能改变的列表。

try语句会捕获所有的异常,用pass来忽略这个错误。

30、Python的os模块有一些工具可以帮助确定一个数据文件是否存在,所以我们需要从标准库导入这个模块,然后向代码增加必要的检查。import os;if os.path.exists(‘myfile.txt’)

31、”traceback”是出现的运行时错误的一个详细描述。数据不符合期望格式的时候会出现ValueError,数据无法正常访问的时候会出现IOError,例如可能你的数据文件已经被移走或者是重命名。 Not关键字将一个条件取反。

32、strip()方法从字符串中去除不想要的空白符。

使用open() BIF打开磁盘文件时,可以指定使用什么访问模式。默认,open()使用模式r表示读,所以不需要专门指定模式,要打开一个文件完成写,需要使用格式w。
默认,print()BIF 显示数据时会使用标准的输出(通常是屏幕)。要把数据写至一个文件,需要用file参数来指定所使用的数据文件对象。

print("Norwegin Blues stun easily.",file = out)

完成工作的时候,一定要保证所有数据都写至磁盘。这称为刷新(flushing)

out.close()

使用访问模式w,python会打开指定的文件来完成写。如果这个文件已经存在,则会清空它现有的内容,也就是完全清除。要追加一个到一个文件,需要使用访问模式a。要打开一个文件来完成写和读(不清除),需要使用w+。如果想打开一个文件完成写,但是这个文件并不存在,那么首先会为你创建这个文件,然后再打开文件进行写。

33、异常处理代码完成了它的任务,不过现在你遇到了一个棘手的情况,你的数据有可能被破坏。这里需要一种策略,保证不论是否出现一个IOError都会运行某些代码。在代码的上下文中,你希望不论发生了什么都要确保关闭文件。

如果遇到这种情况,也就是不论出现什么错误都必须运行某些代码时,可以向try语句的finally组增加代码。

34、Python内置的内存管理技术会回收所使用的RAM,以便你的程序使用。
Python变量只包含数据对象的一个引用,数据对象才真正包含数据。
运行时出现一个错误时,Python会产生一个特定的异常(如IOError、ValueError等)。另外,Python会创建一个异常对象,它会作为一个参数传入except代码组。

35、locals()BIF会返回当前作用域中定义的所有名的一个集合。if data in locals():

由于处理文件时try/except/finally模式相当常用,所以Python提供了一个语句来抽象出相关的一些细节。对文件使用with语句时,可以大大减少需要编写的代码量。因为有了with语句就不再需要包含一个finally组来处理文件的关闭,即妥善关闭一个可能打开的数据文件。

with语句利用了一种名为上下文管理协议(context management protocal)的python技术。

36、默认地,print()会模仿Python解释器实际存储列表数据的格式来显示你的数据。所得到的输出不再做进一步处理······其主要作用只是告诉你(Python程序员)数据在内存中的样子。

Python提供了一个标准库,名为pickle,它可以保存和加载几乎任何Python对象,包括列表。

使用pickle很简单:只需要导入所需要的模块,然后使用dump()保存数据,以后某个时间使用load()恢复数据。处理腌制数据时的唯一要求是,必须以二进制访问模式来打开这些文件。
pickle.dump(obj, file[, protocol])
  序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

pickle.load(file)
  反序列化对象。将文件中的数据解析为一个Python对象。
其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错。

37、data.strip().split(‘,’)代码的这种方法叫做方法串链(method chaining)。第一方法strip()应用到data中的数据行,这会去除字符串中所有不想要的空白符。之后,去除了空白符的结果由第二个方法split(‘,’)处理,这会创建一个列表。所得到的列表再应用到以上代码中的目标标识符。采用这种方式,可以把多个方法串链在一起,生成所需要的结果。最好从左到右读这种方法链。

38、转换列表是一个很常见的需求,因而Python提供了一个工具,可以尽可能毫不费力地完成这种转换。这个工具有一个相当费解的名字,叫做列表推导(list comprehension)。设计列表推导是为了减少将一个列表转换为另一个列表时所需编写的代码量。

39、如果希望用户在消息的同一行上键入他的答案,只需要在print语句的末尾放上一个逗号。使用逗号将多个print语句合并到一行时,python会增加一个空格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值