Python学习之路8——Python对象2

1.标准类型操作符

1.1对象值的比较

比较操作符用来同类型对象是否相等,所有的内内建类型均支持比较运算,比较运算返回返回布尔值True 或 False。

<span style="font-size:14px;">>>> 2 == 2
True
>>> 2.33 < 2.44
True
>>> 'abc' == 'xyz'
False
>>> 'abc' < 'xyz'
True
>>> [3, 'abc'] == [3, 'abc']
True
>>> [3, 'abc'] == ['abc', 3]
False
>>> 3 < 4 < 7       #same as (3 < 4) and (4 < 7)
True
>>> 4 > 3 == 3      #same as (4 > 3) and (3 == 3)
True</span>

python比较操作符:<    >    <=    >=   ==    !=    <>.(<> 相等于!=, 未来可能不支持)


1.2对象身份比较

Python不只支持对象值比较,也支持对象本身的比较。

                                                  标准类型对象身份比较操作符

操作符 功能
obj1 is obj2 obj1 和obj2 是同一个对象
obj1 is not obj2 obj1 和obj2不 是同一个对

<span style="font-size:14px;">>>> a = [5, 'hat', -9.3]
>>> b = a
>>> a is b
True
>>> a is not b
False
>>> b = 2.5e-5
>>> b
2.5e-05
>>> a
[5, 'hat', -9.3]
>>> a is b
False
>>> a is not b
True</span>
看下面的例子,那么问题来了
>>> a = 1
>>> b = 1
>>> a is b
True
>>> x = 1.2
>>> y = 1.2
>>> x is y
False
>>> 
为什么a和b指向同一个对象?大家都知道,在变量赋值时,Python解释器会创建一个新对象,然后将其对象的引用赋给变量。既然如此,那a,b应该指向不同的对象。请大家继续看x和y,x和y确实是指向不同的对象,这又符合我们的预期结果。why?技术分享

原来,整型对象和字符串是不可变对象,所有Python会很高效的缓存它们,这会造成我们认为Python应该创建新对象时,它却没有创建新对象的假象。Python仅缓存简单整数,Python缓存的整数的范围会变化,所以不要使用这个特性。(我也不知道怎么使用技术分享

1.3布尔类型

布尔类型操作符有and,or 和 not三种,相当于c中的&&, ||,和!。其中not的优先级最高,其次是and和or。

2 标准类型内建函数

Python提供了一些内建函数用于这些基本对象类型:cmp(), repr(), str(), type()。

type():

用法:type(object)

type()接受一个对象作为参数,并返回它的类型。它的返回值是一个类型对象。

>>> type('helloWorld')
<type 'str'>
>>> type(2.0)
<type 'float'>
>>> type(type(4))
<type 'type'>
>>> 

cmp():

用法:cmp(obj1,obj2),如果obj1 小于obj2,它会返回一个负整数,如果obj1 大于 obj2,则返回一个正整数,如果相等则返回0

>>> a, b = 4, -12
>>> cmp(a, b)
1
>>> cmp(b,a)
-1
>>> b = -4
>>> cmp(a,b)
1
>>> a, b = 'abc', 'xyz'
>>> cmp(a, b)
-1
>>> cmp(b, a)
1
>>> b = 'abc'
>>> cmp(a, b)
0
>>> 


str() 和repr()

str()和repr()函数可以方便的以字符串的方式获取对象的内容,类型,数值属性等信息,str()函数得到的字符串可读性好,而repr()函数得到的字符串通常可以重新获得该对象,通常情况下obj = eval(repr(obj))是成立的。多数情况下,这两个函数的输出仍然是一样的。

<span style="font-size:14px;">>>> str(1)
'1'
>>> str(2e10)
'20000000000.0'
>>> repr(2e10)
'20000000000.0'
>>> str([0, 5, 5, 9])
'[0, 5, 5, 9]'
>>> repr([0, 5, 5, 9])
'[0, 5, 5, 9]'</span>





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。