千家信息网

为什么说python一切都是变量

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"为什么说python一切都是变量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Pyt
千家信息网最后更新 2026年11月04日为什么说python一切都是变量

本篇内容介绍了"为什么说python一切都是变量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Python中具有挑战性的概念之一是如何创建和分配变量。在编程中,有时使用盒子的类比。每个框是一个变量,该框的内容是它的值。这不是一个很好的类比,而且正如我稍后将要展示的那样,这可能会带来很大的问题,尤其是在考虑使用Python时。相反,最好将变量名称想象为标签。它们可以放在盒子上,但不包含任何东西。框(一个对象)保存该值。贴纸只是一个标签。此外,在任何盒子上都可以放置多个贴纸。简而言之,我们对Python中的对象而不是它们的名称进行了更改。

两个有用的函数:id()和type()

在下面的示例中,我将探索Python如何与各种可变且不可变的对象进行交互。为了全面检查其行为,我将广泛使用id()和type()函数。首先,让我们看一下这两个函数,以便我们了解它们的输出。id()将一个对象作为参数,并返回其id(一个数字)。在底层,这实际上是内存地址(在CPython实现中),C在其中存储对象。我们可以比较不同名称的ID,以查看它们是否指向同一对象,因为每个对象都有唯一的ID。我们稍后再讨论,但是现在,使用id()的简单示例:

>>> a = 5 >>> id(a) 10105216 >>> b = 10 >>> id(b) 10105376

现在,来看一下type()。与id()一样,type()将对象作为参数,但返回对象的类类型而不是其ID。随着我们开始挑选不同类型的对象及其可变性/不变性,这将派上用场。再次,让我们看一个简单的例子:

>>> msg = 'hello' >>> type(msg)  >>> age = 10 >>> type(msg) 

现在我们对type()和id()有了基本的了解,让我们使用它们来开始探索Python中可变和不可变的对象。

可变对象

可变对象是可以在Python中更改的对象。它们比不可变对象要少得多,包括:列表,集合和字典。他们有一些有趣的行为,乍一看似乎有些混乱。让我们看一些我的意思的例子:

>>> list1 = [1, 2, 3] >>> list2 = list1 >>> id(list1) 140336099032264 >>> id(list2) 140336099032264 >>> list2.append(4) >>> list1 [1, 2, 3, 4]

在这里,我们创建了一个名为list1的列表,然后为该列表分配了另一个名称(list2)。

这两个名称都指向同一个对象,如它们的共享ID所示。我们通过调用名称list2附加列表,然后使用list1打印列表。它打印出我们的新列表。

为什么?创建list2时,我们没有创建另一个对象,我们只是创建了另一个名称,该名称指向与list1相同的对象。方法不作用于名称,它们作用于对象。因此,当我们键入:" list2.append

(4)"时,我们的意思是:"将4附加到list2指向的列表对象上"。如果我们想更改list2但不更改list1怎么办?好吧,我们必须先复制该列表。

>>> list1 = [1, 2, 3] >>> list3 = list1[:] >>> id(list1) 140336099032264 >>> id(list3) 140336098233352 >>> list3.append(4) >>> list1 [1, 2, 3]

我们复制了list1指向的对象,然后从该副本中创建了一个新对象。现在,当我们更改list3中的某些内容时,更改不会反映在list1中,因为我们没有更改同一对象。通过创建两个包含相同元素的列表可以证明同一件事。

>>> list1 = [1, 2, 3] >>> list2 = [1, 2, 3] >>> id(list1) 140397858622984 >>> id(list2) 140397851306184

每个元素(在这种情况下为整数)都是不可变的,但列表本身是可变的。我们可以根据需要添加,弹出和修改它们,并且不会对其他列表进行任何更改。对于不可变的对象,情况并非如此。

不变的对象

不可变的对象构成了我们将在Python中进行交互的大多数对象。它们包括字符串,整数,浮点数和元组之类的东西。让我们看一下最后一个示例,但是这次我们将使用两个字符串,而不是两个列表:

>>> string1 = "hello" >>> string2 = "hello" >>>id(string1) 140336098225712 >>>id(string2) 140336098225712

看到了么, string1和string2具有相同的ID,这意味着它们实际上是同一对象。怎么会这样 好吧,原因是因为字符串是不可变的。其他不可变对象也是如此:

>>> a = 5 >>> b = 5 >>> id(b) 10105216 >>> id(a) 10105216

现在,如果我们改变a的值,它的id应该改变

>>> a = 4 >>> id(a) 10105184

我们要做的是将我们的名字a放在一个新的int对象上。当我们重新分配一个指向不可变对象的名称时,这正是我们所做的。

函数中的可变和不可变对象

可变对象和不可变对象的属性使其具有不同的功能。尽管对可变对象的更改不在函数范围之内,但对不可变对象的更改则不存在。让我们看几个例子:

>>> def strFunc(oldString) ...     oldString = "goodbye" ...      >>> oldString = "hello" >>> strFunc(oldString) >>> print(oldString) hello

我们更新了函数内部的字符串,但退出时仍保留其旧值。请注意,没有返回语句。如果我们一直在返回字符串并打印该值,那将是另一回事了。现在,让我们尝试对可变对象执行相同的操作:

>>> def listFunc(oldList) ...     oldList[0] = 'goodbye' ... >>> oldList = ['hello'] >>> listFunc(oldList) >>> print(ListFunc[0]) goodbye

在这种情况下,我们将可变对象发送到函数中。然后,我们更新了列表的成员,现在该更新存在于函数范围之外。

"为什么说python一切都是变量"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

对象 可变 名称 函数 两个 指向 变量 字符 字符串 相同 内容 情况 不同 例子 实际 盒子 示例 分配 更新 东西 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 互联网的科技 互联网科技作文 汇久创客互联网科技 上海万想互联网科技 科技赋能互联网健康 广州新华互联网科技学校电竞方面 佛山市拉法互联网科技有限公司 科技互联网的核心竞争力 互联网第三次科技革命特征 伍佰万互联网科技怎么赚钱 互联网领先科技宣传片 浙南科技城互联网大厦招聘 广东鹅鹅鹅互联网科技有限公司 吉林省码上互联网科技电话 湖北辰鑫科技互联网 互联网科技的前景 北京品多多互联网科技有限公司 东风日产互联网科技公司叫什么 瑞安市蟠桃会互联网科技有限公司 重生之互联网科技帝国 互联网科技公司怎么样 互联网科技视频素材 互联网科技类展会 广西拼得多互联网科技有限公司 济南和联互联网科技有限公司 银川新华互联网科技学校地址 张召忠谈中国互联网科技 绵阳真晨互联网科技有限公司 东风日产互联网科技公司叫什么
0