python中

可变类型:

  • 列表 list
  • 字典 dict

不可变类型:

  • 数字型:int、float、complex、bool、long
  • 字符型 str
  • 元组 tuple

id(i):通过id查看变量的内存地址

引用

  在Python中,变量也称为:对象的引用。变量存储的就是对象的地址

  变量位于:栈内存

  对象位于:堆内存

Python是动态类型语言

  变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。

Python是强类型语言

  每个对象都有数据类型,只支持该类型支持的操作。

下面通过代码来比较一下区别。定义变量之后打印出对应的内存地址。

i = 2
print(id(i)) # id:140713329648304 j = 2
k = 2
print(id(j)) # id:140713329648304
print(id(k)) # id:140713329648304 i = 3
print(id(i)) # id:140713329648336

我们发现,当创建 i=2,j=2,k=2时,他们的内存地址都是相同的。

它们内存的分配其实是如图的:

当我给i赋新的值3的时候,其实是给了i一个新的内存地址,这个地址的值对应堆内存中一个新的对象,

可见,即时现在i的值变等于3,原来的对象还是存在的,i的改变的并不是因为对象的值改变了,而是i引用了一个新的对象,因此我们说int是不可变类型。

a = [1, 2, 3]
print(id(a)) # id:2479232279176 b = [1, 2, 3]
print(id(b)) # id:2479232279240 a.append(88)
print(id(a)) # id:2479232279176

可变类型:在使用append方法后,变量的地址没有改变,它修改的是堆内存中对应id地址上的值。

当然,再新建一个对象赋值的时候,即使值是一样的,它一样会改变变量的地址指向。

Python初学笔记之可变类型、不可变类型的更多相关文章

  1. Python初学笔记之字符串

    一.字符串的定义 字符串是就一堆字符,可以使用""(双引号).''(单引号)来创建. 1 one_str = "定义字符串" 字符串内容中包含引号时,可以使用转 ...

  2. Python学习笔记(二):字符串类型

    在上一篇随笔(https://www.cnblogs.com/g-qiang/p/10448813.html)中,说到 Python 有六种标准数据类型,而数字类型和字符串类型又是其中基本的数据类型. ...

  3. python 初学笔记 (一)

    初学python第一天,希望自己真正了解计算机语言,并且做出成效. 写下学习笔记,记录学习进度,娱乐学习,不断成长. python详细介绍: python是什么?运用到哪里?有哪些在使用它? pyth ...

  4. Python初学笔记

    一.安装:直接通过软件管理程序,搜索Python,安装:安装过程中自定义路径,有个选项类似“add Python3.5 to Path”,勾选后便可以在cmd命令窗口,通过输入Python,启动Pyt ...

  5. Python初学笔记列表&元组&字典

    一.从键盘获取 1 print("请输入") 2 username = input("姓名:") 3 age = input("年龄:") ...

  6. Python 初学笔记(转)

    >>> print "isn't that grand"isn't that grand #不需要转义的#为了让文字符扩展到多行,可以在一行的末尾使用反斜线符号, ...

  7. python初学笔记(三)

    Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节 (byte),所以,一 ...

  8. python初学笔记(二)

    注释: 任何时候,我们都可以给程序加上注释.注释是用来说明代码的,给自己或别人看,而程序运行的时候,Python解释器会直接忽略掉注释,所以,有没有注释不影响程序的执行结果,但是影响到别人能不能看懂你 ...

  9. Python复习笔记(一)高级变量类型

    目标 列表元组 字典 字符串 公共方法 变量高级 01. 列表 02. 元组 03. 字典 04. 字符串 1)判断类型 - 9 2) 查找和替换 - 7 3) 大小写转换 - 5 4) 文本对齐 - ...

随机推荐

  1. Shortest Path(hdu5636)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...

  2. 为什么别人的 WordPress 网站那么快?

    越来越多的人使用 WordPress 来搭建网站了,W3techs 最新数据统计显示[1],截止到2021年11月3日,全网有43.0%的网站都是基于WordPress 搭建的.那么问题来了,为什么别 ...

  3. [opencv]KAZE、AKAZE特征检测、匹配与对象查找

    AkAZE是KAZE的加速版 与SIFT,SUFR比较: 1.更加稳定 2.非线性尺度空间 3.AKAZE速度更加快 4.比较新的算法,只有Opencv新的版本才可以用 AKAZE局部匹配介绍 1.A ...

  4. nssm常用命令(在Windows系统下安装服务的工具)

    nssm install servername //创建servername服务 nssm start servername //启动服务 nssm stop servername //暂停服务 ns ...

  5. 编写Java程序_输入三个整数x,y,z,请把这三个数由小到大输出,请写出实现代码。(3种方法)

    要求说明: 输入三个整数x,y,z,请把这三个数由小到大输出. 实现代码: 第1种方法: import java.util.Scanner; public class xyzMaxMin{ publi ...

  6. Python学习笔记:利用pd.get_dummies实现哑变量编码

    一.理论介绍 虚拟变量(dummy variable)也叫哑变量,是一种将多分类变量转换为二分变量的一种形式. 如果多分类变量有k个类别,则可以转化为k-1个二分变量. 需要有一个参照的类别. 在非线 ...

  7. 访问局域网内其他主机的VMware虚拟机上的mysql数据库和redis缓存

    上一篇写了访问局域网内其他主机的虚拟机上的项目 ,现在说说访问局域网内其他主机的虚拟机上的数据库和缓存 博主使用的linux是Ubuntu16.04: 一.安装数据库和缓存 这里连接的数据库和缓存以m ...

  8. 初识python: flush 实现进度条打印

    通过flush(强制刷新)实现,类似进度条打印: #!/user/bin env python # author:Simple-Sir # time:20180918 #打印进度条 import sy ...

  9. antd-vue中给table表格整行加点击事件

    <a-table :columns="columns" :dataSource="data" :loading="loading" : ...

  10. Linux上天之路(八)之用户和组

    主要内容. 用户创建,删除,修改 密码及密码文件 组创建,删除,修改 组密码及组配置文件 相关文件 Linux用户分类 超级管理员: UID为0 root用户拥有至高无上的命令,root用户不能改名 ...