python补充(2) - 内置函数
1,cmp函数比较两个对象,如果小于返回负整数,大于的话返回正整数,相等返回0.
>>> a,b = 1,-1
>>> cmp(a,b)
1
>>> cmp(b,a)
-1
>>> a=-1
>>> cmp(a,b)
0
>>> cmp(a,b)
1
>>> cmp(b,a)
-1
>>> a=-1
>>> cmp(a,b)
0
如果比较的是自定义对象,则会调用自定义对象的__cmp__函数。在__cmp__内容可以定义对象的比较方式
2.str(),repr(),''
>>> str([1,2,3])
'[1, 2, 3]'
>>> repr([1,2,3])
'[1, 2, 3]'
>>> '[1,2,3]'
'[1,2,3]'
>>> eval(repr([1,2,3]))
[1, 2, 3]
>>> eval('[1,2,3]')
[1, 2, 3]
>>>
'[1, 2, 3]'
>>> repr([1,2,3])
'[1, 2, 3]'
>>> '[1,2,3]'
'[1,2,3]'
>>> eval(repr([1,2,3]))
[1, 2, 3]
>>> eval('[1,2,3]')
[1, 2, 3]
>>>
三种用法的作用基本相同,都是返回对象的字符串表示。
str用来将生成对象的字符串形式,repr和‘'作用可以说是相同的,也是返回对象的字符串表示,但是,这两种用法返回的字符串可以通过eval()函数得到原本的对象。但是str()则不行。
记住,并不是所有返回的字符串都可以通过eval()还原对象。如eval('type(type)')则会抛出异常。
3.浅拷贝和深拷贝
>>> list1 = ['a']
>>> list2 = list1
>>> id(list1)
13437528
>>> id(list2)
13437528
>>> import copy
>>> list3 = copy.deepcopy(list1)
>>> id(list3)
11330304
>>>
>>> list2 = list1
>>> id(list1)
13437528
>>> id(list2)
13437528
>>> import copy
>>> list3 = copy.deepcopy(list1)
>>> id(list3)
11330304
>>>
list3就是list1的深拷贝了,从id可以看出来