Python使用对象模型来存储数据。构造任何类型的值都是一个对象

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

身份:

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

类型:

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

>>> type([1,2])
<type 'list'>
>>> type(24)
<type 'int'>
>>> type({1,2,3})
<type 'set'>
>>> type('a string')
<type 'str'>

type()返回的是对象而不是简单的字符串。

值:对象表示的数据项

以上的三个特性在对象创建的时候就被赋值,除此之外,其他两个特性都是只读的

标准类型/基础数据类型:

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

其他内建类型:

类型、Null对象(None)、文件、集合/固定集合、函数/方法、模块、类

None,Python的Null对象

Python有一个特殊的类型,称为Null对象或者NoneType,只有一个值:None,它不支持任何运算也没有任何内建的方法,类似于C语言的void,None类型的值

和C中的Null值非常相似

None没有什么有用的属性,它的布尔值总是False

布尔值

所有标准对象均可以用于布尔测试,同类型的对象之间可以比较大小。每一个对象天生具有布尔True或false值

空对象、值为0的任意数字或Null对象None的布尔值都是False

下列对象的布尔值都是False:

  • None
  • False(布尔类型)
  • 所有的值为0的数
  • 0(整型)
  • (浮点型)
  • 0L(长整型)
  • 0.0+0.0j(复数)
  • “”(空字符串)
  • [](空列表)
  • ()(空元组)
  • {}(空字典)

值不是上面列出来的任何值的对象的布尔值都是True

标准类型运算符:

比较运算符用来判断同类型对象是否相等,所有的内建类型均支持比较运算,比较运算返回布尔值True或False

>>> 2==2
True
>>> 2.34<=3.44
True
>>> 'abc'=='xyz'
False
>>> 'xyz'>'abc'
True
>>> 'xyz'<'abc'
False
>>> [3,'abc']==['abc',3]
False
>>> [3,'abc']==[3,'abc']
True

多个比较操作可以在同一行上进行,求值顺序为从左到右.例如:

>>> 3<4<5 #等价于 (3<4)and(4<5)
True
>>> 4>3==3 #等价于(4>3)and(3==3)
True
>>> 4<3<5!=2<7
False

标准类型值比较运算符:

对象身份比较

每个对象都天生具有一个计数器,记录它自己的引用次数。这个数目表示有多少个变量指向该对象

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

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

>>> foo2=foo1
>>> foo1 is foo2
True
>>> foo1 is not foo2
False
>>> id(foo1)==id(foo2)
True
>>>

布尔类型

布尔逻辑运算符and,or,not都是Python关键字,这些运算符的优先级按从高到低的顺序如下:

标准类型布尔运算符:

>>> x,y=3.1415926,-1024
>>> x<5.0
True
>>> not(x<5.0)
False
>>> (x<5.0) or (y>2.71828)
True
>>> (x<5.0) and (y>2.71828)
False
>>> not(x is y)
True

标准类型内建函数

Python提供了一些内建函数用于这些基本对象类型:

cmp(), repr(), str(), type()和等同于repr()函数的单反引号('')运算符

type()接受一个对象作为参数,并返回它的类型。它的返回值是一个类型对象。

>>> type(4)
<type 'int'>
>>> type('hello!')
<type 'str'>
>>> type(type(4))
<type 'type'>

cmp()用于比较两个对象obj1和obj2,如果obj1<obj2返回-1,如果obj1>obj2返回1,如果obj1==obj2返回0,行为类似于C中的strcmp()函数,比较是在对象之间进行的

>>> a,b=-4,12
>>> cmp(a,b)
-1
>>> cmp(b,a)
1
>>> b=-4
>>> cmp(a,b)
0
>>> a,b='abc','xyz'
>>> cmp(a,b)
-1
>>> cmp(b,a)
1
>>> b='abc'
>>> cmp(a,b)
0

str()和repr()(及''运算符)

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

str()函数得到的字符串可读性好,而repr()函数得到的字符串通常可以用来重新获得该对象

>>> str(4.53-2j)
'(4.53-2j)'
>>> str(1)
''
>>> str(2e10)
'20000000000.0' >>> str([0,5,9,9])
'[0, 5, 9, 9]'
>>> repr([0,5,9,9])
'[0, 5, 9, 9]'
>>> '[0,5,9,9]'
'[0,5,9,9]'

str()和repr()和''运算在特性和功能方面都非常的相似,repr()和''做的事情完全一样,返回的是一个对象的官方字符串表示,可以通过求值运算(使用eval()内建函数)重新得到该对象,但是str()函数则有所不同,它可以生成一个对象的可读性好的字符串表示,返回结果无法用于eval()求值,但是很适合用于print语句输出。

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

Python基础(2)--对象类型的更多相关文章

  1. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  2. python基础之序列类型的方法——字符串方法

    python基础之序列类型的方法--字符串方法 Hello大家好,我是python学习者小杨同学,经过一段时间的沉淀(其实是偷懒不想更新),我终于想起了自己的博客账号,所以这次带来的是序列方法的后半部 ...

  3. Python中的对象类型的初步介绍

    一:介绍 1.为什么使用内置对象 对象类型是语言的一个部分 内置对象构成了每个python程序的核心部分 2.核心数据类型 数字 字符串 列表 字典 元组 文件 集合 其他类型 编程单元类型 与实现相 ...

  4. 2015/8/28 Python基础(2):对象

    Python用对象模型来存储数据.构造任何类型的值都是一个对象.Python对象都有是三个特性:身份,类型和值 身份是每个对象的唯一身份标识.任何对象都可以用内建函数id()来得到身份.如: > ...

  5. 浅谈Python内置对象类型——数字篇(附py2和py3的区别之一)

    Python是一门面向对象的编程设计语言,程序中每一样东西都可以视为一个对象.Python内置对象可以分为简单类型和容器类型,简单类型主要是数值型数据,而容器类型是可以包含其他对象类型的集体,如序列. ...

  6. python基础之数值类型与序列类型

    Hello大家好,我是python学习者小杨同学,已经学习python有一段时间,今天将之前学习过的内容整理一番,在这与大家分享与交流,现在开始我们的python基础知识之旅吧. 数值类型与序列类型 ...

  7. Python基础—02-数据类型

    数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...

  8. 1.8 Python基础知识 - 数值类型

    一.int类型(任意精度整数) 整型类型(int)是表示整数的数据类型.与其他计算机语言有精度限制不同,Python的整数位数可以为任意长度位数(只受限制于计算机内存) 数字字符串即整型常量. pyt ...

  9. python中判断对象类型的函数——isinstance

    isinstance是Python中的一个内建函数.是用来判断一个对象的变量类型. isinstance(object, class-or-type-or-tuple) 如果参数object是clas ...

  10. Python基础---序列对象

    一.序列简介 数据结构是通过某种方式组织在一起的元素的集合. 容器(Container)是一种Python的数据结构,基本上是包含其他对象的任意对象.序列和映射(如字典)是两类主要的容器.集合(Set ...

随机推荐

  1. js中的包装对象。

    我们都知道在js中普通类型的变量是没有属性和方法的,然后有时却并不是这样. var str = "努力,奋斗"; console.log(str.length); var num ...

  2. POJ 3345 Bribing FIPA 树形DP

    题目链接: POJ 3345 Bribing FIPA 题意: 一个国家要参加一个国际组织,  需要n个国家投票,  n个国家中有控制和被控制的关系, 形成了一颗树. 比如: 国家C被国家B控制, 国 ...

  3. EF相关知识

    一.EF控制台命令: 1.enable-migrations -EnableAutomaticMigration -Force:使用自动迁移 2.add-migration "Country ...

  4. Linux shell tee指令学习

    转载自:http://blog.163.com/xujian900308@126/blog/static/12690761520129911304568/   tee tee:读取标准输入的数据,并将 ...

  5. Muduo 多线程模型对比

    本文主要对比Muduo多线程模型方案8 和方案9 . 方案8:reactor + thread pool ,有一个线程来充当reactor 接受连接分发事件,将要处理的事件分配给thread pool ...

  6. awk引用外部变量及调用系统命令方法

    目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: ...

  7. 用Qt写软件系列四:定制个性化系统托盘菜单

    导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...

  8. SqL数据库发布订阅非聚集索引没有被复制到订阅服务器的解决方案

    Non-Clustered Indexes not copying in Transactional Replication : SQL Server 2008 方法1: You have trans ...

  9. java 接口学习

    你应该知道接口是一种契约,它与实现方式无关 但是类,即使是抽象类,你都能自定义成员变量,而成员变量往往就与实现方式有关. 这一点的实际意义不大. 但是有一点,类会暴露太多不必要,甚至不能暴露的东西,你 ...

  10. Ubuntu系统操作快捷键

    Ubuntu操作基本快捷键* 打开主菜单 = Alt + F1* 运行 = Alt + F2* 显示桌面 = Ctrl + Alt + d* 最小化当前窗口 = Alt + F9* 最大化当前窗口 = ...