python 第二章 对象与类型
可变对象和不可变对象
1,可变对象,list(列表),dict(字典),集合(set),字节数组。
2,不可变对象,数值类型,字符串,字节串,元组(具体形式 ())。
注意条件:可变和不可变指的是该对象指向的内存是否可以改变。当修改不可变对象的时候,它会重新复制一份,然后再改变相应的值,原来的那一分就会相当与垃圾被去除。
>>> print(id(aee))
140375930246848
>>> aee+= ()
>>> print(id(aee))// 加了一个空元素之后,元祖的地址改变了。
140375898807608
>>> stra= '12'
>>> print(id(stra))
140375899220376
>>> stra+= ''
>>> print(stra)
12
>>> print(id(stra))// 加了一个空字符的时候,字符串的地址并没有被改变。 int同理。但是float的话,会有精度问题
140375899220376
变量与对象的关系(多个变量共享引用同一对象)
1,不可变对象之间的改变不会互相影响
>>> a=1
>>> print(a)
1
>>> b=a
>>> print(b)
1
>>> b=2
>>> print(b)
2
>>> print(a)
1
2,可变对象之间的改变会相互影响
>>> a=[1,23,4]
>>> print(a)
[1, 23, 4]
>>> b=a
>>> print(b)
[1, 23, 4]
>>> b.append(188)
>>> print(b)
[1, 23, 4, 188]
>>> print(a)
[1, 23, 4, 188]
我觉得这个地方恰好解释了可变对象和不可变对象之间的区别,可变对象直接改变的是地址,所以指向这个地址的量对应的会发生改变,而不可变对象“修改”的原理是新开辟一段内存,把原来的内容复制过来,然后再进行相应的改变。
数字整数类型
十进制,1,23等等
十六进制,0X或者0x开头。
八进制,0O开头。
二进制,0B开头。
int不受位数的限制,只收内存的限制。
字符串(python中只接受unicode编码)
索引,切片
索引是取出一个字符,切片是取出一片字符。
>>> s="huangqingxiang"
>>> len(s)
14
>>> s[0]// 从第0位开始,长度是14的话,最后一位的编号为13
'h'
>>> s[-14]// 如果是从右边开始数的话,开始为-1
'h'
>>> [-1]
[-1]
>>> s[-1]
'g'
>>> s[13]
'g'
>>> s[14]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[5:8]//截取从编号为5的字符串到第7位停止,左必右开
'qin'
>>> s[5:]//从编号为5的开始往后所有的字符串都截取出来
'qingxiang'
>>> s
'huangqingxiang'
单个字符的字符串问题
>>> s='A'
>>> ord(s)//当前字符的ascii编码,ord是得到当前字符串的Unicode编码
65
>>> chr(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required (got type str)
>>> chr(65)//ascii编码对应的字母
'A'
对encode()函数和decode()函数的初级理解
字面意思,encode指的是编码,decode指的是解码
>>> u='s'
>>> s1=u.encode('gb2312')//这里的gb2312指的是一种编码方式,获得bytes类型的类型对象
>>> s1
b's'
>>> s2=s1.decode('gb2312')
>>> s2
's'
字节串(不可变对象)
字节串类似于字符串,可以进行连接,重复运算。但是字节串是由单个字节组成的串,他的值是不可显示的代码,所以字节串是二进制数据,字符串值是文本数据序列。具体形式,数据的开始是以字母’b'或者‘B'开始,以单,双引号个三引号引起来的字节串。’
>>> x=b'\xff\xf1\x01'
>>> type(x)
<class 'bytes'>
>>> x=B'\xff\xf1\x01'
>>> type(x)
<class 'bytes'>
>>> x=bytes(10)
>>> x
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
字节数组
>>> bytearray()
bytearray(b'')
>>> x=bytearray(10)
>>> x
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
python 第二章 对象与类型的更多相关文章
- 简学Python第二章__巧学数据结构文件操作
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)
编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...
- javascript进阶课程--第二章--对象
javascript进阶课程--第二章--对象 学习要点 理解面向对象的概念 掌握对象的创建方法 掌握继承的概念和实现方法 基本概念 对象究竟是什么?什么叫面向对象编程? 对象是从我们现实生活中抽象出 ...
- javascript进阶教程第二章对象案例实战
javascript进阶教程第二章对象案例实战 一.学习任务 通过几个案例练习回顾学过的知识 通过案例练习补充几个之前没有见到或者虽然讲过单是讲的不仔细的知识点. 二.具体实例 温馨提示 面向对象的知 ...
- c#高级编程第七版 学习笔记 第三章 对象和类型
第三章 对象和类型 本章的内容: 类和结构的区别 类成员 按值和按引用传送参数 方法重载 构造函数和静态构造函数 只读字段 部分类 静态类 Object类,其他类型都从该类派生而来 3.1 类和结构 ...
- Python 第二章-列表和元组
第二章-列表和元组 2.0 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推. ...
- Java第二章----对象和类
从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对 ...
- s2第二章深入c#类型
S2第二章预习笔记 深入c# 数据类型 常用类型 java c# 举例 整形 int int 年龄 浮点型 float ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
随机推荐
- CentOS安装crontab及使用方法(转)
CentOS安装crontab及使用方法(转) 安装crontab:[root@CentOS ~]# yum install vixie-cron[root@CentOS ~]# yum ins ...
- nodejs之Buffer
Buffer是什么? 简单点理解,buff就是固定长度的uint8array.(es6已实现TypedArray). 由于是固定长度所以没有了splice,concat方法. 由于是固定类型所以没有了 ...
- Maven 私服安装和启动
在安装私服的时候容易碰到的两个问题,一个是安装时拒绝访问,另一个是安装完成后服务无法启动: 拒绝访问问题: 原因:没有以管理员身份运行 cmd 解决办法: 如果是 win7 的话,可以直接在 [运行- ...
- [LeetCode] MaximumDepth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- Struts创建流程
1.启动服务,加载web.xml 并实例化StrutsPrepareAndExecuteFilter过滤器 2.在实例化StrutsPrepareAndExecuteFilter的时候会执行过滤器中的 ...
- iOS 通过网络请求获取图片的下载歌曲
1.导入代理<NSURLConnectionDataDelegate> @interface ViewController ()<NSURLConnectionDataDelegat ...
- 【开发工具IDE】eclipse的web项目的tomcat安装部署问题
一.发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并 ...
- 我为什么鼓励工程师写blog
文/JoeyChen 工程师该怎样才能突破自己的能力瓶颈?写 blog! 工程师该怎样精进自己在职涯上所需要的能力?写 blog! 工程师该怎样才能保持学习与成长的动能?写 blog! 工程师该怎样才 ...
- Bond UVA - 11354(并查集按秩合并)
题意: 给你一张无向图,然后有若干组询问,让你输出a->b的最小瓶颈路. 解析: 应该都想过用prime的次小生成树做..但二维数组开不了那么大..所以只能用kruskal了.... #incl ...
- 【模考】2018.04.08 Connection
Description 给定一张N个点M条边的连通无向图,问最少需要断开多少条边使得这张图不再连通. Input 第一行两个整数N,M含义如题所示. 接下来M行,每行两个正整数x,y,表示x和y之间有 ...