《Python核心编程》笔记 Python对象
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对象相关推荐
- python核心编程笔记
python核心编程–笔记(? 解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 ...
- python核心编程--笔记(不定时跟新)(转)
的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v ...
- python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象
Python中一切皆对象本章节首先对比静态语言以及动态语言,然后介绍 python 中最底层也是面向对象最重要的几个概念-object.type和class之间的关系,以此来引出在python如何做到 ...
- [PYTHON] 核心编程笔记(18.多线程编程)
18.1 引言/动机 18.2 线程和进程 18.2.1 什么是进程(重量级进程)? 计算机程序只不过是磁盘中可执行的,二进制(或其他类型)的数据,他们只有在被读取到内存中,被操作系统调用时才开始他们 ...
- [PYTHON] 核心编程笔记(14.Python执行环境)
在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件 在特定执行场景包括: 在当前脚本继续运行 创建和管理子进程 执行 ...
- python视窗编程_[PYTHON] 核心编程笔记(19.图形用户界面编程)
19.1 简介 19.1.1 什么是Tcl,Tk和Tkinter? 19.1.2 安装和使用Tkinter # apt-get install python-tk -y # python ------ ...
- 【python核心编程笔记+习题】-CH5-数字类型
本章主题 数的简介 整型 布尔型 标准的整型 长整型 浮点型实数 复数 操作符 内建函数 其它数字类型 相关模块 Python 支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数 ...
- 【python核心编程笔记+习题】-CH7-映射
本章主题 映射类型: 字典操作符 内建函数 内建方法 字典的键 集合类型 操作符 内建函数 内建方法 相关模块 一个字典对象是可变的,它是一个容器类型,能存储任意个数的 Python 对象,其中也包括 ...
- python核心编程笔记chapter 3
2019独角兽企业重金招聘Python工程师标准>>> 注释# 继续\(反斜线) 同一行书写多个语句: 缩进使用4个空格宽度,避免使用制表符 多元赋值:如 x,y = 1 , & ...
- Python核心编程笔记---- print
在仅用变量名时,输出的字符串是用单引号括起来的.这个是为了让非字符串对象也可能以字符的形式显示在屏幕上. 而print 函数打印出来的是变量的值. print 调用的是str()方法.而仅用变量名时调 ...
最新文章
- .NET Core版本七牛云SDK使用
- python的try和except_python的try...except
- 机器学习之过拟合与欠拟合以及偏差-方差分解
- Apache部署网页-Ubuntu16.04
- 【工作感悟】全网最经典26道Spring面试题总结
- 【翻译】使用Ext JS设计响应式应用程序
- 【转发】响应式Web设计?怎样进行?
- 说到 SASE,新的安全范式有哪些
- kido机器人没反应_机器人不能钩的三个英雄,章鱼妈上榜,钩中图四我方直接团灭!...
- 【OCR技术】字符识别技术总览
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法
- c2000 电阻采样_常用超低阻值采样电阻阻值一览表
- 计算机外联管理办法,外联部管理制度
- 为精简版VS2008添加DEBUG版运行时库到系统目录
- 1.Attach(E-UTRAN Initial)
- Kali之——菜单中各工具功能
- asp.net928-研究生报名系统
- i += j ;与 i = i + j ; 的区别
- 面向对象--接口--接口的例题
- Java高级---集合
热门文章
- 共享内存---shmget shmat shmdt
- react学习(3)----不能在该位置用setstate
- [css] 用css创建一个三角形,并简述原理
- [css] 写出你遇到过IE6/7/8/9的BUG及解决方法
- 工作335:uni-增加表单验证
- [css] 如何让表格单元格等宽显示
- 工作327:uni-数据格式处理
- 前端学习(2631):git安装
- “约见”面试官系列之常见面试题之第一百篇之响应路由参数的变化(建议收藏)
- 前端学习(1845)vue之电商管理系统项目实战的学习目标