Python学习笔记_Python对象

作者:湖北诺贝特科技有限公司  来源:www.nbt158.com未知  发布时间:2017-09-12 15:42:19
Python学习笔记_Python对象

Python学习笔记_Python对象 Python对象 标准类型 其他内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比较 对象身份比较 布尔类型 标准类型的内建函数 typeObj cmpobj1 obj2 strobj reprobj typeobj isinstanceobj 标准类型的分类 存储模型 更新模型 访问模型 不支持的类型

Python学习笔记_Python对象

首先来理解一个通俗的含义,什么是对象?其实对象无论在什么语言里面,比如C++,Python里面都是指一块有类型的内存,对象里面存放着相应的数据

Python对象

所有的Python对象都有三个特性:身份,类型,值
- 身份:每一个对象都有唯一的一个身份ID来标识自己,就像该对象在内存中的存储地址一样,是唯一的,不可共用的。任何对象的身份标识符都可以用内建函数id()来得到

x=1 print id(x) #运行结果:163449008 类型:因为Python是动态类型的,所以一个对象里面就应该保存该对象的类型来决定该对象而已进行一些什么样的操作。我们可以通过内建函数type()来得到对象的类型 number1 = 1 str1 = 'Hello World' print type(number1) print type(str1) #运行结果 # # 值:对象表示的数据项,我们在内存里面无差别的存储数据,假如我们在内存里面存储的是1000001,如果是str类型,那么就解释为'A',如果是整形,就解释为65

对象属性: 某些对象有属性,值或者相关联的可执行代码,最常见的属性是函数和方法

标准类型 数字 Integer 整形 Boolean 布尔型 Long integer 长整形 Floating point real number 浮点型 Complex number 复数型 String 字符串 List 列表 Tuple 元组 Dictionarry 字典 其他内建类型 类型 Null对象 (None) 文件 集合/固定集合 函数/方法 模块 类 类型对象和type类型对象

之前提到过,对象通过类型来判断自己可以执行那些操作,那么类型就是用来存储这些操作最佳场所,所以相对于字符串来说,用一个对象来描述一个类型更为适合。

type()内建函数返回一个type对象,只不过这个对象被以字符串的形式展现出来

print type(10) print type(type(10)) #运行结果: # #

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

Python的Null对象——None

None只有一个值,它不支持任何运算,没有任何内建方法。
每个对象天生具有True或者False值。
下面对象的布尔值是False:

None False 所有值为0的数 0 0.0 0L 0.0+0.0j “” [] () {}
除了上面的值,其他值都是True 标准类型操作符 对象值的比较

对象值的比较会直接返回一个Bool对象,各种类型的对象的比较方法也不同。,数字类型的根据数值的大小和符号比较,字符串按照字符序列进行比较等等

对象身份比较

在python里面,一般都是首先在内存中创建一个对象,然后再将这个对象的引用赋值给变量,通过引用对对象进行操作。

x = 3.14 # 创建一个3.14浮点型对象,并将引用赋值给变量x

在许多情况下,一个对象的引用会传给对个变量,为了检测两个变量是否同时指向同一个变量,我们可以用内建函数id()来比较两个变量指向对象的id是否相等,或者使用is或者is not来比较两个变量是否指向同一个对象

举个栗子:

x = 3.14 y = x print id(x) == id(y) print x is y # 和 id(x) == id(y) 一样 print x is not y # 和 id(x) != id(y) 一样

运行结果:
True
True
False

举个栗子:

x = 3.14 y = 1.0 + 2.14 print x is y # 虽然数值相同,但是并不指向同一个对象

运行结果:
False

布尔类型

当多个布尔条件需要通手机进行判断时,Python为我们提供了下面几个语句

操作符 功能

and 逻辑与

or 逻辑或

not 逻辑非

标准类型的内建函数

除了操作符,Python还提供了一些内建函数用于这些基本信息:

函数 功能

cmp(obj1 , obj2) 比较两个对象是否相等

repr(obj) 返回一个对象的字符串表示

str(obj) 以可读性良好的为目的返回一个对象的字符串表示

type(obj) 返回对象的类型,返回的类型是一个类型对象

type(Obj)

type()内建函数是用来返回一个对象的类型的

print type(1) print type('Hello World')

运行结果:

cmp(obj1 , obj2)

cmp(obj1 , obj2)是用来比较两个对象的

返回结果 比较情形

正整数 obj1 > obj2

0 obj1 = obj2

负整数 obj1 < obj2

上面比较返回的数值可以理解为 obj1 - obj2 返回的结果

举个栗子:

x, y = 1, 2 print cmp(x, y) # 运行结果: -1 str1, str2 = 'xyz', 'abc' print cmp(str1, str2) # 运行结果: 1 str(obj) & repr(obj)

上面的两个内建函数str(obj)和repr(obj)都是返回一个对象的字符串,但是这两个内建函数又有所不同:

str(obj):是用来返回一个可读性好的字符串,面向的用户是程序员 repr(obj):是用来返回一个Python虚拟机看得懂的字符串,面向的用户是Python虚拟机,repr(obj)返回的字符串可以通过eval(str)重新求值!即这个式子是成立obj == eval(repe(obj))

总的来说,就是repr(obj)是对Python比较友好 , str(obj)是对用户比较友好 , 但是许多情况下str和repr的输出都是一样的

print str(1) print repr(1) #运行结果: #1 #1 type(obj) & isinstance(obj)

type(obj)可以返回任意Python对象的类型,而不仅局限于标准类型
举个栗子:

对于标准类型

print type('') #运行结果: print type({}) #运行结果:

对于自定义类型

class Foo: pass foo = Foo() class Bar(object): pass bar = Bar() print type(Foo) #运行结果 : print type(foo) #运行结果 : print type(Bar) #运行结果 : print type(bar) #运行结果 :

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:鄂州SEO http://ezhou.4567w.com


上一篇:百度一小步,我们断财路
下一篇:最后一页