python3可变与不可变数据类型
Python3中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Dictionary(字典)
- Tuple(元组)
- Set(集合)
我理解的可变就是当一个变量创建时,在内存中申请一块空间用于存放对象,这个被申请的内存空间地址中的对象是可以改变的。当对这个对象进行一系列的操作时,这个内存空间地址不会改变,只会增加或缩减。如果这个对象是不可变的,那么在对对象进行操作时,必须在内存中的另外一个地方重新申请一块区域来存放操作后的对象。而老的内存空间会被python的垃圾回收机制处理掉。
具体的python内存相关知识请参考:http://www.cnblogs.com/fujiangong/p/5978247.html
不可变数据类型:
Number(数字)、String(字符串)、Tuple(元组)
实例:
>>> x = 1
>>> y = x
>>> x,y
(1, 1)
#使用内置函数id查看x,y的内存空间地址,可以看到x,y指向的同一个内存空间地址
>>> id(x),id(y)
(1982197552, 1982197552)
#对变量x进行操作
>>> x += 1
#查看x,y的值,可看到x指向的对象已经改变
>>> x,y
(2, 1)
#再次查看x,y指向的内存空间地址,发现x指向的内存空间已经改变。这是因为变量x和变量y属于不可变数据类型:整数数字
>>> id(x),id(y)
(1982197584, 1982197552)
可变数据类型:
List(列表)、Dictionary(字典)
实例:
>>> lst = [1,2,3,4]
#查看lst的内存空间位置
>>> id(lst)
798098221256
#对lst进行添加操作
>>> lst.append(5)
>>> lst
[1, 2, 3, 4, 5]
#再次查看lst的内存空间,可以发现虽然lst指向对象的内容发生了改变,但是lst的内存空间地址并没有改变
>>> id(lst)
798098221256
python3可变与不可变数据类型的更多相关文章
- Python编程Day5——可变与不可变类型、数据类型整合
一.可变与不可变类型1.可变类原值型:只改变,但id不变,证明就是在改变原值,是可变类型2.不可变类型:值改变,但id也跟着改变,证明是产生了新的值,是不可变类型 x= print(id(x)) x= ...
- python的可变与不可变数据类型
<python的可变与不可变数据类型> python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其 ...
- Python3学习笔记03-基础数据类型
Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对 ...
- 关于:1.指针与对象;2.深浅拷贝(复制);3.可变与不可变对象;4.copy与mutableCopy的一些理解
最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/ ...
- 可变,不可变类型和hash
可变与不可变类型 截止到目前为止我们已经学过很多数据类型:数字类型.字符串类型.列表类型.元祖类型. 在python中,我们对数据类型还有另外一种分类方式,我们给数据类型分为可变数据类型和不可变数据类 ...
- JAVA不可变类与可变类、值传递与引用传递深入理解
一个由try...catch...finally引出的思考,在前面已经初步了解过不可变与可变.值传递与引用传递,在这里再次深入理解. 1.先看下面一个try..catch..finally的例子: P ...
- 可变、不可变数据类型和hash
一.可变和不可变数据类型 在python中,我们对数据类型除了分为数字类型.字符串类型.列表类型.元组类型.字典类型和集合类型外, 还有另外一种分类方式,我们给数据类型分为可变数据类型和不可变数据类型 ...
- python3从入门到精通之数据类型,布尔类型介绍
数据的类型 为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型的. Number(数字) int(整型) float(浮点型) complex(复数) bool(布尔) String( ...
- python基础之pip、.pyc、三元运算、进制、一切皆对象、可变与不可变类型
一.pip(下载工具==yum) 1.重点(必须掌握的) 列出已安装的包 pip list 安装要安装的包 pip install xxx 安装特定版本 pip install django==1.1 ...
- python 可变、不可变类型、深拷贝、浅拷贝理解
简介 python中数据分为可变类型,不可变类型.不同的数据类型影响着不同情况下的深浅拷贝. 下面则将简要介绍一下 可变类型 当某个数据的值发生改变时,它对应的内存地址不发生改变,常见的有列表.字典. ...
随机推荐
- IGeometry 中取指定的点
private static IGeometryCollection MakeMultiPoint(IGeometry geometry,int pointcount) { IGeo ...
- ActionScript接收socket服务器发送来的数据
原文地址:http://www.asp119.com/news/2009522181815_1.htm 从socket中接收数据的方法取决于你使用socket类型,Socket和XMLSocket都可 ...
- 课后习题 SPJ
CREATE TABLE S ( SNO char(2) primary key, SNAME varchar(20), STATUS char(4), CITY char(10) ); create ...
- svn server安装配置
安装平台:RHEL5 1.安装软件:httpd.subversion.mod_dav_svn 2.修改配置 修改/etc/httpd/conf.d/subversion.conf.eg: LoadMo ...
- Apache-Tika解析Word文档
通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理Word格式的文章,如下: package com.mengyao.tika.app; i ...
- Detect the Virus - ZOJ 3430(恶心的自动机)
题目大意:给你一些病毒的特征码,然后再给一些文本,判断每个文本有多少种病毒,不过给的字符串都是加密处理过的,给的每个字符串都有对应一个64以内的一个数(题目里面那个表就是),然后可以把这个64以内的这 ...
- 从XML文件乱码问题,探寻其背后的原理
出现应用程序读取XML文件乱码的场景: 加入xml文件以<?xml version="1.0" encoding="utf-8" ?> 格式的:如果 ...
- XCODE 代码行统计
find . -name "*.m" -or -name "*.h" -or -name "*.c" |xargs grep -v &quo ...
- Android使用DOM生成和输出XML格式数据
Android使用DOM生成和输出XML格式数据 本文主要简单解说怎样使用DOM生成和输出XML数据. 1. 生成和输出XML数据 代码及凝视例如以下: try { DocumentBuilderFa ...
- [Angular 2] Adding a data model
Instead of add todo as a string, we create a data model: export class TodoModel{ constructor( public ...