Python学习笔记 - 1

《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 查看,具体用法查 文档 ,其他没有了......




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值