python的对象类型及其运算

一,我心向道,情有所亏。

一般使用内置类型

Python 对象的相关术语

Python 程序中保存的所有数据都是围绕对象这个概念展开的

1,程序中存储的所有数据都是对象
2,每个对象都有一个身份,一个类型和一个值、
例如:School=“MaGe Linux” 会以"MaGe Linux"创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而School 就是引用这个具体位置的名称

3,对象的类型也称对象的累别,用于描述对象的内部表示及它支持的方法和操作
4,创建特定类型的对象时,有时也将该对象称为该类型的实例
5,实例特定的对象时,有时也将该对象称为该类型的实例
6,实例被创建后,其身份和类型就不可改变(意思是改变的是同一个内存ID号的值)
·如对象值是可修改的,则称为可变对象
·如对象的值是不可修改,则称为不可变对象
7,如果某个对象包含对其它对象的引用,则将其成为容器
8,大多数对象都拥有大量特有的数据属性和方法
属性:与对象相关的值
方法:被调用时将在对象上执行某些操作的函数
使用点(.)运算符可以访问属性和方法

class :自定义类型
type:
instance:实例化

类:数据和方法组成
数据:变量
方法:函数

类:实例化对象
CA:
IA:
IB:

对象的身份与类型

Python内置函数id()可返回一个对象的身份,即该对象在内存中的位置

1,is 运算符用于比较两个对象的身份
2,type()用于返回一个对象的类型
3,对象类型本身也是一个对象,称为对象的类
·该对象的定义是唯一的,且对于某类型的所有实例都是相同的
·所有类型对象都有一个指定的名称,可用于执行类型检查,如list , dict

is 的作用 如同 “==”

两个对象比较
1,值比较:对象中的数据时否相同;
2, 身份比较:两个变量名引用的是否为同一对象;
3,类型比较:两个对象的类型是否相同;
核心数据类型
数字:int,long,float,complex(负数),bool()布尔型
字符:str,unicode
列表:list
字典:dict
元组:tuple
文件:file
其它类型:集合(set),frozenset(冻结类集合,不可变), 类类型(是对象,实例对象),none 空

其它文件类型工具:pipes , fifos,sockets

类型转换:
str(),repr()或format(),将非字符型数据转换为字符
int():转为整数
float():

list(s):将字串S 转为列表  输出以中括号[]
tuple(s):将字串S转为元组  输出以括号()
set(s):将字串S转为集合    输出以([]) 然后会去掉重复值
dict(d):创建字典         其d必须是(key,value)的元组序列;
                 d必须是列表中是元组 例如:
                       num = [('a',1),('b',11),('c',45)]
        字典是没有次序的,所以没有排序
  
chr(x):将整数转为字符
ord(x):将字符转换为整数值
hex(x):将整数转换为16进制字符串
bin(x):
oct(x):

数字类型:
python 的数字字面量:布尔型,整数,浮点数,复数;
True : 1
False : 0
数字类型是不可变类型

序列类型

1,序列表示索引为非负整数的有序对象集合,包括字符串,列表和元组
·字符串是字符的
·列表和元组是任意Python对象的序列
2,字符和元组属于不可变序列,而列表则支持插入,删除和替换元素
3,所有序列都支持迭代

字符类型:
字符串字面量:把文本放入单引号,双引号或三引号中:

如果要使用unicode编码,则在字符之前使用字符u进行标识,如:u"hello world"

strl = u"hello world"
type(strl)

文档字串:模块,类或函数的第一条语句时一个字符的话,该字符串数就成为文档字符串,可以使用_doc_属性引用:

运算符“
索引运算:[i]
切片运算:[i:j]
扩展切片:[i:j:stridge] ” 是怎么运算的
i为起始
j为结束
stridge 为步长(截取的步子后的长度)
如下所示
a = (1,2,3,4,5,6,7)
a [4::-2]
截取的数值为 4到0 ,也就是 0.1.2.3.4位。所对应的数值为:1,2,3,4,5
然后进行-2的步长截取。 也就是从5开始 -1 -2 将4去掉。留下5,3 然后从3开始 -1 -2将2去掉,留下1 。最后答案为 [5,3,1]

使用于字符串的操作

Python 2提供两种字符串对象类型
·字节字符串:直接(8bit数据)序列
·Unicode字符串:Unicode字符(16bit数据)序列
Python 可以使用32 bit整数保存Unicode 字符,但此为可选特性

可用于列表的方法
列表:list
容器类型
任意对象的有序集合,通过索引访问其中的元素,可变对象。
异构,任意嵌套
支持在远处修改
修改指定的索引元素,修改其指定的分片,删除语句,内置方法。

   相加操作:如同 L1+L2:合并两个列表,返回一个新的列表,不会修改原列表。
   相乘操作:如同 L1 * 3 表示重复3次。或者为N 的话,便是重复N次。

   in  :成员关系判断符,在指定容器中是否出现了指定的元素。返回True或者False!
        用法:item in container.
   not in

   range():生成器   如:range(10) : 0,1,2,3,4,5,6,7,8,9

   列表解析: 
   列表被 用等号时。是进行重新指定内存
        如同 L1 = L2 则L1 的指针会指到L2的位置

   import copy
   copy.deepcopy 这个则是可以进行 对象复制,而不用指到同一个列表的内存位置。
  
      如:L5 = copy.deepcoy(L1)

1,list(s)可将任意可迭代类型转换为列表,而如果s已经是一个列表,则该函数构造的新列表是s的一个浅复制

元组:
表达式符号:()

     容器类型
         任意对象的有序集合,通过索引访问其中的元素,不可变对象,长度固定
         异构,嵌套
         
     常见操作:
  定义元组:可以省略小括号。如:
           T4 = 'x','y','z'
         in:
         not in:
         T1+T2:合并两个元组
         T1 * N:N表示重复次数            
  虽然元组本身不可变,但如果元组内嵌套了可变类型的元素,那么此类元素的修改不会返回新元组 

字典: dict
字典在其它变成语言中又称作关联数组或者散列表;
通过键实现元素存取;无序集合;可变类型容器;长度可变,支持异构,支持嵌套;
{key1:value1,key2:value2,…}
空字典:{}
{‘x’:32,‘y’:[1,2,3,4]}
而字典内部可以嵌套:字典,列表,元组

  字典复制:d2 = d1.copy  这样d2的内存ID 跟 d1的ID 就不会一样
  而 d2 = d3 复制,则是d2的指向内存ID 会等于d3的内存ID

  
  help(dict.items)
  
  d1.iteritems:返回一个迭代器对象

  d2 = dict(name = 'jerry',age=42,gender='m'):同样是定义字典的方式

  zip('xyz','123')  返回
 [('x','1'),('y','2'),('z','3')]

  dict(zip('xyz','123'))  返回
 {'x':'1','y',:'2','z':'3'}      

字典的生成方式
d1 = {}
d1[‘x’] = 1
d1[‘y’] = (1,2,3,4)
d1[‘z’] = [1,2,3,4]
print d1
{‘y’: (1, 2, 3, 4), ‘x’: 1235, ‘z’: [1, 2, 3, 4]}

可调用对象,以及列表和字典的远原处修改特性

 类:数据 + 方法
     实例:
 点好运算符: ?
             属性:数据
             方法:操作() 
 可调用对象检查:callable()
 可调用对象包含:函数,类,对象中的方法等等。
 
    
 '',"",''' ''',""" """,字串
 列表:[]
 元组:()
 字典:{}
 数值:      

获取对象支持使用的属性和方法:dir()
某方法的具体使用帮助:help(list.pop)
获取可调用对象的文档字串:print obj.doc

集合:无序排列、可哈希:
支持集合关系测试:
in
not in
迭代
无法支持索引,或者说是切片。

集合的类型:set(),frozenset()

没有特定语法格式:

容器、类型、对象

1、
2、所有对象都有引用计数
sys 模块中有一个getrefcount()计数

3、列表和字典都支持两种类型的复制操作:浅复制和深复制;深复制可使用copy模块中的deepcopy()实现。

        潜复制:只是指向原来的内存位置。
        深复制:重新创建一个内存位置。

4、Python中的所有对象都是“第一类”,这意味着使用标识符命名的所有对象都具有相同状态;于是,能够命名所有对象都可以直接当数据进行处理。

5、所有序列都支持迭代

6、所有序列都支持的操作和方法;

7、可变序列的操作;

Python 的表达式和语句:

 表达式:
 语句:

Python中的常用的表达式操作符:
x*y,x/y,x+y,x-y,x//y,x%y

逻辑运算:
x or y, x and y ,not x
成员关系运算:
x in y ,x not in y
对象实例测试:
x is y, x not is y
比较运算:
x<y,x>y,x<=y,x>=y,x==y,x!=y
位运算:
x|y,x&y,x^y
一元运算:
-x,+x,~x:
幂运算:
x**y
x[i],x[i:j],x[i:j:stride]
调用:
x(…)

取属性
x.attribute
定义元组的云算法:
(…)
定义序列:
[]
字典:{…}

三元选择表达式:x if y else z

匿名函数表达式:lambda args:expression

生成器函数发送协议:yield x

运算优先级:
(…),[…],{…}
s[i],s[i:j]
s.attribute
s(…)
+x,-x,~s
x**y
*,/,//,%

  • , -
    << , >>
    &
    ^
    |
    <,<=,>,>=,==,!=
    is ,not is
    in ,not in
    not
    and
    or
    lambda

Python 的语句:
赋值语句:
函数调用:
print :用于打印调用的
if /elif /else:条件判断
for / else:序列迭代
while / else:普通循环
pass : 占位符
break :
continue:
def:
return:
yield:
global:命令空间
raise:触发异常
import:
from :模块属性访问
class:类
try/except/finally:捕捉异常
del:删除引用
assert:调试检查
with / as :环境管理器

Python 赋值语句:
隐式赋值:import ,from , def , class , for , 函数参数

  元组和列表分解赋值:当赋值符号(=)的左侧为元组或列表时,Python会按照位置把右边的对象和左边的对象自左而右逐一进行匹配对;个数不同时会触发异常,此时可以切片的方式进行;
  例如:
   n1 = ('Sun','Sat','She')
   x,y,z = n1
   那么x会指向Sun
       y会指向Sat
       x会指向She
   可以进行多重赋值
    比如:    n1 = n2 = n3 = 44
   增强赋值:+=,-=,*=,/=,//=,%=,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值