Python核心编程笔记----Python对象

本章内容:

Python对象

內建类型

标准类型操作符

值的比较

对象身份比较

布尔类型

标准类型內建函数

标准类型总览

各种类型

不支持的类型

Python对象

 所有Python对象都有三个特性:身份,类型和值

身份:唯一的身份标识,对象的内存地址,内建函数id()可以得到。(极少用到)     只读

类型:对象的类型决定该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。內建函数type()查看对象的类型,因为在python中类型也是对象,所以type()返回的是对象而不是简单的字符串。 只读

值:对象表示的数据项

对象属性:python用句点(.)标记法来访问属性。最常用的属性是函数和方法,   也有一些python类型也有数据属性,含有数据属性的 对象包括:类,类实例,模块,复数和文件

        

标准类型

数字

Integer     整型

Boolean   布尔型

Long integer  长整型

Floathing point real number  浮点型

Complex  number  复数型

String     字符串

List          列表

Tuple      元组

Dictionary   字典

其他內建类型:

类型

Null对象

文件

集合/固定集合

函数/方法

模块

类型对象和type类型对象

  >>> type(42)

<type ‘int‘>

>>> type(type(42))

<type ‘type‘>   所有类型对象的类型是type    默认元类

None------Python的Null对象

Null对象或者NoneType只有一个值None,它不支持任何运算也没有任何內建方法。None没有什么有用的属性,它的布尔值总是False

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

内部类型

代码,帧,跟踪记录,切片,省略,Xrange

代码对象:

代码对象是编译过的python源代码片段,它是可执行对象。通过调用內建函数compile()可以得到代码对象。代码对象可以被exec命令或eval()內建函数执行      
        代码对象是函数的一个属性

帧对象:

   帧对象表示Python的执行栈帧。每次函数调用产生一个帧,每一个帧对象都会相应创建一个C栈帧。用到帧对象的一个地方是跟踪记录对象

 跟踪记录对象:

当异常发生时,一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。如果一个异常有自己的处理程序,处理程序就可以访问这个跟踪记录对象。

切片对象:

当使用python扩展的切片语法时,会创建切片对象。

切片语法允许对不同的索引切片操作,包括步进切片、多维切片和省略切片。

多维切片语法: sequence[start1:end1,start2:end2]或使用省略sequence[...,start1:end1],也可以由內建函数slice()来生成

步进切片:sequence[起始索引:结束索引:步进值]

>>> foostr = ‘abcde‘

>>> foostr[::-1]

‘edcba‘

>>> foostr[::-2]

‘eca‘

>>> foolist = [123,‘xba‘,342.23,‘abc‘]

>>> foolist[::-1]

[‘abc‘, 342.23, ‘xba‘, 123]

省略对象:

XRange对象:

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

       

标准类型操作符

对象值的比较

   >>> 2 == 2

True

>>> 2.46 <= 8.33

True

>>> ‘abc‘ == ‘xyz‘

False

>>> 3 < 4 < 7

True

>>> 4 > 3 == 3

True

>>> 4 < 3 < 5 != 2 < 7

False

比较操作是比较的对象的数值而不是对象本身

标准类型值比较操作符:

expr1 < expr2        ;  expr1小于expr2

expr1 > expr2        ;  expr1大于expr2

expr1 <= expr2      ;  expr1小于等于expr2

expr1 >= expr2      ;  expr1大于等于expr2

expr1 == expr2      ;  expr1等于expr2

expr1  != expr2       ;  expr1不等于expr2

expr1 <> expr2      ;  expr1不等于expr2

对象身份比较:  
    对象可以赋值到另一个变量,因为每个变量都指向同一个数据对象,只要任何一个引用发生改变,该对象的其他引用也会随之改变   
    foo1和foo2指向相同的对象

foo1 = foo2 = 4.3

foo1 = 4.3

foo2 = foo1

foo1和foo2指向不同的对象

foo1 = 4.3

foo2 = 1.3 + 3.0

测试俩个变量是否指向同一个对象:

a is b

id(a)  == id(b)

>>> a = [ 5,‘hat‘,-9.3]

>>> b = a

>>> a is b

True

>>> a is not b

False

>>> b = 2.5e-5

>>> b

2.5e-05

>>> a

[5, ‘hat‘, -9.3]

>>> a is b

False

>>> a is not b

True

标准类型对象身份比较操作符

obj1 is obj2       ;obj1和obj2是同一个对象

obj1 is not obj2    ;obj1和obj2不是同一个对象

布尔类型

标准类型布尔操作符

not expr                 ;expr的逻辑非

expr1 and expr2    ;expr1和expr2的逻辑与

expr1 or expr2       ;expr1和expr2的逻辑或

标准类型內建函数

cmp(obj1,obj2)                  比较obj1和obj2,根据比较结果返回整型i:

i < 0 if obj1 < obj2

i > 0 if obj1 > obj2

i == 0 if obj1 == obj2

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

str(obj)          返回对象适合可读性好的字符串表示

type(obj)         得到一个对象的类型,并返回相应的type对象   type(object)

存储模型分类:

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

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

更新模型:

可变类型          列表,字典

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

访问类型

直接访问           数字

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

映射访问           字典

时间: 2024-10-16 16:48:32

Python核心编程笔记----Python对象的相关文章

python核心编程--笔记

python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后

python核心编程笔记----threading

一个进程中的各个线程之间共享同一片数据空间,所以线程之间可以比进程之间更方便地共享数据以及相互通讯. 1.全局解释器锁(GIL) Python 解释器中可以"运行"多个线程,但在任意时刻,只有一个线程在解释器中运行.在多线程环境中,Python 虚拟机(解释器)按以下方式执行:1).设置 GIL2).切换到一个线程去运行3).运行: a. 指定数量的字节码指令,或者 b. 线程主动让出控制(可以调用 time.sleep(0))4).把线程设置为睡眠状态5).解锁 GIL6).再次重复

Python核心编程笔记(类)

Python并不强求你以面向对象的方式编程(与Java不同) # coding=utf8 class FooClass(object): version = 0.1 def __init__(self, nm='John Doe'): self.name = nm print('Created a class instance for', nm) def showname(self): print('Your name is ', self.name) print('My name is ',

Python核心编程笔记——第四章

第四章 Python对象 1.类型也是对象: a = 4;type(a)-><type 'int'>,这里"<type 'int'>"是一个类型对象(可以赋值给一个变量),可以使用 type(type(a)) 来验证 2.Python2.2开始,类和类型统一,类=类型,实例是类型的对象 3.任何对象都天生具有布尔值 4.整数对象,字符串对象,元组对象都是不可变对象,Python会高效的缓存整数和字符串对象,所以 a=3;b=1+2;(a is b)会返回T

Python核心编程笔记----注释

python 中注释有两种 第一种,文档注释 第二种,一般的注释 下面是例子: class MyClass: '这个是文档注释' def __repr__(self): return "repr"; def __str__(self): return "str"; ------------------------------------------ #‘#’是一般的注释# 测试print 时调用的函数! a = MyClass();print "print

Python核心编程笔记---- [email&#160;protected]

print 的输出从定向问题 print 可以用’>>‘来重定向输出,下面是例子 f = open('D:/python.txt','w+') print >> f,"这里是我将要写入到文件D:/python.txt的东西"; f.close();

python核心编程笔记4--多线程

单线程程序: import time def Sorry(): print "I'm sorry!" time.sleep(1) if __name__=='__main__': for i in range(5): Sorry() 添加线程 import threading def thread_job(): print 'this is an added Thread,number is %s' % threading.current_thread() if __name__ ==

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

在仅用变量名时,输出的字符串是用单引号括起来的.这个是为了让非字符串对象也可能以字符的形式显示在屏幕上. 而print 函数打印出来的是变量的值. print 调用的是str()方法.而仅用变量名时调用的是repr()方法. 证明:------------------------------------------- class MyClass: def __repr__(self): return "repr"; def __str__(self): return "str

Python核心编程笔记---- input 与raw_input

1.raw_input:的返回值是一个string 对象. 2.input:相当于eval(raw_input()),计算出来是什么类型就是什么类型. ------------------------------------------------------------------------------------- 例子: s = raw_input("inter a number"); print type(s); i = input('inter a number'); pr