标准类型运算符和内建函数

1.标准类型运算符:

   (1)对象值的比较

   (2)对象身份的比较:

           例1.如:foo1 = foo2 = 4.3    表示foo1和foo2指向相同的对象.(这条语句等同于 foo1 = 4.3   foo2 = foo1)  因为python是通过传递引用来处理对象的.

           例2.foo1 = 4.3              第一个数值对象被创建,然后赋值给foo1,

                   foo2 = 1 + 3.3       第二个对象被创建,并赋值给foo2.

                   尽管两个对象保存的是同样大小的值,但是系统保存的是两个独立的对象,foo1引用对象1,而foo2 是对另一个对象的引用.

注:每个对象都天生具有一个计数器,记录它自己的引用次数。这个数目表示有多少个变量指向该对象。可以用 is和 is not运算符来判断两个变量是否指向同一个对象.

     a is b 等价于id(a) == id (b)      ------------a,b是同一个对象.

    (3).Python会缓存整数对象:(-1,100)这个范围可能改变.

         >>> a = 1
         >>> id(a)
        144207208
        >>> b = 1
        >>> id(b)
        144207208                                        可以看出1被缓存了,地址不变

         >>> c = 1.0
         >>> id(c)
         144243140
         >>> d = 1.0
         >>> id(d)
         144243124                                      1.0没有被缓存.
2.内建函数:

(1)type() 接受一个对象做为参数,并返回它的类型---------type()返回任意Python对象的类型,而不局限于标准类型.

(2)cmp()用于比较两个对象obj1 和obj2, 如果obj1 小于obj2, 则返回一个负整数,如果obj1 大于obj2 则返回一个正整数, 如果obj1 等于obj2, 则返回0。

(3)内建函数 str() 和 repr() 或反引号运算符(``) 可以方便的以字符串的方式获取对象的内容、类型、数值属性等信息。

     通常情况下:obj = eval(repr(obj))

(4)isinstance()用法例子:

#!/usr/bin/env python

def displayNumType(num):
    print num, 'is',
    if isinstance(num, (int, long, float, complex)):
        print 'a number of type:', type(num).__name__
    else:
        print 'not a number at all!!'

displayNumType(-69)
displayNumType(9999999999999999999L)
displayNumType(98.6)
displayNumType(-5.2+1.9j)
displayNumType('xxx')

3.统一了类型和类, 所有的内建类型现在也都是类, 在这基础之上, 原来的所谓内建转换函数象int(), type(), list() 等等, 现在都成了工厂函数。 也就是说虽然他们看上去有点象函数, 实质上他们是类。当你调用它们时, 实际上是生成了该类型的一个实例, 就象工厂生产货物一样。

int(), long(), float(), complex()
str(), unicode(), basestring()
list(), tuple()
type()                                                                它们都是工厂函数.

4.存储模型

一个能保存单个字面对象的类型我们称它为原子或标量存储,那些可容纳多个对象的类型,我们称之为容器存储

分类Python类型
标量/原子类型数值(所有的数值类型),字符串(全部是文字)
容器类型列表[ ]、元组( )、字典{ }
注:字符串看上去像一个容器类型,因为它“包含”字符(并且经常多于一个字符),不过由于Python 并没有字符类型,所以字符串是一个自我包含的文字类型。

5.更新模型

分类Python类型
可变类型列表[ ],字典{ }
不可变类型数字、字符串、元组()
:字符串和数字对象是不可改变的?

x = 'Python numbers and strings'
x = 'are immutable?!? What gives?'

事实上是一个新对象被创建,然后取代了旧对象,新创建的对象被关联到原来的变量名.旧对象被丢弃,垃圾回收器会在合時的时机回收这些对象.

>>> x = 'shangmengde'
>>> print id(x)
3077554072
>>> x = 'gehanbing'
>>> print id(x)
147062816                                           从中可以看出它们的id是不一样的.

6.访问模型:跟据访问我们存储的数据的方式对数据进行分类.

分类Python类型
直接访问数字
顺序访问字符串,列表[ ],元组( )
映射访问字典{ }
顺序访问:序列类型是指容器内的元素按从0 开始的索引顺序访问

映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素无序存放, 通过一个唯一的key 来访问, 这就是映射类型, 它容纳的是哈希键-值对的集合。

注:list()将一个对象转换成列表.tuple()将一个对象转换成元组.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值