以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话
2013-7-19 14:30 学习笔记
1,Python程序的结构是这样的:程序由模块构成,模块包含语句,语句包含表达式,表达式建立并处理对象。
2,与C语言不同,Python语句会要求强制缩进,来保证代码的可读性和可维护性。同时语句顶端位于测试两端的括号是可以省略的。语句也不需要分号结尾。这样做Python会允许通过,但全世界都会知道你是一个正在学习Python的前C程序员。
x = 1
y = 2
if x > y:
print x
else:
print y
3,赋值语句建立对象引用值,变量名在首次赋值时会被创建,变量名在引用前必须先赋值。Python中赋值语句的形式如下表:
运算 | 解释 |
name = 'mathboy' | 基本形式 |
name, age = 'mathboy', 23 | 元组赋值 |
[name, age] = ['mathboy', 23] | 列表赋值 |
a,b,c,d = 'girl' | 序列赋值 |
boy = girl = 'mo' | 多目标赋值 |
age += 23 | 增强赋值(相当于age = age + 23) |
4,元组赋值可以利用来交换两个变量的值。例如:
a = 1
b = 2
a,b = b,a
print a,b
输出结果为:
2 1
5,理论上,序列赋值的右侧可以是任意可迭代的对象,但右边元素的数目要跟左侧变量的数目相同。例如:
name = 'math'
a,b,c,d = name
print a,b,c,d
a,b,c = name[0], name[1], name[2:]
print a,b,c
a,b,c = list(name[:2]) + [name[2:]]
print a,b,c
a,b = name[:2]
print a,b
(a,b),c = name[:2], name[2:]
print a,b,c
结果为:
m a t h
m a th
m a th
m a
m a th
6,利用range()函数可以给系列变量赋整数值。例如:
a,b,c,d = range(4)
print a,b,c,d
结果为:
0 1 2 3
7,多目标赋值时,要注意共享引用的情况。例如:
a = b = 0
b += 1
print a,b
c = d = []
d.append(3.14)
print c,d
输出结果为:
0 1
[3.14] [3.14]
8,增强赋值通常比完整形式的赋值执行得更快,同时会自动选择优化技术。例如对于列表,+= 赋值会自动调用较快的extend()方法,而不是使用较慢的 + 合并运算。
L = [1,2]
L = L + [3,4] # slower
L.extend([5,6]) # faster
L += [7,8] # mapped to L.extend([7,8])
9,Python的变量名以下划线或字母开头,后面可以接任意数目的字母、数字或下划线。变量名区分大小写。
10,由于import语句中的模块变量名会变成脚本中的变量,所以虽然你可以写and.py和my-code.py这类文件,但你无法将其导入。因为and是Python保留字,而my-code中含有Python变量不允许的符号。
11,Python变量命名还有一些惯例,这些并非必要的规则,但一般在实际中都会遵守。
- 以单一下划线开头的变量名(_X)不会被 from module import * 语句导入
- 前后各有两个下划线的变量名(__X__)是系统定义的变量名,对解释器有特殊的意义
- 以两个下划线开头、但结尾没有连个下划线的变量名(__X)是类的本地(“压缩”)变量
- 通过交互模式运行时,只有单个下划线的变量名(_)会保存最后表达式的结果
12,Python允许吧大小比较测试串在一起。例如(A < B <C) 相当于 (A < B and B < C)
13,Python不允许把赋值语句(=)嵌入到其它表达式中,这样做的理由是为了避免常见的编码错误。例如用“==”做相等测试时,不会打成"="而意外修改变量的值。
14,下面两个打印程序等价:
X = 3.14
print X
等价于
import sys
X = 3.14
sys.stdout.write(str(X) + '\n')
15,标准输出流可以重定向。例如:
import sys
sys.stdout = open('log.txt', 'w')
a,b,c = 1,2,3
print a,b,c
在上面这段程序中,print语句会调用sys.stdout的write方法。
16,print可以通过>>重定向到文件流,这种重定向只是暂时的。例如:
a,b,c = 1,2,3
x,y,z = 8,9,10
log = open('log.txt','w')
print >> log, a,b,c
print x,y,z