Python引用类型和值类型的区别与使用解析
Python数据类型分为值类型和引用类型, 下面我们看下它们的区别:
值类型:
对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象
包含:字符串、元组、数值,本身不允许被修改
引用类型:
对象本身可以修改,
包含:列表、字典,本身允许修改
例子:
a = 11 print id(a) a = 16 print id(a)
结果:
43525053L 57628312L
修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值
l = [1,2,3] print id(l) l[0] = 0 print id(l)
结果:
19775281L 19775281L
修改引用类型的值,因为listb的地址和lista的一致,所以也会被修改
一般只为了复制值,可以使用分片操作
listb = lista[:]
下面在单独看下python的值类型和引用类型
值类型:
包含:字符串、元组、数值,本身不允许被修改
引用类型:
包含:列表、字典,本身允许修改
a = 2 b = a a = 3
修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值
lista = [1,2] listb = lista lista[0] = 3
修改引用类型的值,因为listb的地址和lista的一致,所以也会被修改
一般只为了复制值,可以使用分片操作
listb = lista[:]
总结
以上所述是小编给大家介绍的Python引用类型和值类型的区别与使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
浅谈python 四种数值类型(int,long,float,complex)
Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据类型存储数值.他们是不可改变的数据类型,这意味着改变数字数据类型的结果,在一个新分配的对象的值. Number对象被创建,当你给他们指派一个值.例如: var1 = 1 var2 = 10 您也可以删除数字对象的参考,使用del语句. del语句的语法是: del var1[,var2[,var3[
-
Python引用类型和值类型的区别与使用解析
Python数据类型分为值类型和引用类型, 下面我们看下它们的区别: 值类型: 对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象 包含:字符串.元组.数值,本身不允许被修改 引用类型: 对象本身可以修改, 包含:列表.字典,本身允许修改 例子: a = 11 print id(a) a = 16 print id(a) 结果: 43525053L 57628312L 修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值 l = [1,2,3] print id(l)
-
c# 引用类型与值类型的区别详解
解析:CLR支持两种类型:值类型和引用类型.用Jeffrey Richter(<CLR via C#>作者)的话来说,"不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能问题".这就要求我们正确理解和使用值类型和引用类型.值类型包括C#的基本类型(用关键字int.char.float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型):而引用类型包括类(用class关键字声明的类型)和委托(用delegate关键字声明的特
-
c# 引用类型和值类型
CLR支持两种类型:引用类型和值类型. 引用类型总是从托管堆上分配的. c#中的New操作符返回对象的内存地址. 引用对象的注意点: 1.内存从托管堆中分配 2.堆上分配对象,有一些额外的操作,影响一些性能的 3.从托管堆中分配一个对象时,可能强制执行一次垃圾回收. CLR中的值类型是轻量级的.不需要提领一个指针,不需要垃圾回收,可以减少垃圾回收的次数. 在CLR中一般称为"类"的都是引用类型,所有的值类型都称为结构或者枚举. 所有的结构都是抽象类ValueType的直接派生类.Val
-
PHP中引用类型和值类型功能与用法示例
本文实例讲述了PHP中引用类型和值类型功能与用法.分享给大家供大家参考,具体如下: PHP中的四种简单类型和复杂类型array都是值类型.同类型间赋值传递的是值,即创建一个副本给新变量. 例如: $int1 = 123; $int2 = $int1;//直接传递的是值,只是做了一个叫int1的副本叫int2 $int2 = 456; echo $int1;//输出 123 echo $int1 === $int2;//为假 $int1 = 123; $int2 = &$int1;//取地址符,传
-
C#引用类型和值类型的适用场合和区别
1.值类型 值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型. 值类型的变量直接存储数据,分配在托管栈中.变量会在创建它们的方法返回时自动释放. 所有的值类型都是密封(seal)的,所以无法派生出新的值类型. 2.引用类型 引用类型包括:数组,用户定义的类.接口.委托,object,字符串,null类型,类. 引用类型的变量持有的是数据的引用,数据存储在数据堆,分配在托管堆中,变量并不会在创建它们的方法结束时释放内存,它们所占用的内存会被CLR中的垃圾回收机制释放. C
-
浅谈PHP与C#的值类型指向区别的详解
PH和C#的值拷贝区别(如果哪里说的不对,还望指出!)$a = 2;$b = $a; //在php中这里把b的地址指向a 所以b此时也等于2:区别就在这$a = 5; //这时php中a的值又重新写值,所以php核心这时才会把b重新分配一个地址,然后把a原先的值进行拷贝.这就是 写时拷贝 原理 , 也就是说,除非进行写操作,否则值类型就是指向一个地址.而C#中.值类型的复制.永远都是新建一个地址 如:int a = 2;int b = a; //此时不管有没有进行a的二次写入..NET都会把
-
C#引用类型和值类型的介绍与实例
复制代码 代码如下: static void Main(string[] args) { //值类型 bool b1 = true; //栈中划一块内存,名字为b1,类型为bool,值为true Console.WriteLine("b1="+b1); // b1 =true bool b2 = b1; //栈中划一块内存,名字为b2,类型为bool,和b1的值一样为ture
-
C#中值类型和引用类型解析
在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为.如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必要的异常.很多人就是因为没有弄清楚这两个概念从而在编程过程中遇到了很多问题,在这里博主浅谈对值类型和引用类型的认识. 首先从概念上看,值类型直接存储其值,而引用类型存储对其值的引用.从而这两种类型存储在内存的不同地方. 其次从内存空间上看,值类型是在栈中操作,而引用类型则在堆中分配存储单元. 栈在编译的时候就分配好内存空间,在代码中有栈的
-
C#基础入门之值类型和引用类型的区别详析
目录 一.值类型和引用类型的区别 1.赋值时的区别 2.内存分配的区别 3.来自继承结构的区别 二.总结 一.值类型和引用类型的区别 .NET的类型可以分为两类:值类型和引用类型.这两种类型各有特点,即使它们都继承自System.Object,并且有装箱和拆箱等操作确保两种类型可以方便地交互,但是理解值类型和引用类型将有助于程序员编写出高效的代码,相反的,在不理解值类型和引用类型的情况下,程序员很容易编写出可以正确执行但性能较差的代码. 所有.NET的类型都可以分为两类:值类型和引用类型.最简单
-
C#中值类型和引用类型的区别
一.值类型和引用类型的区别 .NET的类型可以分为两类:值类型和引用类型.这两种类型各有特点,即使它们都继承自System.Object,并且有装箱和拆箱等操作确保两种类型可以方便地交互,但是理解值类型和引用类型将有助于程序员编写出高效的代码,相反的,在不理解值类型和引用类型的情况下,程序员很容易编写出可以正确执行但性能较差的代码. 所有.NET的类型都可以分为两类:值类型和引用类型.最简单也最明确的一个区分标准是:所有的值类型都继承自System.ValueType(System.ValueT
随机推荐
- jquery加载页面的方法(页面加载完成就执行)
- AngularJS读取JSON及XML文件的方法示例
- iOS实现去除html标签的方法汇总
- Spring集成MyBatis完整实例(分享)
- mac 系统下使用 chmod 命令修改文件权限
- 详解Java Project项目打包成jar,并生成exe文件
- 举例讲解iOS中延迟加载和上拉刷新/下拉加载的实现
- ajax.net对数据库的插入实例
- 图片自动更新(说明)
- 详解ASP.NET中Session的用法
- ubuntu16.4下用jexus部署ASP.NET Core环境
- Symfony2框架学习笔记之HTTP Cache用法详解
- Python递归函数定义与用法示例
- javascript实现消灭星星小游戏简单版
- 动态生成的IFRAME,设置SRC时的问题解决分析
- 金山反病毒20041217_日报
- CentOS下SSH无密码登录的配置文件
- linux 安装pypy , virtualenv及使用方法
- c语言解析bmp图片的实例
- C++中new的越界访问问题