0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python-变量的引用与可变

汽车电子威廉希尔官方网站 来源:程序猿知秋 作者: 程序猿知秋 2023-02-16 15:15 次阅读

引用

概念

  • **变量 数据 **都是保存在内存中的
  • Python 中,函数参数传递和返回值 都是靠 引用 传递的
  • **变量 **和 数据是分开存储的
  • 数据 保存在内存中的一个位置
  • 变量 中记录数据的地址,就叫 引用
  • 使用** id() ** 函数可以查看变量中保存数据所在的 内存地址

注: 如果变量已经被定义,当给一个变更 重新赋值的时候,本质上是 修改了数据的引用

**示例

**

a=1
print(id(a))
print(id(1))


b=a
print(id(b))


a=2
print(id(a))

输出结果:从这里面可以看出 前三个的内存地址是一样的

图片

图片

**函数的参数传递与返回值的引用

**

def test(num):
  print("传递的值是:%d,内存地址是:%d" %(num,id(num)))
  result="test"
  print("返回的值是:%s,内存地址是:%d" %(result,id(result)))
  return result




a=1
print("需要传递的参数的值是:%d,内存地址是:%d"%(a,id(a)))


ss=test(a)
print("调用函数获取的返回值是:%s,内存地址是:%d" %(ss,id(ss)))

**输出结果

**

图片

结论:从结果中可得知,在调用函数时,传入的变量,实际上是将变量的引用内存地址 传递进去了。函数在返回时,同样是将变量对应的 引用 返回出来了

可变和不可变类型

  • 不可变类型,即内存中的数据不允许被修改
    • 数字类型:int 、bool、float、complex、long
    • 字符串 str
    • 元组 tuple
  • 可变类型,即内存中的数据可以被修改
    • 列表 list
    • 字典 dict
    • 集合 set

示例

# 不可变数据类型
a=1
print("内存地址是:%d" %id(a))
a=2
print("内存地址是:%d" %id(a))




#可变数据类型
b=[1,2,3]
print("内存地址是:%d" %id(b))
b.append(4)
print("值是:%s,内存地址是:%d" %(b,id(b)))


#如果重新用 = 赋值,则会新建一块内存地址
b=[]
print("新内存地址是:%d" %id(b))

输出结果

图片

结论:

  • 可变类型的数据变化,是通过方法来 实现的
  • 如果给一个可变类型的变量,赋值了一个新的数据,引用的地址则会不同

**哈希(hash)

**

  • Python 中内置有一个名字叫做 hash() 的函数
    • 接收一个 不可变类型 的数据作为参数
    • 返回 结果是一个整数
  • 哈希是一种算法,其作用就是提取数据的特征码(类似指纹)
    • 相同的内容 得到 相同的结果
    • 不同的内容 得到 不同的结果
  • 在 Python 中,设置字典的键值对时,会首先对 key 进行 hash ,用来决定如何在内存中保存字典的数据,以方便 后续 对字典的操作:增、删、改、查
    • 键值对的 key 必须是不可变类型的数据
    • 键值对的 value 可以是任意类型的数据
# 对同一个不可变的数据类型,hash 两次,得到的结果是一样的
print(hash("123"))
print(hash("123"))

输出结果

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62576
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28361
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84634
收藏 人收藏

    评论

    相关推荐

    python环境变量的配置pip

    Python环境变量的配置和使用是每个Python开发者都需要了解和掌握的基本技能之一。在本文中,我们将详细介绍如何正确配置Python环境变量
    的头像 发表于 12-15 15:41 2428次阅读

    请问python-树莓派如何通过按键控制步进电机正反转?

    步进电机驱动原理是什么?python-树莓派如何通过按键控制步进电机正反转?
    发表于 10-09 08:45

    python-控制khr3hv-master机器人

    python-控制khr3hv机器人,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-22 15:40 2次下载

    python环境变量设置

    安装python之后,我们往往面临这样一个问题,在命令行输入“python”,竟然出错,难道是没有安装成功吗?非也,其实是你的系统环境变量没有设置好。今天,小编就来带大家学学python
    发表于 11-20 11:47 2364次阅读
    <b class='flag-5'>python</b>环境<b class='flag-5'>变量</b>设置

    Python的常量与变量基础知识详解

    Python是一门强类型的动态语言。 字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的。 变量
    发表于 12-14 05:31 1814次阅读

    python设置环境变量

    我们想要运行python,需要安装Python,还要设置一些环境变量1,此电脑,右键属性2、高级系统设置-> 环境变量3、在系统变量中找到p
    发表于 11-10 14:49 890次阅读

    Python私有变量的定义方法

    通过在类中定义接口,实现私有变量引用、读取和修改。除了Python私有变量是使用“_”定义之外,还有两种特殊变量,分别是:1.  _xx 
    发表于 02-13 16:49 1664次阅读

    Python-无处不在的变量

    Python中,每个变量在使用前都必须赋值,变量赋值以后,该变量才会被创建
    的头像 发表于 02-16 14:51 573次阅读

    Python-列表

    Python中,所有 非数字型变量 都支持以下特点
    的头像 发表于 02-16 14:58 623次阅读
    <b class='flag-5'>Python-</b>列表

    Python-局部变量与全局变量

    局部变量是在函数内部定义的变量,只能在函数内部使用,函数执行结束后,函数内部的局部变量会被系统回收,不同的函数,可以定义相同名称的局部变量,相互之间没有任何关联
    的头像 发表于 02-16 15:16 891次阅读
    <b class='flag-5'>Python-</b>局部<b class='flag-5'>变量</b>与全局<b class='flag-5'>变量</b>

    浅析python变量类型

    python不需要事先声明变量python变量类型是在运行过程中自动决定的,不需要代码声明类型。
    的头像 发表于 03-10 10:11 806次阅读
    浅析<b class='flag-5'>python</b>的<b class='flag-5'>变量</b>类型

    如何配置Python环境变量

    配置Python环境变量是在安装Python解释器后的一项重要步骤,它允许您在任何位置都可以通过命令行或脚本运行Python解释器,使Python
    的头像 发表于 04-14 12:16 2w次阅读

    结构体成员变量引用方法123

    这里采用的是常用的typedef关键字进行定义结构体类型,可以看到student_t这种数据类型里面有4个成员变量,分别是学号、姓名、分数、年龄,这些成员变量既然是变量就应该满足变量
    的头像 发表于 07-08 14:45 2657次阅读
    结构体成员<b class='flag-5'>变量</b>的<b class='flag-5'>引用</b>方法123

    Python可变对象真的不可变

    在日常的学习和工作中,经常会遇到"不可变对象"的问题,但是随着接触Python这门语言的时间越来越多,遇到的坑越来越奇怪。我不禁产生了一个疑问:不可变对象真的不可变吗? 我们知道元组就
    的头像 发表于 11-03 11:48 535次阅读
    <b class='flag-5'>Python</b> 不<b class='flag-5'>可变</b>对象真的不<b class='flag-5'>可变</b>吗

    python变量命名规则

    Python是一种高级编程语言,广泛应用于软件开发、数据分析和科学计算等领域。在Python中,变量是用来存储数据的容器,它们具有名称以及与之关联的值。然而,变量的命名并不是随意的,而
    的头像 发表于 11-23 15:44 1387次阅读