读《简明 Python 教程》快速笔记

一、开始
1、大小写敏感
2、每行的开始字符前不能有空格或制表符
3、#符号右边的内容都是注释 ,首行 #!/usr/bin/python 标识解释器的位置 (linux有效)
4、help() 在命令符下显示帮助,按q退出。 例:help(str)
5、获取“操作符”的帮助要先设置PYTHONDOCS变量:$ env PYTHONDOCS=/usr/share/doc/python-docs-2.3.4/html/
   Windows系统可通过设置环境变量PYTHONDOCS实现。

二、基础
1、字符串可以用 单引号 '' ,双引号 "" ,三引号 '''...''' ,三种表示方式。在三引号中可以自由使用单引号和双引号。
2、借助单、双引号合并使用可避免使用转义字符。 "What's your name?"
3、行末的单独一个反斜杠表示字符串在下一行继续。
"This is the first sentence.\
This is the second sentence."
4、如果想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicated by\n"。
5、在处理文本文件的使用建议使用Unicode字符串,在字符串前加上前缀u或U。例如,u"This is a Unicode string."。
6、把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s''your name?'会被自动转为"What's your name?"。
7、使用加法操作符来 级连 字符串,即把两个字符串连接在一起返回一个新的字符串。 'a' + 'b' -> 'ab'
8、单引号和双引号字符串是完全相同的——它们没有在任何方面有不同。
9、支持中文字符,文件头标注:# -*- coding: iso-8859-15 -*-
10、使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。
11、不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。在每个缩进层次使用 单个制表符 或 两个或四个空格 。选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即只使用这一种风格。
12、字符串值不可变。

三、控制流
0、冒号(:)表示语句块的起始,缩进表示不同的语句块(级)
1、if
if 条件判断:
  语句1
  语句2
elif 条件判断2:
  语句3
else:
  语句4

2、while
while 条件判断:
  语句块
  更改条件以退出循环
else:

3、for
for 变量 in 序列:
  语句1
else:
  语句2

4、break语句用来终止循环语句,如果使用break终止for或while循环,则对应的else块将不执行。
5、continue语句用来跳过循环语句中的剩余语句,然后继续进行下一轮循环。

四、函数
1、 def 标识符(参数):
 语句块
2、所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。
3、只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。def func(a, b=5)
4、调用函数时可使用参数的关键字直接赋值 def func(a,b=5,c=10) func(c=50,a=200)
5、没有返回值的return语句等价于return None,,每个函数都在结尾暗含有return None语句。
6、pass语句在Python中表示一个空的语句块。
7、DocStrings:在函数的第一个逻辑行的字符串是这个函数的 文档字符串 。注意,DocStrings也适用于模块和类。
 文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。
8、文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。
9、使用__doc__(注意双下划线)调用函数的文档字符串属性(属于函数的名称),如:print funcMax.__doc__。命令行环境使用help(funcMax)可输出文档字符串。

五、模块
1、使用import语句 输入 模块。
2、脚本的名称总是sys.argv列表的第一个参数,Python从0开始计数,而非从1开始。
3、用点号来使用模块的成员
4、from .. import .. 语句可避免使用点号标识,但是不建议这样用,以保持程序结构清新:from mymodule import sayhi, version
5、可以使用内建的dir函数来列出模块定义的标识符,如:dir(sys)。标识符有函数、类和变量。

六、数据结构
1、list(列表) :
创建:['','','']
添加: .append()
排序: .sort()
删除: del listname[0]
递归打印列表时,在print语句的结尾使用一个 逗号 可消除每个print语句自动打印的换行符。

2、元组:
创建:('','','')
元祖值不可变。
一个空的元组由一对空的圆括号组成,如myempty = ()。
含有单个元素的元组必须在第一个(唯一一个)项目后跟一个逗号,如singleton = (2 , )。
列表与元祖嵌套时,保留其层级关系,不会打散到同一层。
可利用元组匹配格式化打印:
 print "%s今年是%d周年" % (name,age)
 print "%s是中国驰名商标" % name

3、字典:
创建:{key1 : value1, key2 : value2 }
字典中的键/值对是没有顺序的。如果想要一个特定的顺序,那么应该在使用前对它们排序。
字典是dict类的实例/对象。

4、序列:
列表、元组和字符串都是序列。
序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。
顺序索引从0开始,倒序索引从-1开始。
 [2:]表示从2到末尾的切片
 [:2]表示从开始到2的切片
 [:]表示包含全部的切片
 切片操作符的开始位置是包含在序列切片中的,而结束位置被排斥在切片外。
参考与复制:列表的赋值语句不创建拷贝。你得使用切片操作符来建立序列的拷贝。
 mylist = shoplist #这是参考,即mylist指向shoplist (即引用)
 mylist = shoplist[:] #这是复制,是两个独立的对象
字符串方法:
 .startswith('') 是否以给定的字符串开头
 '' in str 是否包含
 .find('') 查找字符串开始位置,找不到返回-1
 .join() 连接序列,如:' '.join(listname)

七、创建有用的脚本
1、最理想的创建压缩归档的方法是分别使用zipfile和tarfile。它们是Python标准库的一部分,可以供你使用。使用这些库就避免了使用os.system这个不推荐使用的函数,它容易引发严重的错误。
2、软件开发过程
 1.什么(分析)
 2.如何(设计)
 3.编写(实施)
 4.测试(测试与调试)
 5.使用(实施或开发)
 6.维护(优化)

八、面向对象的编程
1、类和对象是面向对象编程的两个主要方面。类创建一个新类型,而对象是这个类的 实例 。这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象)。
2、对象可以使用普通的 属于 对象的变量存储数据。属于一个对象或类的变量被称为域。对象也可以使用 属于 类的函数来具有功能。这样的函数被称为类的方法。这些术语帮助我们把它们与孤立的函数和变量区分开来。域和方法可以合称为类的属性。
3、域有两种类型——属于每个实例/类的对象或属于类本身。它们分别被称为实例变量和类变量。
4、类使用class关键字创建。类的域和方法被列在一个缩进块中。
5、类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。
6、__init__方法在类的一个对象被建立时,马上运行。我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。
7、继承
 继承完全可以理解成类之间的 类型和子类型 关系。
 如果我们增加/改变了基类中的任何功能,它会自动地反映到子类型之中。
 然而,在一个子类型之中做的改动不会影响到别的子类型。
 一个子类型在任何需要父类型的场合可以被替换成父类型,即对象可以被视作是父类的实例,这种现象被称为多态现象。
 Python不会自动调用基本类的constructor(__init__),你得亲自专门调用它。
 如果在继承元组中列了一个以上的类,那么它就被称作 多重继承 。

九、输入/输出
1、使用文件
 通过指明我们希望打开的文件和模式来创建一个file类的实例。模式可以为读模式('r')、写模式('w')或追加模式('a')。事实上还有多得多的模式可以使用,你可以使用help(file)来了解它们的详情。
 用file类的write方法来写文件,用close关闭文件,readline方法读文件的每一行。

r 以只读模式打开文件
w 以只写模式打开文件,且先把文件内容清空(truncate the file first)
a 以添加模式打开文件,写文件的时候总是写到文件末尾,用seek也无用。打开的文件也是不能读的
r+ 以读写方式打开文件,文件可读可写,可写到文件的任何位置
w+ 和r+不同的是,它会truncate the file first
a+ 和r+不同的是,它只能写到文件末尾

2、使用pickle/cPickle
 import cPickle as p #输入的模块可重命名
 .dump(存储对象,文件对象) 存对象
 .load(文件对象) 取对象

十、异常
1、try..except
 except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。 如:except EOFError: / except:
 可以接else:从句,当没有异常发生的时候,else从句将被执行。
2、使用raise语句 引发 异常
 引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。
 在except从句中,需提供错误类和用来表示错误/异常对象的变量,如:except shortInputException,x:
3、try..finally
 在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。

十一、标准库
1、sys
 sys.stdin 标准输入
 sys.stdout 标准输出
 sys.stderr 标准错误流
2、os
 os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
 os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
 os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
 os.listdir()返回指定目录下的所有文件和目录名。
 os.remove()函数用来删除一个文件。
 os.system()函数用来运行shell命令。
 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.existe()函数用来检验给出的路径是否真地存在。

十二、扩展内容
1、特殊的方法
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用 print 语句或是使用 str() 的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用 x[key] 索引操作符的时候调用。
__len__(self) 对序列对象使用内建的 len() 函数的时候调用。

2、单语句块
flag = True
if flag: print 'Yes'

3、列表综合
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]

4、在函数中接收元组和列表

posted @ 2013-10-24 11:13  OS.cn  阅读(331)  评论(0编辑  收藏  举报