Python核心编程第四章笔记

所有的Python对像都拥有三个特性:身份,类型和值


身份:

每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。

类型:

对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,可以用内建函数type()查看Python对象的类型。

值:

对象表示的数据项


标准类型

数字(分为几个子类型,其中有三个是整型)

整型

布尔型

长整型

浮点型

复数型

字符串

列表

元组

字典

其他内建类型

类型

Null对象(None)

文件

集合/固定集合

函数/方法

模块


>>>type(type(42))

<type'type'>


下列对象的布尔值是False

None

False(布尔类型)

所有的值为零的数:

0(整型)

(浮点型)

0L(长整型)

0.0+0.0j(复数)

""(空字符串)

[](空列表)

()(空元组)

{}(空字典)



>>>foostr = 'abcde'

>>>foostr[::-1]

'edcba'

>>>foostr[::-2]

'eca'

>>>foolist = [123, 'xba', 342.23, 'abc']

>>>foolist[::-1]

['abc',342.23, 'xba', 123]


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


3:foo1 foo2指向不同的对象

foo1= 4.3

foo2= 1.3 + 3.0

两个不同的对象,尽管这两个对象有同样大小的数值。

Python提供了isisnot

运算符来测试两个变量是否指向同一个对象。象下面这样执行一个测试

ais b这个表达式等价于下面的表达式id(a)== id(b)


Python仅缓存简单整数,因为它认为在Python应用程序中这些小整数会经常被用到。


str()repr()(``运算符)

内建函数str()repr()或反引号运算符(``)可以方便的以字符串的方式获取对象的

内容、类型、数值属性等信息。str()函数得到的字符串可读性好,repr()函数得到的字符

串通常可以用来重新获得该对象,通常情况下obj== eval(repr(obj)) 这个等式是成立的。

这两个函数接受一个对象做为其参数,返回适当的字符串。



str(),repr()``运算在特性和功能方面都非常相似,事实上repr()``做的

是完全一样的事情,它们返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下

可以通过求值运算(使用eval()内建函数)重新得到该对象,str()则有所不同。str()致力

于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值,但很适

合用于print语句输出。需要再次提醒一下的是,并不是所有repr()返回的字符串都能够用

eval()内建函数得到原来的对象:

>>>eval(`type(type))`)

File"<stdin>", line 1

eval(`type(type))`)

^

SyntaxError:invalid syntax

repr()输出对Python比较友好,str()的输出对人比较友好。很多情况下这三者的输出仍然都是完全一样的。


表达式:

iftype(num) == type(0)...

减少函数调用的次数

如果我们仔细研究一下我们的代码,会看到我们调用了两次type()。要知道每次调用函数

都会付出性能代价,如果我们能减少函数的调用次数,就会提高程序的性能。

利用在本章我们前面提到的types模块,我们还有另一种比较对象类型的方法,那就是

将检测得到的类型与一个已知类型进行比较。如果这样,我们就可以直接使用type对象而不

用每次计算出这个对象来。那么我们现在修改一下代码,改为只调用一次type()函数:

>>>import types

>>>if type(num) == types.IntType...

减少查询次数

这是一个对前一个例子较小的改进,如果你的程序像我们的例子中做很多次比较的话,序的性能就会有一些差异。为了得到整数的对象类型,解释器不得不首先查找types这个模块的名字,然后在该模块的字典中查找IntType。通过使用from-import,你可以减少一次查询:

fromtypes import IntType

iftype(num) is IntType...


ifisinstance(num, int)...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值