《简明Python教程》读书笔记

-----------------------------------------------------------------------
                                                   简 明 Python 教 程 
                                                   第1章 介绍
                                                   第2章 安装Python
                                                   第3章 最初的步骤
                                                   第4章 基本概念
-----------------------------------------------------------------------
08-5-28
                                                   第5章 运算符与表达式

-----------------------------------------------------------------------
                                                   第6章 控制流
三种控制流语句:if  while for以及break continue
break语句:
一个重要的注释是:如果从for或while循环中 终止 ,任何对应的循环else块将不执行。

-----------------------------------------------------------------------
                                                   第7章 函数

默认参数值:
只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的

形参而后声明没有默认值的形参。
这是因为赋给形参的值是根据位置而赋值的。例如,def func(a, b=5)是有效的,但是def func(a=5,

b)是 无效 的

None是Python中表示没有任何东西的特殊类型

pass语句在Python中表示一个空的语句块

DocStrings文档字符串:首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。

def printMax(x, y):
...
...
print printMax.__doc__
-----------------------------------------------------------------------
                                                   第8章 模块

当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这

个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你使用 。注意,初始化过程仅在我

们 第一次 输入模块的时候进行。

from import语句:
from sys import argv
from sys import *

避免使用from..import而使用import语句-->程序易读,避免名称的冲突。

模块的__name__
if __name__ == '__main__':
每个Python模块都有它的__name__,如果它是'__main__',这说明这个模块被用户单独运行,我们可以

进行相应的恰当操作。

可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

模块的用处在于它能为你在别的程序中重用它提供的服务和功能。Python附带的标准库就是这样一组模

块的例子
-----------------------------------------------------------------------

                                                   第9章 数据结构

Python中有三种内建的数据结构——列表、元组和字典

 

sort方法影响列表本身,而不是返回一个修改后的列表:列表是 可变的 而字符串是 不可变的

list是处理一组有序项目的数据结构,一旦创建了一个列表,可以添加、删除或是搜索列表中的项目
元组和列表十分类似,只不过元组和字符串一样是 不可变的 即你不能修改元组
注意元组之内的元组不会失去它的身份
索引 运算符:new_zoo[2]

含有单个元素的元组:必须在第一个(唯一一个)项目后跟一个逗号 以区分元组和表达式中一个带圆括号

的对象。

print语句可以使用跟着%符号的项目元组的字符串
定制可以是%s表示字符串或%d表示整数

列表:
shoplist = ['apple', 'mango', 'carrot', 'banana']

元组:
zoo = ('wolf', 'elephant', 'penguin')

字典:
键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。

字典是dict类的实例/对象


列表、元组和字符串都是序列
序列的两个主要特点是索引操作符和切片操作符

08-5-29:

引用:
变量名指向对象的内存地址
名称到对象的绑定
mylist = shoplist[:] # make a copy by doing a full slicce


-----------------------------------------------------------------------
                                                   第10章 解决问题——编写一个Python脚本
要求:文件创建备份的程序

1. 什么(分析)
2. 如何(设计)
3. 编写(实施)
4. 测试(测试与调试)
5. 使用(实施或开发)
6. 维护(优化)
7. 重要

-----------------------------------------------------------------------
                                                   第11章 面向对象的编程

self:
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这

个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的

名称是self

__init__方法(开始和结尾都是双下划线):
__init__方法在类的一个对象被建立时,马上运行
__init__方法类似于C++、C#和Java中的 constructor

类的变量:只有一个类变量的拷贝
对象的变量:有自己的拷贝

只能使用self变量来参考同一个对象的变量和方法。这被称为 属性参考
可以发现,self.name的值根据每个对象指定,这表明了它作为对象的变量的本质

__del__方法:
它在对象消逝的时候被调用
对象消逝即对象不再被使用,它所占用的内存将返回给系统作它用
__del__方法与 destructor 的概念类似

Python中所有的类成员(包括数据成员)都是公共的
Python的名称管理体系:会将 双下划线前缀的数据成员作为私有变量,如:__privatevar

11.7 继承:(inherit.py)
Python中继承在子类中必须调用父类的__init__ ?
Python不会自动调用基本类的constructor

-----------------------------------------------------------------------
                                                   第12章 输入/输出

f = file('poem.txt', 'w')
模式可以为:读(r)、写(w)、追加(a)
读模式会作为默认的模式

f.readline():
因为从文件读到的内容已经以换行符结尾,所以在print语句后使用逗号来消除自动换行

12.2 储存器:
Python提供一个标准的模块,称为pickle
另一个:cPickle(用C语言编写,比pickle快1000倍,功能和pickle模块完全相同)
两个模块都简称为pickle模块
持久化

**************************************************

f = file(shoplistfile, 'w') 
p.dump(shoplist, f) # dump the object to a file 
f.close() 

f = file(shoplistfile)  
storedlist = p.load(f) 
**************************************************
-----------------------------------------------------------------------
                                                   第13章 异常

try..except
 可以关联上一个else从句

可以使用raise语句 引发 异常

同时使用except从句和finally块,需要把一个嵌入另外一个

sys.exit():
Traceback (most recent call last):
  File "", line 1, in 
  
  
    sys.exit()
SystemExit

-----------------------------------------------------------------------
                                                   第14章 Python标准库

cat是 concatenate 的缩写

在交互模式下,在sys.argv列表中总是至少有一个项目。它就是当前运行的程序名称,作为sys.argv[0]

sys.version 版本信息
sys.version_info元组则提供一个更简单的方法使程序具备Python版本要求功能
sys.stdin
sys.stdout
sys.stderr

sys模块包含系统对应的功能
os模块包含普遍的操作系统功能

os.sep 取代操作系统特定的路径分割符
os.name 指示正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径
os.getenv()和os.putenv()函数分别用来读取和设置环境变量
os.listdir()返回指定目录下的所有文件和目录名
os.remove()函数用来删除一个文件
os.linesep 字符串给出当前平台使用的行终止符。如,Windows使用'/r/n',Linux使用'/n'而Mac使

用'/r'。
os.path.split()函数返回一个路径的目录名和文件名
 >>> os.path.split('/home/swaroop/byte/code/poem.txt')
     ('/home/swaroop/byte/code', 'poem.txt')
os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。
os.path.exists()函数用来检验给出的路径是否真地存在
-----------------------------------------------------------------------
                                                   第15章 更多Python的内容

表15.1 一些特殊的方法:
名称 说明
__init__(self,...)     这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self)          恰好在对象要被删除之前调用。
__str__(self)          在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other)     当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等

等)都有特殊的方法。
__getitem__(self,key)  使用x[key]索引操作符的时候调用。
__len__(self)          对序列对象使用内建的len()函数的时候调用。


缩进层次-->语句块(只包含一句语句,可以在条件语句或循环语句的同一行指明它)

列表综合:可从一个已有的列表导出一个新的列表:
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print listtwo

在函数中接收元组和列表:
由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀

,多余的参数则会被认为是一个字典的键/值对。
****************************************************************************

>>> def powersum(power, *args):
...     '''Return the sum of each argument raised to specified power.''' 
...     total = 0
...     for i in args: 
...          total += pow(i, power)
...     return total
... 
>>> powersum(2, 3, 4)
25

>>> powersum(2, 10) 
100 


****************************************************************************

lambda形式
lambda语句被用来创建新的函数对象,并且在运行时返回它们
***************************

def make_repeater(n): 
    return lambda s: s*n

twice = make_repeater(2) 

print twice('word') 
print twice(5) 


***************************
print语句不能用在lambda形式中,只能使用表达式

exec语句用来执行储存在字符串或文件中的Python语句:
exec 'print "Hello World"'

eval语句用来计算存储在字符串中的有效Python表达式:
eval('2*3')

assert语句(断言)
当assert语句失败的时候,会引发一个AssertionError

repr函数用来取得对象的规范字符串表示,反引号(也称转换符)可以完成相同的功能.
大多数时候有eval(repr(object)) == object
**********************

>>> i = [] 
>>> i.append('item') 
>>> `i`
"['item']" 
>>> repr(i)
"['item']"


**********************


-----------------------------------------------------------------------
                                                   第16章 接下来学习什么?

可供选择的使用Python的GUI:
有许多可供选择的使用Python的GUI:
● PyQt: Qt工具包的Python绑定。Qt工具包是构建KDE的基石。
  Linux下免费,Windows下付费
         《使用Python语言的GUI编程:Qt版》:http://www.opendocs.org/pyqt/
         官网:http://www.riverbankcomputing.co.uk/pyqt/index.php

● PyGTK: GTK+工具包的Python绑定。GTK+工具包是构建GNOME的基石
          GTK+在Linux上工作得很好,而它的Windows接口还不完整。
   官网:http://www.pygtk.org/

● wxPython: wxWidgets工具包的Python绑定。
      它的可移植性极佳,可以在Linux、Windows、Mac甚至嵌入式平台上运行。
      官网:http://www.wxpython.org/
             wxGlade: http://wxglade.sourceforge.net/
● TkInter: 现存最老的GUI工具包之一。TkInter具备可移植性,可以在Linux/Unix和Windows下工作。

重要的是,TkInter是标准Python发行版的一部分。

● 更多:
        Python.org上的GUI编程wiki页:http://www.python.org/cgi-bin/moinmoin/GuiProgramming


Python标准文档: http://docs.python.org/
Python.org: http://www.python.org/
comp.lang.python: 讨论Python语言的世界性新闻组
Google群: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=comp.lang.python
作为新闻组镜像的邮件列表: http://mail.python.org/mailman/listinfo/python-list
《Python实用大全》: http://aspn.activestate.com/ASPN/Python/Cookbook/
《迷人的Python》: http://gnosis.cx/publish/tech_index_cp.html
《深入理解Python》: http://www.diveintopython.org/
Jython是用Java语言实现的Python解释器: http://www.jython.org/
IronPython是用C#语言实现的Python解释器: http://www.ironpython.com/
Lython是Python语言的Lisp前段: http://www.caddr.com/code/lython/

自由/开放源码软件(FLOSS)
Linux核心: http://www.kernel.org/
Knoppix: http://www.knopper.net/ (仅在CD上运行的Linux发行版)
OpenOffice.org: http://www.openoffice.org/
Mozilla Firefox: http://www.mozilla.org/products/firefox
Mozilla Thunderbird: http://www.mozilla.org/products/thunderbird
MPlayer 视频播放器: http://www.mplayerhq.hu/
Movix 是一个Linux发行版: http://movix.sourceforge.net/
更多FLOSS信息:
SourceForge: http://www.sourceforge.net/
FreshMeat: http://www.freshmeat.net/
KDE: http://www.kde.org/
GNOME: http://www.gnome.org/
OSNews: http://www.osnews.com/
LinuxToday: http://www.linuxtoday.com/
NewsForge: http://www.newsforge.com/
SwaroopCH's blog: http://www.swaroopch.info/blog

作者
Swaroop C. H. 在Yahoo!驻印度班加罗尔的办事处工作
www.swaroopch.info

译者
沈洁元 上海交通大学无线通信研究所硕士研究生

08-5-30
-----------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值