python内建函数测试对象身份_Python学习笔记 03 Python对象

1、Python对象

Python对象都拥有三个特性:身份、类型和值。

身份:每一个对象都有一个唯一的身份标识自己,任何对象的身份都可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。

类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样操作,以及遵循什么样的规则。可以使用内建函数type()查看Python对象的类型。

值:对象表示的数据项。

常用的对象属性是函数和方法,有一些Python类型也有数据属性。含有数据属性的对象包括:类、类实例、模块、复数和文件。

2、标准类型

数字 整型 布尔型 长整型 浮点型 复数型 字符串 列表 元组 字典

3、其他内建类型

(1)类型对象和type类型对象

Python类型本身也是对象。内建函数type()。

>>> type(42)

>>> type(type(42))

所有的类型对象都是type,它也是所有Python类型的根和所有Python标准类的默认元类(metaclass)。

(2)None—Python中的Null对象

Python有一个特殊的类型,称为Null对象或NoneType,它只有一个值就是None。

它不支持任何运算,没有任何内建的方法。None和C语言中的void类型最接近,值接近于C语言中的Null。None没有什么有用属性,它的布尔值为False。

核心笔记:布尔值

所有的标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值。空对象或值为零的任何数字或Null对象None的布尔值都是False。

下列对象的布尔值为False。

None

False(布尔类型)

所有值为零的数

0(整型)

0.0(浮点型)

0L(长整型)

0.0+0.0j(复数)

“”空字符串

[]空列表

()空元组

{}空字典

非以上任何值的对象的布尔值都是True。

4、内部类型

(1)代码对象

代码对象指编译过的python源代码片段,它是可执行对象。通过调用内建函数complie()可以得到代码对象,代码对象可以被exec命令或eval()内建函数来执行。

(2)帧对象

帧对象表示Python的执行栈帧。帧对象包含python解释器在运行时候所需要信息,它的属性包括指向向一个帧的链接,正在执行的代码对象,本地以及全局名字字典以及当前指令;每次函数调用都产生一个帧对象。

(3)跟踪记录对象

异常发生时候,一个包含对异常的栈跟踪记录的对象被创建。

(4)切片对象

当Python使用切片语法时候就会产生切片对象。扩展的切片语法允许对不同的索引切片操作包括步进切片、多维切片和省略切片。多维切片的语法是sequence[start1:end1,start2:end2],或使用省略号,sequence[…,start1:end1]。切片对象也可以由内建函数slice()。步进切片允许利用第3个切片元素进行切片,它的语法为sequence[起始索引:结束索引:步进值]。

>>> fooster = 'abcde'

>>> foostr[::-1]

'edcba'

>>> foostr[::-2]

'eca'

>>> foolist = [123, 'xba', 342.2, 'abc']

>>> foolist[::-1]

['abc', 342.2, 'xba', 123]

(5)省略对象

省略对象用于扩展的切片语法中,起记号作用。省略对象有一个唯一的名字Ellipsis,它的布尔值始终为True。

(6)XRange对象

内建的xrange()函数会产生一个xrange对象,xrange()是内建函数range()的兄弟版本,它可以节省内存或产生range无法完成的超大数据集合。

5、标准类型操作符

(1)对象值的比较

比较运算符判断同类型的对象是否相等,所有内建类型都支持比较运算,比较运算返回布尔值。 多个比较运算符可以再同一行进行,求值的顺序为从左到右。

>>> 2 == 2

True

>>> 2.46 <= 8.33

True

>>> 'abc' == 'xyz'

False

>>> 'abc' < 'xyz'

True

>>> [3, 'abc'] == ['abc', 3]

False

>>> [3, 'abc'] == [3, 'abc']

True

>>> 3 < 4 <7

True

>>> 4 > 3 == 3

True

(2)对象身份的比较

变量可以看作对象的链接。foo1 = foo2 = 4.3,foo1和foo2指向相同的对象。

若foo2 = fool或foo2=3+1.3,则它们不指向同一对象。

Python提供了is和is not操作符来测试两个变量是否指向同一个对象。

a is b等价于id(a) == id(b)。

核心提示:

整数对象和字符串对象是不可变对象,python会高效的缓存他们。这会造成我们认为python应该创建新对象的时,它却没有。

>>> a = 1

>>> id(a)

19523112

>>> b = 1

>>> id(b)

19523112

>>>

>>> c = 1.0

>>> id(c)

33637528

>>> d = 1.0

>>> id(d)

19555384

但是不要在应用程序中应用这Python缓存的特性。

(3)布尔类型

按优先级排列:not,and,or,分别表示逻辑非,逻辑与,逻辑或。

6、标准类型内建函数

(1)type()

type()是工厂函数。type(object)返回对象的类型。

>>> type(4)

>>> type('Hello World')

(2)cmp()

内建函数cmp()用于比较两个对象obj1和obj2。cmp(obj1, obj2),结果返回一个整型。

如果obj1 < obj2,则返回一个负整型,如果obj1 > obj2,则返回一个正整型,

如果obj1 < obj2,则返回一个0。如果是用户自定义对象,cmp()会调用该类的特殊方法_cmp_()。

>>> a, b = 4, 12

>>> cmp(a, b)

-1

(3)str()和repr()以及``操作符

内建函数str()和repr()或反引号操作符(``)可以以字符串的方式获取对象的内容、类型、数值属性等信息。str(ob)返回对象适合可读性好的字符串表示。repr(obj)或`obj`返回一个对象的字符串表示,可以重新获得该对象,通常obj == eval(repr(obj))。

(4)type()和isinstance()

1 #!/usr/bin/env python2

3 def displayNumType(num):

4 print num, 'is',

5 if isinstance(num, (int, long, float, complex)):

6 print 'a number of type:', type(num).__name__

7 else:

8 print 'not a number at all!!'

9

10 displayNumType(-69)

11 displayNumType(9999999999999999999999L)

12 displayNumType(98.6)

13 displayNumType(-5.2+1.9j)

14 displayNumType('xxx')

输出:

-69 is a number of type: int

9999999999999999999999 is a number of type: long

98.6 is a number of type: float

(-5.2+1.9j) is a number of type: complex

xxx is not a number at all!!

>>> help(isinstance)

Help on built-in function isinstance in module __builtin__:

isinstance(...)

isinstance(object, class-or-type-or-tuple) -> bool

Return whether an object is an instance of a class or of a subclass thereof.

With a type as second argument, return whether that is the object's type. The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for

isinstance(x, A) or isinstance(x, B) or ... (etc.).

由此可见,isinstance()函数可以减少函数调用的次数,减少查询次数。

7、类型工厂函数

原来的内建转换,像int()、type()、list()等,现在都成了工厂函数。貌似函数的类。调用的时候,实际上是生成了该类型的一个实例。

int() long(),float(),complex()

str() unicode(),basestring()

list() ,tuple()

type()

dict()

bool()

set()

frozenset()

object()

classmethod()

staticmethod()

super()

property()

file()

8、标准类型的分类

“基本”这些类型是python提供的标准或核心类型;

“内建”是由于这些类型是python默认提供的;

“数据”因为他们一般用于数据存储;

“对象”因为对象是数据和功能的默认抽象;

“原始”因为这些类型提供的是最底层的粒度数据存储;

“类型”因为他们就是数据类型。

(1)存储模型

标量/原子类型    数值、字符串

容器类型        列表、元组、字典

(2)更新模型

以可否改变作为分类标准。

可变类型         列表、字典

不可变类型       数字、字符串、元组

>>> x = 'Python'

>>> id(x)

19829920

>>> x = 'c++'

>>> id(x)

33462008

(3)访问模型(首要区分)

直接访问         数字

顺序访问         字符串、列表、元组

映射访问         字典

数据类型

存储模型

更新模型

访问模型

数字

标量

不可更改

直接访问

字符串

标量

不可更改

顺序访问

列表

容器

可更改

顺序访问

元组

容器

不可更改

顺序访问

字典

容器

可更改

映射访问

9、不支持的类型

char或byte

可以用字符串表示字符或8比特整数

没有指针,在Python中,一切都是指针。

如果需要高精度的数字,可以采用Decimal类,必须导入decimal模块。

在处理金钱这类确定的值时,Decimal类型很有用。在其他场合,一般float就够用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ajax中的换行符,jQuery中的换行符ajax html回调导致错误

我从$.ajax调用返回一大块HTML.来自PHP的字符串在开头有两个换行符,例如$data "Here is some text";这是$.ajax调用&#xff1a;$(form#form_id).submit(function(e){e.preventDefault();$form $(this);$.ajax({url: $form.attr(action),type: $form.attr(method),…

网站需要数据库服务器吗,网站需要独立的服务器数据库吗

网站需要独立的服务器数据库吗 内容精选换一换文档数据库服务提供使用数据管理服务(Data Admin Service&#xff0c;简称DAS)、内网和公网的连接方式。文档数据库服务默认为您开通了远程主机登录权限&#xff0c;推荐您使用更安全便捷的数据管理服务连接实例&#xff0c;具体请…

android 获取monkey日志_安卓app测试之Monkey日志分析

转:原文&#xff1a;https://blog.csdn.net/a136332462/article/details/76066909一、一般测试结果分析-搜索关键字&#xff1a;1、无响应问题可以在日志中搜索 “ANR” 。2、崩溃问题搜索 “CRASH” 。3、内存泄露问题搜索"GC"(需进一步分析)。4、异常问题搜索 “Ex…

只提取单元格中的数字_提取Excel单元格中的数字(4类)及原理

文中总结了4类从包含有中文、字母、数字的单元格数据中只提取数字的公式。(使用的时候把单元格名称改为实际的单元格名称即可)。1.提取文本左侧数据当单元格中数字在左侧&#xff0c;文字内容在右侧时&#xff0c;我们可以使用一下公式来将数字快速提取出来。函数公式&#xff…

delphi 执行长时间存储过程 显示进度_项目管理_十大管理体系之「项目进度管理」知识整理及心得分享...

项目进度管理项目进度管理在项目是项目管理三大要素之一&#xff0c;在项目管理中占有非常重要的地位。往往很多项目要求进度节点是一个固定期限&#xff0c;无法修改&#xff0c;所以进度把控就显得尤为重要。什么是进度管理&#xff0c;在你写project项目计划时就非常清楚的可…

bettertouchtool闪退_BetterTouchTool for Mac 3.238 无闪退 触控板增强工具

BetterTouchTool为魔术鼠标添加了许多新的完全可自定义的手势&#xff0c;Multi-Touch MacBook触控板和Magic Trackpad。这些手势是可定制的&#xff1a;魔术鼠标&#xff1a;捏合/缩小(缩放)单指点击左边单指轻拍右键单指中间单指轻拍单指点击中间双指轻敲双指点击双指轻扫(上…

宝塔php扩展fil_宝塔面板安装Redis给WordPress网站加速优化教程

宝塔面板php安装redis缓存以加快WordPress的开启速度&#xff0c;因为WordPress打开速度慢&#xff0c;所以霜天 seo使用多种方式来提高wordpress的加载速度&#xff0c;其中一个好办法是&#xff1a;使用redis加速缓存。本文的主题是宝塔面板php安装redis缓存加速WordPress&am…

常量缓存与integer比较_Integer缓存范围到底是多少?

本文主要大致思路为&#xff1a;不管从工作中还是面试&#xff0c;这篇文章都应该好好看完&#xff0c;本人认为是非常有用的。案例Integer是基本类型int的封装类。平时不管是入坑多年的小伙伴还在入坑路上的小伙伴&#xff0c;都应该知道的使用频率是相当高。下面模仿订单支付…

mysql数据库中删除列的内容_如何在数据库中删除列

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

mysql语句创建临时表并存入数据_mysql实例:在存储过程中创建临时表并储存数据...

在mysql存储过程中创建临时表&#xff0c;并保存数据到该表&#xff0c;然后根据存储过程调用的例子。是学习mysql存储过程的好例子&#xff0c;值得参考。代码&#xff1a;mysql>mysql> CREATE TABLE Employee( //创建普通表-> id int,-> first_name VARCHAR(15),…

虚拟主机安装mysql_如何虚拟主机安装mysql

匿名用户1级2008-10-20 回答在虚拟机上安装mysql的步骤为&#xff1a;1、下载MySQL-5.5.24-1.rhel5.i386.tar在/usr/local 下建立必要文件夹# cd /usr/local# mkdir mysql# cd /usr/local/mysql# mkdir src# mkdir data用xftp将MySQL-5.5.16-1.rhel5.i386.tar 上传到虚拟机src目…

mysql多副本搭建_一个简单的MySQL多实例环境搭建

安装mysql初始化两个数据库目录mysql_install_db --datadir/usr/local/var/mysql1 --usermysqlmysql_install_db --datadir/usr/local/var/mysql2 --usermysql修改数据库目录属性chown -R mysql /usr/local/var/mysql1chown -R mysql /usr/local/var/mysql2制作多实例启动服务c…

supervisor 子进程退出_用supervisor监管你的程序,不用担心程序挂了

1.背景无论多么优秀的程序员都难以避免写出来的程序会有崩溃的一天&#xff0c;特别是c、c这种高技术含量的语言&#xff0c;一不小心就来个段错误&#xff08;segment fault&#xff09;,我们通常会写一个守护进程或者守护脚本&#xff0c;检测对应的进程是否退出&#xff0c;…

pta7-3 统计不及格人数_应用统计专硕院校专业难度分析【青岛大学、苏大、西安交通大学】...

原文链接&#xff1a;应用统计专硕院校专业难度分析【第十二期】​mp.weixin.qq.com应用统计专硕院校专业难度分析 【第十二期】TO&#xff1a;哈喽&#xff0c;小可爱们早上给你好呀&#xff01;今天安安姐给你们更新经济类6个专硕院校专业难度分析专题第十二期&#xff0c;大…

mysql数据库事务有几种特性_面试官:你能说说事务的几个特性是啥?有哪几种隔离级别?...

1、面试题事务的几个特点是什么&#xff1f;数据库事务有哪些隔离级别&#xff1f;MySQL的默认隔离级别&#xff1f;2、面试官心里分析用mysql开发的三个基本面&#xff1a;存储引擎、索引&#xff0c;然后就是事务&#xff0c;你必须得用事务。因为一个业务系统里&#xff0c;…

typescript索引类型_typescript入门:高级类型

学习typescript中 &#xff0c;有一个小伙伴提出了一个问题const a {a:1,b:2,c:3}复制代码如何取到每个键上的值 &#xff0c;组成一个联合类型 &#xff1f; 即得到一个类型为type forA "1" | "2" | "3"复制代码一位大神给出了答案const a {…

latex 图片大小_用LaTeX写作业——插入图片(二)

&#xfeff;方法 subfigure可以横向排列一组图片&#xff0c;会自动编号abcd。在一个 subfigure内使用minipage插入图片&#xff0c;通过控制图片大小实现换行效果 # 效果 代码usepackage{subfigure} %所需宏包 usepackage{graphicx}begin{figure}[htbp] centersubfigure[标题…

python中单例模式是什么_python中的单例模式

单例模式(Singleton Pattern)是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场。比如&#xff0c;某个服务器程序的配置信息存放在一个文件中…

rpm包安装mysql配置文件目录_CentOS6.5系统下RPM包安装MySQL5.6

1.新开的云服务器&#xff0c;需要检测系统是否自带安装mysqlyum list installed | grep mysql2.如果发现有系统自带mysql&#xff0c;果断这么干yum -y remove mysql-libs.x86_643.随便在你存放文件的目录下执行&#xff0c;这里解释一下&#xff0c;由于这个mysql的yum源服务…