您的位置:首页 > 编程语言 > Python开发

人生苦短,我用Python 学习笔记——第三天

2015-04-03 13:36 330 查看
1 切片对象

它的语法为

sequence[起始索引 : 结束索引 : 步进值]

起始索引 省略就是0

结束索引 省略为末尾

步进值 省略为1

>>> mystr="123456"

>>> mystr[0:1]

'1'

>>> mystr[:1]

'1'

>>> mystr[0:]

'123456'

>>> mystr[::]

'123456'

>>> mystr[::-1]

'654321'

>>>

2 XRange 对象

调用内建函数 xrange() 会生成一个Xrange对象,xrange()是内建函数range()的兄弟版本,用于需要节省内存使用或range()无法完成的超大数据集场合

3 标准类型内建函数

函数 功能

cmp(obj1, obj2) 比较 obj1 和 obj2, 根据比较结果返回整数 i:

i < 0 if obj1 < obj2

i > 0 if obj1 > obj2

i == 0 if obj1 == obj2

repr(obj) 或 `obj` 返回一个对象的字符串表示

尽管str(),repr()和``运算在特性和功能方面都非常相似, 事实上 repr() 和 ``做的是完全一样的事情,它们返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下可以通过求值运算(使用eval()内建函数)重新得到该对象,但str()则有所不同。str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值, 但很适合用于 print 语句输出。也就是说 repr() 输出对 Python 比较友好,而str()的输出对人比较友好。虽然如此,

很多情况下这三者的输出仍然都是完全一样的。

译者注:事实上Python社区目前已经不鼓励继续使用``运算符。

str(obj) 返回对象适合可读性好的字符串表示

type(obj) 得到一个对象的类型,并返回相应的type 对象

4 类型工厂函数

Python 2.2 统一了类型和类, 所有的内建类型现在也都是类, 在这基础之上, 原来的

所谓内建转换函数象int(), type(), list() 等等, 现在都成了工厂函数。 也就是说虽然他

们看上去有点象函数, 实质上他们是类。当你调用它们时, 实际上是生成了该类型的一个实

例, 就象工厂生产货物一样。

下面这些大家熟悉的工厂函数在老的Python 版里被称为内建函数:

?? int(), long(), float(), complex()

?? str(), unicode(), basestring()

?? list(), tuple()

?? type()

5 数字对象重点的思想问题,变量不是原来的变量而是一个对象,

创建数值对象和给变量赋值一样同样简单:

anInt = 1

aLong = -9999999999999999L

aFloat = 3.1415926535897932384626433832795

如何更新数字对象

通过给数字对象(重新)赋值, 您可以“更新”一个数值对象。我们之所以给更新这两个

字加上引号, 是因为实际上你并没有更新该对象的原始数值。这是因为数值对象是不可改变对

象。Python 的对象模型与常规对象模型有些不同。你所认为的更新实际上是生成了一个新的数

值对象,并得到它的引用。

在学习编程的过程中, 我们一直接受这样的教育, 变量就像一个盒子, 里面装着变量的

值。在Python 中, 变量更像一个指针指向装变量值的盒子。 对不可改变类型来说, 你无法

改变盒子的内容, 但你可以将指针指向一个新盒子。每次将另外的数字赋给变量的时候,实际

上创建了一个新的对象并把它赋给变量.(不仅仅是数字,对于所有的不可变类型,都是这么回

事)

如何删除数字对象

按照Python 的法则, 你无法真正删除一个数值对象, 你仅仅是不再使用它而已。如果你

实际上想删除一个数值对象的引用, 使用 del 语句(参见3.5.6 小节)。 删除对象的引用之

后, 你就不能再使用这个引用(变量名), 除非你给它赋一个新值。如果试图使用一个已经被

删除的对象引用, 会引发NameError 异常。

del anInt

del aLong, aFloat, aComplex

6核心风格:用大写字母 “L”表示长整数

尽管 Python 也支持用小写字母 L 标记的长整型,但是我们郑重推荐您仅使用大写的 “L”,这样能有效避免数字1 和小写L 的混淆。Python 在显示长整数类型数值的时候总是用大写“L ”,目前整型和长整型正在逐渐缓慢的统一,您只有在对长整数调用repr()函数时才有机会看到“L”,如果对长整数对象调用str()函数就看不到 L 。举例如下:

>>> aLong = 999999999l

>>> aLong

999999999L

>>> print aLong

999999999

重点:print 输出的变量已经把变量变成了字符型,我认为是

7

expr1 / expr2 表达式1 除以表达式2(传统除或真正除)

expr1 // expr2 表达式1 地板除以表达式2 地板除直接取整

expr1 % expr2 表达式1 对表达式2 取余

8

Python 有五个运算内建函数用于数值运算: abs(), coerce(), divmod(), pow(),和 round()。我们将对这些函数逐一浏览,并给出一些有用的例子:

divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组。对整数来说, 它的返回值就是地板除和取余操作的结果

>>> divmod(10,3)

(3, 1)

函数 pow() 和双星号 (**) 运算符都可以进行指数运算。不过二者的区别并不仅仅在于

一个是运算符,一个是内建函数。

在Python 1.5 之前,并没有 ** 运算符。内建函数pow()还接受第三个可选的参数,一个余数参数。如果有这个参数的, pow() 先进行指数运算,然后将运算结果和第三个参数进行取

余运算。这个特性主要用于密码运算,并且比 pow(x,y) % z 性能更好, 这是因为这个函数的实现类似于C 函数 pow(x,y,z)。

内建函数round()用于对浮点数进行四舍五入运算。它有一个可选的小数位数参数

>>> round(3)

3.0

>>> round(3.45)

3.0

>>> round(3.4999999)

3.0

>>> round(3.4999999, 1)

3.5

值得注意的是 round() 函数是按四舍五入的规则进行取整。也就是round(0.5)得到1,

round(-0.5)得到-1。猛一看 int(), round(), math.floor() 这几个函数好像做的是同一件

事, 很容易将它们弄混,是不是?下面列出它们之间的不同之处:

函数 int()直接截去小数部分。(返回值为整数)

函数 floor()得到最接近原数但小于原数的整数。(返回值为浮点数)

函数 round()得到最接近原数的整数。(返回值为浮点数)

的例子用四个正数和四个负数作为这三个函数的参数,将返回结果列在一起做个比较。

(为了便于比较,我们将int()函数的返回值也转换成了浮点数)。

仅用于整数的函数

除了适应于所有数值类型的内建函数之外,Python 还提供一些仅适用于整数的内建函数(标

准整数和长整数)。这些函数分为两类,一类用于进制转换,另一类用于ASCII 转换

Python 还提供了两个内建函数来返回字符串表示的8 进制和16 进制整数。它们分别是 oct()和 hex()

>>> hex(255)

'0xff'

Edit By Vheavens

>>> hex(23094823l)

'0x1606627L'

>>> hex(65535*2)

'0x1fffe'

>>>

>>> oct(255)

'0377'

>>> oct(23094823l)

'0130063047L'

>>> oct(65535*2)

'0377776'

ASCII 转换函数

函数chr()接受一个单字节整数值,返回一个字符串,

其值为对应的字符。函数ord()则相反,它接受一个字符,返回其对应的整数值

hex(num) 将数字转换成十六进制数并以字符串形式返回

oct(num) 将数字转换成八进制数并以字符串形式返回

chr(num) 将ASCII值的数字转换成ASCII字符,范围只能是0 <= num <= 255。

ord(chr) 接受一个 ASCII 或 Unicode 字符(长度为1的字符串),返回相应的ASCII或Unicode 值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: