Python可变对象和不可变对象详解

Python是一门非常强大的编程语言,具有很多独特的特性。其中一个特性就是Python中有可变对象和不可变对象的概念。对于初学者来说,可能不太理解这个概念,本篇文章旨在从不同的角度对Python可变对象和不可变对象进行详细阐述。

一、Python对象

在Python中,一切皆为对象。任何一个值都可以看作是一个对象。数值、字符串、列表、元组等常见的数据类型都是对象。

# 例子1
a = 1
b = "hello"
c = [1, 2, 3]
d = (1, 2, 3)

在上面的例子中,a、b、c、d都是Python对象。

二、可变对象和不可变对象

1. 不可变对象

不可变对象是指一旦创建就不能修改其值的对象。比较常见的不可变对象有数字、字符串、元组等。

# 例子2
a = 10
b = "hello world"
c = (1, 2, 3)

在上面的例子中,a、b、c都是不可变对象。

2. 可变对象

可变对象是指其值可以被修改的对象。比较常见的可变对象有列表、字典等。

# 例子3
a = [1, 2, 3]
b = {"name": "Tom", "age": 18}

在上面的例子中,a、b都是可变对象。

三、Python对象的赋值和传递方式

1. 赋值

当我们将一个对象赋给一个变量时,变量名就成为了一个指向该对象的引用。如果赋值的是不可变对象,那么该变量仅仅是将该对象的值复制给该变量,而不是指向该对象本身。如果赋值的是可变对象,那么该变量就会指向该对象本身。

# 例子4
a = 10
b = a

在上面的例子中,b是指向a所指向的对象10的引用。

# 例子5
a = [1, 2, 3]
b = a
b[0] = 4
print(a) #[4, 2, 3]
print(b) #[4, 2, 3]

在上面的例子中,a和b都指向同一个列表对象,因此修改b的同时,a也会发生改变。

2. 传递方式

Python中的参数传递都是按引用传递,这个引用就是指向一个对象的指针。

当参数是不可变对象时,相当于传递的是该对象的值。函数内部对参数的修改不会影响到函数外部传递的变量。

# 例子6
def func(a):
    a += 1
    print(a)
b = 1
func(b) #2
print(b) #1

当参数是可变对象时,函数内部对参数的修改会影响到函数外部传递的变量。

# 例子7
def func(a):
    a.append(4)
    print(a)
b = [1, 2, 3]
func(b) #[1, 2, 3, 4]
print(b) #[1, 2, 3, 4]

在上面的例子中,虽然b在函数内部被修改了,但是函数外部的b也发生了改变。

四、总结

Python中有可变对象和不可变对象的概念。不可变对象一旦创建就不能修改其值,比较常见的是数字、字符串、元组等。可变对象的值可以被修改,比较常见的是列表、字典等。Python中的参数传递都是按引用传递,当参数是不可变对象时,相当于传递的是该对象的值;当参数是可变对象时,函数内部对参数的修改会影响到函数外部传递的变量。

原创文章,作者:ECEVT,如若转载,请注明出处:https://www.506064.com/n/369290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ECEVTECEVT
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:01

相关推荐

  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论