《Python学习手册-第四版》
一、下面这张图忘了从哪里找到的,不过挺不错。
二、版本问题
Python 2.7 和 3.3 是差别很大的两个版本,二者有很多不兼容的语法、函数。
三、相关资料
Desktop UI : wxPython PyQt PySide
Web Framework : DJango TurboGears Pylons
Data : ZODB SQLObject SQLite
四、执行机制
源代码(.py) ------- 解释器 ------> 字节码(.pyc)------ PVM------>执行码
1、PyPy :将一部分代码直接编译成执行码,跳过了解释和PVM。这样程序启动的时候会很慢,但是启动完成后会很快。需要仔细的选择需要优化的代码。
2、Shedsin C++ : 将Python代码转换成 C++代码,并用 C++ 编译器直接编码成机器码!
五、IDE :
1、 Eclipse + PyDev :用来写后台逻辑
2、PyQt/PySide + Erirc : 用来做UI
3、VIM : 不会用...
六、表达式操作符
1、原书 P154
操作符 | 描述 |
yield x | 生成器函数发送协议 |
lambda args : expression | 生成匿名函数 |
x if y else z | 三元选择表达式 |
x or y | 逻辑或 |
x and y | 逻辑与 |
not x | 逻辑非 |
x in y , x not in y | 成员关系(可迭代对象、集合) |
x is y , x is not y | 对象实体测试 |
x<y , x<=y , x>y , x>=y , x == y , x != y | 大小比较,集合子集和超集值相等性操作符 |
x | y | 位或,集合并集 |
x ^ y | 位异或,集合对称差 |
x & y | 位与,集合交集 |
x << y , x >> y | 左移或右移 y 位 |
x + y , x - y | 加法/合并,减法/集合差集 |
x * y , x % y , x / y , x // y | 乘法/重复,余数/格式化,除法,真除法或Floor除法 |
-x , +x | 一元减法、识别 |
~x | 按位求补(取反) |
x ** y | 幂运算 |
x [ i ] | 索引(序列、映射及其他)点号取属性运算,函数调用 |
x [ i : j : k ] | 分片 |
x ( . . . ) | 调用(函数、方法、类及其他可调用的) |
x.attr | 属性引用 |
( . . .) | 元祖,表达式,生成器表达式 |
[ . . . ] | 列表,列表解析 |
{ . . . } | 字典、集合、集合字典解析 |
七、动态类型
1、变量 -- 引用 -- 对象(包含类型描述) 所以,申明变量,实际上是将变量名称指向到一个内存中值的对象,变量的类型就是值的类型(动态类型? : p)。
2、垃圾回收:计数器回收。
3、浅层复制和深层复制:和C#没什么区别
4、 == 操作符 :测试两个被引用的对象是否具有相同的值; is操作符:检测对象的同一性(是否共享一个值对象);
5、Python中三个主要类型
1) 数字:(整数、浮点数、二进制、分数等) 支持加减乘除等。
2)序列:(字符串、列表、元祖) 支持 索引、分片、合并等。
3)映射:(字典) 支持通过键的索引等。
怪胎:集合
1)不可变类型:(数字、字符串、元祖、不可变集合)
2)可变类型:(列表、字典、可变集合)
八、类型 -- 数字
1、 Int 类型无穷大
2、 x / y 传统除法 == (c# 的除法) x // y Floor除法,保留整数
3、公共模块: math , random , decimal , cmath(复数版的标准数学模块)
4、小数上下文管理:用上下文管理器语句重新设置临时精度。在语句退出后,精度重新设置为初始值
import decimal
with decimal.localcontext() as ctx:
ctx.prec = 2
decimal.Decimal('1.00')/decimal.Decimal('3.00')
5、分数:一种有趣的类型。在计算时可以提供更直观的公式表达和更好的精度。
from fractions import Fraction
x = Fraction(1,3)
y = Fraction(4,6)
九、类型 -- 字符串
1、单引号和双引号的用法与C#不同,它们是一样的......;
2、转义:“s\tp\na\0m”
3、Row字符串: r"c:\windows\system32" 可以抑制 转义 ,比如 \w (类似于 C# 中的 @“c:\windows\system32”)
4、三引号编写多行字符串
十、类型 -- 列表
1、一个超级灵活的数组,元素可以是任意类型,长度可变。矩阵、结构化数组,随便怎么用。
十一、类型 -- 字典
1、键值对组成的数组......
十二、类型 -- 元祖
1、不能修改的列表
十三、类型 -- 集合 (set)
1、 集合是唯一的、不可变的对象的一个无序集合(collection)
2、支持迭代,不支持索引和分片(无序)
3、元祖可以作为元素嵌入集合,其它集合类型无法嵌入
4、add:插入 update:按位置求并集 remove:根据值删除一个项目
5、集合解析:
>>>{x ** 2 for x in [1,2,3,4]}
{16,1,4,9}
6、转换: collection - set
collection 可重复,set 不可重复,这个转换过程从 L 中取了唯一值
>>> L = [1,2,1,3,2,4,5]
>>> set(L)
{1,2,3,4,5}
十四、文件
因为文件的操作比较重要,先跳过,回头单独学习。
1、Python中的类型与其它程序的类型都是相似的,但是要留意一些不同的特点,以 ”七、动态类型“ 中的类型分类为基础,多试一些类型间的转换,掌握起来应当不难。
2、动态类型的好处是灵活,但是类型上未必安全。还要多做点测试。
3、每种类型的内置方法可以用 Dir 和 Help 查看,具体用法查 文档 ,其他没有了......