`

Python引用类型和值类型的区别与使用解析

 
阅读更多

原文链接:http://www.pythontab.com/html/2017/pythonjichu_0714/1153.html

Python数据类型分为值类型和引用类型, 下面我们看下它们的区别:

值类型:

对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象
包含:字符串、元组、数值,本身不允许被修改

引用类型:

对象本身可以修改,
包含:列表、字典,本身允许修改

例子:

1
2
3
4
a = 11
print id(a)
a = 16
print id(a)

结果:

1
2
43525053L
57628312L

修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值

1
2
3
4
l = [1,2,3]
print id(l)
l[0] = 0
print id(l)

结果:

1
2
19775281L
19775281L

修改引用类型的值,因为listb的地址和lista的一致,所以也会被修改

一般只为了复制值,可以使用分片操作

1
listb = lista[:]

下面在单独看下python的值类型和引用类型

值类型:

包含:字符串、元组、数值,本身不允许被修改

引用类型:

包含:列表、字典,本身允许修改

1
2
3
a = 2
b = a
a = 3

修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值

1
2
3
lista = [1,2]
listb = lista
lista[0] = 3

修改引用类型的值,因为listb的地址和lista的一致,所以也会被修改

一般只为了复制值,可以使用分片操作

1
listb = lista[:]

总结

以上所述是小编给大家介绍的Python引用类型和值类型的区别与使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

 

分享到:
评论

相关推荐

    Python中 传递值 和 传递引用 的区别解析

    在Python编程语言中,理解传递值(值传递)和传递引用(引用传递)的区别对于编写高效且符合预期的程序是非常重要的。Python中的参数传递机制与一些其他语言(如C++或Java)中的机制不同,这导致了在传递变量时可能...

    Python 可变类型和不可变类型及引用过程解析

    在Python编程中,变量的类型可以分为可变类型和不可变类型两大类。理解这一概念对于掌握Python内存管理、函数参数传递以及数据结构的操作至关重要。 首先,要了解的是Python中的变量名与内存地址的关系。当在Python...

    Python源码剖析

    PyIntObject是Python实现整数类型的基础,它包含了整数值、引用计数等信息。文档中可能涵盖了整数的存储方式、运算效率优化,以及Python如何处理大整数(BigInt)等内容。 3. **字符串对象PyStringObject**:字符串...

    Python程序实例解析.ppt

    在上述讲解中,我们已经涵盖了Python程序实例解析的要点,包括温度转换的算法设计、Python的缩进规则、注释、变量命名、保留字以及赋值语句的使用。这些知识是Python初学者的基础,通过实践这些实例,我们可以更好地...

    Python:通用异常类型表

    Python提供了丰富的异常类型,这些异常被组织成一个层次结构,使得处理和捕获特定类型的错误更加方便。以下是对标题和描述中提到的“Python:通用异常类型表”的详细说明: 1. **BaseException**:所有异常的基类。...

    python学习笔记

    Python是一种广泛使用的高级编程语言,它以其简洁明了的语法和强大的功能而受到程序员的青睐。本学习笔记将深入探讨Python的动态类型系统、类型检查、多态性以及数字类型处理的相关知识点。 在Python中,变量没有...

    python bug清除手册-代码书写规范与基本使用.pdf

    - **单引号和双引号**:单引号和双引号在Python中基本上可以互换使用,它们用于创建单行字符串。例如: ```python s1 = 'Hello, world!' s2 = "Hello, world!" ``` - **三引号**:三引号主要用于创建多行字符...

    python面试题

    Python提供了三种类型的方法:静态方法、类方法和实例方法。 - **实例方法**通常带有`self`参数,用于处理特定实例的数据。 - **类方法**使用`cls`参数,主要用于处理类级别的数据,可以被类实例调用。 - **静态...

    python面向对象练习题.pdf

    - 在Python 3中,不再区分经典类和新式类,所有的类都被认为是新式类,并且默认继承自`object`类。 #### 八、面向对象优化代码示例 **原始代码:** ```python def exc1(host, port, db, charset, sql): conn = ...

    《Python程序设计》习题与答案python教材答案.pdf

    2. **基于值的内存管理**:Python使用引用计数和垃圾回收机制来管理内存,这意味着如果多个变量引用同一个值,它们实际上都指向内存中的同一个位置。当改变其中一个变量的值时,Python会创建一个新的对象,并更新...

Global site tag (gtag.js) - Google Analytics