《简明python教程》学习笔记

前言

记录在阅读简明python教程中的一些关键内容。
私以为,该书适合有一定编程基础,并且有面向对象编程经验的人初学。

在python中有四中类型的数—整数, 长整数,浮点数和复数

字符串

可以使用,单引号,双引号,三引号,三引号可以指示一个多行的字符串

字符串是不可变的

按字面意义级连字符串

例如,‘are you ok’‘?’,会被自动转为‘are you ok?’

python没有char类型数据

使用自然字符串处理正则表达式。

如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自
然字符串。自然字符串通过给字符串加上前缀r或R来指定。

标识符

以字母或者下划线开头,其他部分由字母,下划线或者数字组成。

数据类型

基本数据类型为数和字符串,当然可以用基本类型构造属于我们自己的类型。

运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
+ 加
- 减
× 乘
×× 幂
/ 除
//取整除 返回商的整数部分
% 取模
<< 左移
>> 右移
not 非
and 与
or 或
......

控制流

if else

if expression:
elif expression
else:

while

while expression:

for

for i in range(1,5)

函数

函数形参

def printMax(a,b):

全局变量

global 关键字

默认参数值

对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的
话,这些参数就使用默认值。
例如:

1
2
3
4
5
6
#!/usr/bin/python
# Filename: func_default.py
def myprint(message, times = 1):
print message * times
myprint('Hello')
myprint('World', 5)

只有在形参表末尾的那些参数可以有默认参数值

def func(a, b=5)有效,而def func(a=5, b)无效

关键参数

如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参
数赋值

1
2
3
4
5
6
7
#!/usr/bin/python
# Filename: func_key.py
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)

输出
$ python func_key.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50

docstrings

文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,
从第三行开始是详细的描述。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python
def docStringTest(message):
''' Hello,this is the test function.
let us get start'''
print message
docStringTest('test messge')
print docStringTest.__doc__

输出:
test messge
Hello,this is the test function.

let us get start

数据结构

列表

元组

字典

序列

引用

面向对象编程

self

self等价于java中的this
你有一个不需要参数的对象方法,你还是得给这个方法定义一个self参数

init

在创建对象的实例时,会把参数传给init方法

继承

class Student(SchoolMember):
—Python不会自动调用基本类的constructor,你得亲自专门调用它。
因此,在子类的init函数中,需要调用基类的init

存储器 pickle

cPickle比pickle快1000倍

1
2
3
4
5
6
7
8
9
10
shoplist = ['apple', 'mango', 'carrot']
# Write to the file
f = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a file
f.close()
del shoplist # remove the shoplist
# Read back from the storage
f = file(shoplistfile)
storedlist = p.load(f)
print storedlist

异常

捕捉异常

try:
except:errortype
except:

引发异常

class MyException(Exception):
‘’’A user-defined exception class.’’’
def init(self, length, atleast):
Exception.init(self)
self.length = length
self.atleast = atleast
raise MyException(3,3)

try finally

try:
finally:
finally中的语句,无论异常发生与否都会执行

python标准库

sys

包含系统对应的功能

os

包含普遍的操作系统功能

比如获取当前目录

其他内容

特殊方法

init(self,…) 新建对象要被返回使用之前被调用
del(self)在对象要被删除之前调用
str(self)在对对象使用print或是使用str()的时候调用
lt当使用小于运算符时调用,类似的,+,》等都有特殊的方法
len(self)对序列对象使用内建的()函数时调用

列表综合

1
2
3
4
5
#!/usr/bin/python
# Filename: list_comprehension.py
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print listtwo

输出:
[6, 8]
使其中所有大于2的数都是原来的2倍

在函数中接收元组和列表

由于在args变量前有前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的
是*
前缀,多余的参数则会被认为是一个字典的键/值对。

lambda 形式

lambda语句被用来创建新的函数对象

注:是否类似c语言里的函数指针

exec 和eval语句

exec语句用来执行储存在字符串或文件中的Python语句。

eval语句用来计算存储在字符串中的有效Python表达式。

守望 wechat
关注公众号[编程珠玑]获取更多原创技术文章
出入相友,守望相助!