1、Python对象

Python使用对象模型来存储数据,构造任何类型的值都是一个对象。所有的对象都有三个特性:

  • 身份,可通过内建函数id()查看,这个值即该对象的内存地址。
  • 类型,可通过内建函数type()查看。
  • 值,对象表示的数据项。
<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>p = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">12</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>id(p)
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">31108092</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>type(p)
<type <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'int'</span>>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>p
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">12</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

2、标准类型

整型Integer,长整型Long integer,浮点型float,复数型complex number,布尔型bool,字符串string,列表list,元组tuple,字典dictionary。

3、其他内建类型

  • type类型对象

    type类型本身就是一个对象,它的类型为‘type’。

<code class="hljs haskell has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;">>>> <span class="hljs-typedef" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span><span class="hljs-container" style="box-sizing: border-box;">(1)</span></span>
<<span class="hljs-typedef" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span> 'int'></span>
>>> <span class="hljs-typedef" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span><span class="hljs-container" style="box-sizing: border-box;">(<span class="hljs-title" style="box-sizing: border-box;">type</span>(1)</span>)</span>
<<span class="hljs-typedef" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span> '<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span>'></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
  • None——Python的Null对象

    Python有一个特殊的类型,称作Null对象或者NoneType,它只有一个值:None,None的布尔值为False。

  • 文件

  • 集合
  • 函数/方法
  • 模块

4、内部类型

内部类型我们一般不会过多关注与使用,了解一下即可。

  • 代码对象

    代码对象是编译过的Python源代码片段,可执行。可以通过内建函数compile()得到代码对象。代码对象可以被exec命令或者内建函数eval()执行。

  • 跟踪记录对象

    程序出现异常退出时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;">>>> pri<span class="hljs-constant" style="box-sizing: border-box;">Traceback</span> (most recent call last)<span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span><span class="hljs-constant" style="box-sizing: border-box;">File</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<stdin>"</span>, line <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> <<span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">module</span>></span><span class="hljs-constant" style="box-sizing: border-box;">NameError</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> name <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'pri'</span> is <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">defined</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
  • 切片对象

    当使用Python的切片语法时,就会创建切片对象。

  • 省略对象

    用于切片语法中,起记号作用。 如 str[::2]之类。

  • Xrange对象

    调用内建函数xrange()会生成一个XRange对象,xrange是range的兄弟版本,用于需要节省内存 或 range无法完成的超大数据集场合。

5、标准类型操作符

  • 对象值的比较
  • 对象身份比较

    这个涉及到Python“引用计数”的相关知识,上一篇文章中有总结。Python还提供了is和is not操作符来测试两个变量是否指向同一个对象。

<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>a = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>b =a
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>c = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>a == b
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">True</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>a <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> c
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">False</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>a <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> c
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">True</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>a <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> b
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">True</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>

我们通过id也可以直接判断它们是否指向同一对象:

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;">>>> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span>(a),<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span>(b),<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span>(c)
(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">31108224</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">31108224</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">31108212</span>)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

6、标准类型内建函数

  • cmp(obj1,obj2)

    obj1大于obj2则返回1,小于返回-1,等于返回0。

<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>a,b,c,d = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>cmp(b,a),cmp(b,c),cmp(b,d)
(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
  • type(obj)
  • str()、repr()、”操作符

    str()、repr()、”操作符都能够以字符串的方式获取对象的内容。str()获得的字符串可读性好,repr()获取的字符串通常可以用来重新获得该对象。

<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>str([<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>])
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'[1, 2, 3]'</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span>repr([<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>])
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'[1, 2, 3]'</span>
<span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">>>> </span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'[1,2,3]'</span>
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'[1,2,3]'</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>

7、类型工厂函数

Python2.2统一了类和类型。原来所谓的内建类型转换函数像int()、type()、list()等都成了工厂函数,也就是说他们看上去像函数,实质上是类,当调用它们时,实际上生成了该类型的一个实例,像工厂生成货物一样。

8、标准类型的分类

存储模型,更新模型,访问模型。

9、Python不支持的类型

  • char或byte
  • 指针
  • 整型

    Python中没有像C语言那样的int、short、long。当你使用一个整型数值超出范围时,python会自动返回一个长整型给你,python的长整型表示的数值范围很大。

  • float vs double

    Python的浮点类型float实际上是C的double。浮点型总是不精确的,故Python还提供了Decimals模块,它有任意精度,在处理金钱这类确定的值时,Decimals模块很有用。

转载于:https://www.cnblogs.com/csdndreamer/p/5490685.html

《Python核心编程》笔记 Python对象相关推荐

  1. python核心编程笔记

    python核心编程–笔记(? 解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 ...

  2. python核心编程--笔记(不定时跟新)(转)

    的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   ...

  3. python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象

    Python中一切皆对象本章节首先对比静态语言以及动态语言,然后介绍 python 中最底层也是面向对象最重要的几个概念-object.type和class之间的关系,以此来引出在python如何做到 ...

  4. [PYTHON] 核心编程笔记(18.多线程编程)

    18.1 引言/动机 18.2 线程和进程 18.2.1 什么是进程(重量级进程)? 计算机程序只不过是磁盘中可执行的,二进制(或其他类型)的数据,他们只有在被读取到内存中,被操作系统调用时才开始他们 ...

  5. [PYTHON] 核心编程笔记(14.Python执行环境)

    在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件 在特定执行场景包括: 在当前脚本继续运行 创建和管理子进程 执行 ...

  6. python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程)

    19.1 简介 19.1.1 什么是Tcl,Tk和Tkinter? 19.1.2 安装和使用Tkinter # apt-get install python-tk -y # python ------ ...

  7. 【python核心编程笔记+习题】-CH5-数字类型

    本章主题 数的简介 整型 布尔型 标准的整型 长整型 浮点型实数 复数 操作符 内建函数 其它数字类型 相关模块 Python 支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数 ...

  8. 【python核心编程笔记+习题】-CH7-映射

    本章主题 映射类型: 字典操作符 内建函数 内建方法 字典的键 集合类型 操作符 内建函数 内建方法 相关模块 一个字典对象是可变的,它是一个容器类型,能存储任意个数的 Python 对象,其中也包括 ...

  9. python核心编程笔记chapter 3

    2019独角兽企业重金招聘Python工程师标准>>> 注释#  继续\(反斜线) 同一行书写多个语句: 缩进使用4个空格宽度,避免使用制表符 多元赋值:如  x,y = 1 , & ...

  10. Python核心编程笔记---- print

    在仅用变量名时,输出的字符串是用单引号括起来的.这个是为了让非字符串对象也可能以字符的形式显示在屏幕上. 而print 函数打印出来的是变量的值. print 调用的是str()方法.而仅用变量名时调 ...

最新文章

  1. .NET Core版本七牛云SDK使用
  2. python的try和except_python的try...except
  3. 机器学习之过拟合与欠拟合以及偏差-方差分解
  4. Apache部署网页-Ubuntu16.04
  5. 【工作感悟】全网最经典26道Spring面试题总结
  6. 【翻译】使用Ext JS设计响应式应用程序
  7. 【转发】响应式Web设计?怎样进行?
  8. 说到 SASE,新的安全范式有哪些
  9. kido机器人没反应_机器人不能钩的三个英雄,章鱼妈上榜,钩中图四我方直接团灭!...
  10. 【OCR技术】字符识别技术总览
  11. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法
  12. c2000 电阻采样_常用超低阻值采样电阻阻值一览表
  13. 计算机外联管理办法,外联部管理制度
  14. 为精简版VS2008添加DEBUG版运行时库到系统目录
  15. 1.Attach(E-UTRAN Initial)
  16. Kali之——菜单中各工具功能
  17. asp.net928-研究生报名系统
  18. i += j ;与 i = i + j ; 的区别
  19. 面向对象--接口--接口的例题
  20. Java高级---集合

热门文章

  1. 共享内存---shmget shmat shmdt
  2. react学习(3)----不能在该位置用setstate
  3. [css] 用css创建一个三角形,并简述原理
  4. [css] 写出你遇到过IE6/7/8/9的BUG及解决方法
  5. 工作335:uni-增加表单验证
  6. [css] 如何让表格单元格等宽显示
  7. 工作327:uni-数据格式处理
  8. 前端学习(2631):git安装
  9. “约见”面试官系列之常见面试题之第一百篇之响应路由参数的变化(建议收藏)
  10. 前端学习(1845)vue之电商管理系统项目实战的学习目标