设为首页 收藏本站
查看: 532|回复: 0

[经验分享] python2.x学习笔记(4)-Python对象

[复制链接]

尚未签到

发表于 2017-4-28 09:25:16 | 显示全部楼层 |阅读模式
1. 所有的 Python 对像都拥有三个特性:身份,类型和值。
  身份:
  每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数 id()来得到。
这个值可以被认为是该对象的内存地址。
  类型
对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。您可以用内建函数 type()查看 Python 对象的类型。因为在 Python 中类型也是对象
(还记得我们提到 Python 是面向对象的这句话吗?),所以 type()返回的是对象而不是简单的
字符串。
  值
对象表示的数据项

2. 标准类型
数字(分为几个子类型,其中有三个是整型)
整型
布尔型
长整型
浮点型
复数型
字符串
列表
元组
字典

3. 其他内建类型
类型
Null 对象 (None)
文件
集合/固定集合
函数/方法
模块


4. 类型对象和 type 类型对象
  Python 有一个特殊的类型,被称作 Null 对象或者 NoneType,它只有一个值,那就是 None。它不支持任何运算也没有任何内建方法。None 没有什么有用的属性,它的布尔值总是 False。

5. 布尔值
   所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布
尔 True 或 False 值。空对象、值为零的任何数字或者 Null 对象 None 的布尔值都是 False。
   下列对象的布尔值是 False。
      None
      False (布尔类型)
      所有的值为零的数:
      0 (整型)
      (浮点型)
      0L (长整型)
      0.0+0.0j (复数)
      "" (空字符串)
      [] (空列表)
      () (空元组)
      {} (空字典)

6. 内部类型
       代码
       帧
       跟踪记录
       切片
       省略
       Xrange
  
7. Python 提供了 is 和 is not运算符来测试两个变量是否指向同一个对象。象下面这样执行一个测试
  a is b
   这个表达式等价于下面的表达式
  id(a) == id(b)

8.整数对象和字符串对象是不可变对象,所以 Python 会很高效的缓存它们。这会造成我们认为 Python 应该创建新对象时,它却没有创建新对象的假象。看下面的例子:
  >>> a = 1
  >>> id(a)
  8402824
  >>> b = 1
  >>> id(b)
  8402824
  >>>
  >>> c = 1.0
  >>> id(c)
  8651220
  >>> d = 1.0
  >>> id(d)
  8651204

9. 标准类型内建函数
函数               功能
cmp(obj1, obj2)  比较 obj1 和 obj2, 根据比较结果返回整数 i:
                  i < 0 if obj1 < obj2
                 i > 0 if obj1 > obj2
                 i == 0 if obj1 == obj2
repr(obj) 或 `obj` 返回一个对象的字符串表示
str(obj)         返回对象适合可读性好的字符串表示
type(obj)       得到一个对象的类型,并返回相应的 type 对象

10. str()函数得到的字符串可读性好, 而 repr()函数得到的字符串通常可以用来重新获得该对象, 通常情况下 obj == eval(repr(obj)) 这个等式是成立的.

11. 类型工厂函数
下面这些大家熟悉的工厂函数在老的 Python 版里被称为内建函数:
  int(), long(), float(), complex()
  str(), unicode(), basestring()
  list(), tuple()
  type()
  以前没有工厂函数的其他类型,现在也都有了工厂函数。除此之外,那些支持新风格的类
的全新的数据类型,也添加了相应的工厂函数。下面列出了这些工厂函数:
         dict()
         bool()
         set(), frozenset()
         object()
         classmethod()
         staticmethod()
         super()
         property()
         file()

12. 如果让我们最啰嗦的描述标准类型,我们也许会称它们是 Python 的“基本内建数据对象原始类型”。
“基本”,是指这些类型都是 Python 提供的标准或核心类型。
“内建”,是由于这些类型是 Python 默认就提供的
“数据”,因为他们用于一般数据存储
“对象”,因为对象是数据和功能的默认抽象
“原始”,因为这些类型提供的是最底层的粒度数据存储
“类型”,因为他们就是数据类型

13. 存储模型
分类            Python 类型
标量/原子类型    数值(所有的数值类型),字符串(全部是文字)
容器类型        列表、元组、字典

14.更新模型
分类         Python 类型
可变类型      列表, 字典
不可变类型    数字、字符串、元组

15.以访问模型为标准的类型分类
访问模型
分类             Python 类型
直接访问              数字
顺序访问            字符串、列表、元组
映射访问            字典

16. 标准类型分类
数据类型  存储模型   更新模型   访问模型
数字      Scalar   不可更改   直接访问                       
字符串    Scalar   不可更改   顺序访问
列表    Container   可更改   顺序访问      
元组    Container   不可更改  顺序访问      
字典   Container    可更改   映射访问

17. Python不支持的类型
    (1).Python 没有 char 或 byte 类型来保存单一字符或 8 比特整数。你可以使用长度为 1 的字符串表示字符或 8 比特整数。
    (2).Python 替你管理内存,因此没有必要访问指针。在 Python 中你可以使用 id()函数得到一个对象的身份号, 这是最接近于指针的地址。 因为你不能控制这个值,所以其实没有太大意义。其实在 Python 中, 一切都是指针。
    (3).Python 的普通整数相当于标准整数类型,不需要类似 C 语言中的 int, short, long 这三种整数类型。
    (4).Python 的浮点类型实际上是 C 语言的双精度浮点类型。Python 认为同时支持两种浮点类型的好处与支持两种浮点类型带来的开销不成比例,所以 Python 决定不支持单精度浮点数。对那些宁愿放弃更大的取值范围而需要更高精确度的用户来说, Python 还有一种十进制浮点数类型 Decimal, 不过你必须导入 decimal 模块才可以使用它。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370213-1-1.html 上篇帖子: python中的转义符怎么实现 下篇帖子: 使用 VIM 作为 Python 的 IDE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表