核心编程第四章python内建函数
>>> 2 == 2 True >>> 2.47 <= 5.66 True >>> 5+4j >= 2-3j Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: no ordering relation is defined for complex numbers >>> 'abc' == 'xyz' False >>> 'abc' < 'xyz' True >>> 'abc' > 'xyz' False >>> [3, 'abc'] == ['abc', 3] False >>> [3, 'abc'] == [3, 'abc'] True >>> 3 < 4 < 7 True >>> 4 > 3 == 3 True >>> 4 < 3 < 5 != 2 < 7 False >>>
python使用is和is not来测试两个变量是否属于同一个对象。
a is b 等价于 id(a) == id(b)
>>> 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
>>> id(b) 31658160 >>> >>> id(b) 31658160 >>> id(b) 31658160 >>> id(b) 31658160 >>> b = 3 >>> id(b) 31658136 >>> id(b) 31658136 >>> id(b) 31658136 >>> id(b) 31658136 >>> c = 3 >>> id(c) 31658136 >>> id(c) 31658136
a与b的值都是1,由于被缓存,所以a,b指向同一整形对象。只有小整数才会被缓存。
>>> a, b = -4, 12 >>> cmp(a,b) -1 >>> cmp(b,a) 1 >>> b = -4 >>> cmp(b,a) 0 >>> a, b = 'abc', 'xyz' >>> cmp(a,b) -1 >>> cmp(b,a) 1 >>> b = 'abc' >>> cmp(b,a) 0 >>> str(4.53-2j) '(4.53-2j)' >>> str(1) '1' >>> str(2e10) '20000000000.0' >>> str([0,5,9,9]) '[0, 5, 9, 9]' >>> repr([0,5,9,9]) '[0, 5, 9, 9]' >>> `[0,5,9,9]` '[0, 5, 9, 9]' >>>
repr()和··相同的功能,返回一个给机器看的官方对象的字符串表示,绝大多数情况下可以通过求值运算(使用内建函数eval()重新得到该对象)。str函数获得的字符串无法通过eval重新得到,但是很适合print输出。注意不是所有repr返回的字符串都可以用eval内建函数获得原来的对象。
python2.2之后原来的内建转换函数int() type() list()现在都成了工厂函数。
int(),long(),float(),complex(),
str(),unicode(),basestring(),
list(),tuple(),
type()
dict()
bool()
set(), frozenset()
object()
classmethod()
staticmthod()
super()
property()
file()
按存储模型分为 标量原子类型 比如数值,字符串
容器类型 比如列表,元组,字典
按更新模型分为可变类型和不可变类型
可变类型有列表和字典
不可变类型有数字、字符串、元组
>>> x = 'python strings' >>> id(x) 1993040024 >>> x = 'immutable?' >>> id(x) 1993027264 >>>
新创建的对象被关联到原来的变量名,旧对象被抛弃
>>> list= ['ammnica',83,85,'lady']
>>> list
['ammnica', 83, 85, 'lady']
>>> list[2]
85
>>> id(list)
1993001440
>>> list[2] = list[2] + 1
>>> list[3] = 'ss'
>>> list
['ammnica', 83, 86, 'ss']
>>> id(list)
1993001440
>>> list.append('xx')
>>> list
['ammnica', 83, 86, 'ss', 'xx']
>>>
数字是标量,不可更改,可直接访问
字符串是标量,不可更改,顺序访问
列表是容器,可更改,顺序访问
元组是容器,不可更改,顺序访问
字典是容器,可更改,映射访问
总结:
python对象的三个属性是 身份 类型 值 身份通过id() 类型通过type() 获得
不可更改指的是原对象不可以被更改,可以让变量指向另一个对象,原对象被释放。
可更改就是可以在原来对象所占内存的基础上更改,改后对象还是原来的对象(占用同一块内存)。
顺序类型是可以顺序访问元素,映射必须通过键来获取值。
str将对象按print的格式显示出来给人看,repr将对象按机器想要的给是显示出来。repr等价``
type(a)==type(b)是按value来判断,type(a) is type(b)是按id来判断,即判断是否指向同一个对象,是否占用同一块内存。
列表中的项目应该包括在方括号[]中,
你可以添加、删除或是搜索列表中的项目。
由于你可以增加或删除项目,所以列表是可变的数据类型,
即这种类型是可以被改变的。
元组和列表十分类似,但是元组是不可变的.
也就是说你不能修改元组。
元组通过()中用逗号分割的项目定义。
元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,
即被使用的元组的值不会改变。
列表和元组都可以通过切片操作。
记住python的缓存小整数特性。
浙公网安备 33010602011771号