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. 「实用」打造自我感觉非常漂亮的Mac终端

    背景 (今天我是一个美妆博主) 突然发现自己使用的iterm2终端样式有些朴素,为了让她看起来花枝招展的,我决定给她打扮打扮.毕竟每天面对她的时间比对象还多-- 效果对比 因为每个人的喜好都不一样,所 ...

  2. Intriguing Properties of Contrastive Losses

    目录 概 主要内容 广义对比损失 不同的先验 不同的权重比 Feature Suppression DigitOnImageNet dataset RandBit dataset 代码 [Chen T ...

  3. matplotlb 进阶之Styling with cycler

    目录 cycler 教程 函数链接 matplotlib教程学习笔记 cycler 在教程开始之前,我们需要了解cycler模块 from __future__ import print_functi ...

  4. rapidjson解析与构造实例

    void rapidjson1(){ rapidjson::StringBuffer s; rapidjson::Writer<rapidjson::StringBuffer> write ...

  5. CS5263|DP转HDMI转换器芯片|CS5263芯片说明

    CS5263是一款高性能DP1.4到HDMI2.0b功能芯片,设计用于将DP1.4源连接到HDMI2.0b接收器.CS5263集成了DP1.4兼容接收机和HDMI2.0b兼容接收机发射器.DP接口包括 ...

  6. CS5265/CS5267设计替代VL102+PS176 Typec转HDMI2.0音视频芯片

    目前USB TYPEC转HDMI2.0转换方案或者TYPEC转HDMI2.0转换器方案都是用PS176加一个PD芯片来实现,其中VL102是一颗PD协议芯片,PS176是一款DP转HDMI2.0视频解 ...

  7. 基于Spring MVC + Spring + MyBatis的【物流系统 - 公司信息管理】

    资源下载:https://download.csdn.net/download/weixin_44893902/45601768 练习点设计:模糊查询.删除.新增 一.语言和环境 实现语言:JAVA语 ...

  8. 编写Java程序,使用List集合和Map集合输出 市和区

    如图: 代码: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java ...

  9. k8s env、configmap、secret外部数据加载配置

    K8s提供了多种外部数据注入容器的方式,今天我们主要学习环境变量.ConfigMap以及Secret的使用和配置. 环境变量 在docker项目中,对一个容器添加环境变量可以在容器创建时通过-e EN ...

  10. BrowserSync 本地服务器的起用

    最简单粗暴的方法:进入项目根目录,执行命令browser-sync start --server --files "**"     监听所有