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的垃圾回收机制 ...
随机推荐
- 有一个集合,判断集合里有没有“world”这个元素,如果有,添加“javaee”
// 有一个集合,判断集合里有没有“world”这个元素,如果有,添加“javaee” List list = new ArrayList(); list.add("world") ...
- oracle 关于表数据delete 后如何恢复
今天在PL/SQL中操作不小心删掉了某个表的部分数据,这可吓坏了本猿:于是悄悄的打开电脑,赶紧找度娘帮忙.经过度娘的小爬虫帮助,几分钟就把数据恢复了. 那么表数据delete掉后怎么恢复呢? 用fla ...
- 【JavaScript】JAVA-input如何占满整个td
如果使用下面这种方式,不会出现占满效果 <tr> <td colspan="2"> <input width="90%" alig ...
- 苹果手机连wifi跳不出来登录网页解决办法
1.点开要连接wifi后面的小叹号“!”,打开“自动登录” 2.打开设置,关闭SAFARI的“阻止弹窗” 3.重新连接wifi
- BZOJ4883 棋盘上的守卫(环套树+最小生成树)
容易想到网络流之类的东西,虽然范围看起来不太可做,不过这提供了一种想法,即将行列分别看做点.那么我们需要找一种连n+m条边的方案,使得可以从每条边中选一个点以覆盖所有点.显然每个点至少要连一条边.于是 ...
- 【刷题】BZOJ 4349 最小树形图
Description 小C现在正要攻打科学馆腹地------计算机第三机房.而信息组的同学们已经建好了一座座堡垒,准备迎战.小C作为一种高度智慧的可怕生物,早已对同学们的信息了如指掌. 攻打每一个人 ...
- 【BZOJ3122】随机数生成器(BSGS,数论)
[BZOJ3122]随机数生成器(BSGS,数论) 题面 BZOJ 洛谷 题解 考虑一下递推式 发现一定可以写成一个 \(X_{i+1}=(X_1+c)*a^i-c\)的形式 直接暴力解一下 \(X_ ...
- 《Java程序设计》第7周学习总结 20165218 2017-2018-1
20165218 2017-2018-1 <Java程序设计>第7周学习总结 教材学习内容总结 JDBC与MySQL数据库 数据库的功能:数据的存储.查询.修改.安全 MySQL:数据库: ...
- Linux系统启动详解(一)
本篇主要以Centos为例,讲述整个Linux系统启动过程,包括了grub引导,initramfs流程,/sbin/init执行rc.sysinit及rc的大体流程. 另外,本篇有一个实例来说明,将整 ...
- 【bzoj3589】动态树
Portal --> bzoj3589 Description 给你一棵\(n\)个节点的树,总共有\(q\)次操作,每次操作是以下两种中的一种: 操作\((0,x,delta)\):给以\(x ...