【Python】变量的引用

  • 🚩 WRITE IN FRONT 🚩       

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量7w+、个人社区人数累计4w+、全网访问量100w+ 🏅
  • 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
  • 📑 创作时间:2022 年 4 月 22 日 📅
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:【Python】系列_謓泽的博客📃
  • 🙌 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩

变量的引用

        变量 和 数据 都是保存在 内存 当中的。

        🍅计算机当中所有的数据都是必须要放在内存当中的,不同类型的数据占用的字节数不一样。

        在 Python 当中函数的参数传递以及返回值都是靠引用来进行传递的。

引用的概念

在 Python 当中......

⒈变量和数据是分开存储的。

🍅程序就可以通过变量名来访问对应的内存地址『数据类型分配一定大小的内存空间』

⒉数据保存在内存中的一个位置。

⒊变量中保存着数据在内存中的地址。

⒋变量中记录数据的地址,就叫做是引用

⒌id()函数可以查看变量中保存数据所在的内存地址。

注意→如果变量已经被定义了的话,当给一个变量赋值的时候,本质上是修改数据的引用。

  • Ⅰ:变量不再对之前的数据进行引用。
  • Ⅱ:变量改为对新赋值的数据进行引用。

用id()函数查看int当中的内存地址,示例代码如下↓

num = 123456
print(id(num))
print(id(123456))
# 变量当中的值与数据一样那么内存地址也同

运行结果🖊

2176464156944

2176464156944

拓展:在编写程序的时候我们可以养成一个好的习惯,看到赋值语句,我们可以把注意力首先放到等号的右侧当中。

调用函数传递实参 

示例代码如下↓

def test(num):print("在函数内部%d对应的内部地址是%d" % (num,id(num)))a = 10
print("变量保存数据的地址是%d" %(id(a)))
test(a)

运行结果🖊

变量保存数据的地址是3078915779152
在函数内部10对应的内部地址是3078915779152

注:形参的值传递到实参它们的值是相等的,所以地址也是相等的。

变量引用

变量引用代码如下示例↓

a = 10
print("第一次:%d" % a)
a = 20
print("第二次:%d" % a)
b = 5
a = b
print("第三次:%d" % a)

运行结果🖊

第一次:10

解释→定义一个整形变量a,并且赋值为1。
第二次:20

解释→将变量a赋值给20。
第三次:5

解释→定义一个整形变量b,并且赋值为5,再将b的值赋值给a。

函数的参数和返回值的传递

在python当中函数的实参和返回值都是靠变量的引用来进行传递的,示例代码如下↓

def test(num):passprint("test函数内部当中a变量的值[%d]和数据的地址[%d]" % (num,id(num)))
a = 20
# id()查看数据的地址
print("a变量的值[%d]以及变量当中保存数据的地址是[%d]" % (a,id(a)))
# 调用test函数
test(a)

运行结果🖊

        a变量的值[20]以及变量当中保存数据的地址是[2770576042896]
        test函数内部当中a变量的值[20]和数据的地址[2770576042896]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/502603.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-回顾经典AlexNet网络:山高我为峰

深度学习-回顾经典AlexNet网络之山高我为峰 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰&#x…

Unity游戏项目中的优化之摄像机视锥体剔除优化

在项目中一个完成的游戏场景一般都会有成千上百的物体,假如都去让GPU全部渲染一遍,那带来的消耗其实是挺大的,很多不在摄像机范围内的物体其实没有必要去渲染,尽管GPU自带剔除,但是如果从CPU阶段就提交给GPU指令——哪…

解锁AI大模型秘籍:未来科技的前沿探索

在当今这个技术高速发展的时代,人工智能(AI)已经成为了我们生活中不可或缺的一部分。从简单的个人助手到复杂的数据分析和决策制定,AI的应用范围日益扩大,其目的是为了让我们的生活变得更加智能化。本文旨在探讨AI如何…

c++数据结构算法复习基础-- 2 -- 线性表-单链表-常用操作接口-复杂度分析

1、链表 特点 每一个节点都是在堆内存上独立new出来的, 节点内存不连续优点 内存利用率高,不需要大块连续内存 插入和删除节点不需要移动其它节点,时间复杂度O(1)。 不需要专门进行扩容操作缺点 内存占用量大,每一个节点多出存…

【HTML】HTML基础4(超链接标签)

目录 超链接通用标签 链接分类及其使用 1.外部链接 ​编辑 2.内部链接 3.空链接 4.下载链接 超链接通用标签 <a href"跳转目标" target"目标窗口的弹出方式">文本或者图像</a> 用到的是&#xff1a;<a></a>双标签 其中 1. he…

微软开源 SBOM 生成工具:sbom-tool下载及使用详解

github地址 GitHub - microsoft/sbom-tool: The SBOM tool is a highly scalable and enterprise ready tool to create SPDX 2.2 compatible SBOMs for any variety of artifacts.The SBOM tool is a highly scalable and enterprise ready tool to create SPDX 2.2 compatib…

LeetCode_Java_动态规划系列(2)(题目+思路+代码)

131.分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff1a;[["a&qu…

MySQL 多表查询 连接查询 外连接

介绍 MySQL 多表查询 连接查询 内连接 外连接分为两种&#xff0c;左外和右外连接&#xff0c; 左外&#xff1a;相当于查询表1(左表)的所有数据 包含 表1和表2交集部分的数据,完全包含左表的数据 右外&#xff1a;相当于查询表2(右表)的所有数据 包含 表1和表2交集部分的数据…

DDD设计学习

之前在研究生项目中遇到的问题便是&#xff1a; 随着业务需求的不断改变&#xff0c;需要在原有项目代码中不断进行修改&#xff0c;导致代码不断累积。 那如何构建高质量应用&#xff0c;那就要遵循三大设计原则&#xff1a; 1.单一职责原则&#xff1a;一个类只负责单一的职…

frp 内网穿透 linux部署版

frp 内网穿透 linux部署版 前提安装 frp阿里云服务器配置测试服务器配置访问公网 前提 使用 frp&#xff0c;您可以安全、便捷地将内网服务暴露到公网&#xff0c;通过访问公网 IP 直接可以访问到内网的测试环境。准备如下&#xff1a; 公网 IP已部署好的测试服务 IP:端口号阿…

Harbor 的安装及使用

Harbor 安装官网手册&#xff1a; https://goharbor.io/docs/2.10.0/install-config/download-installer/ Harbor 发布包地址&#xff1a; https://github.com/goharbor/harbor/releases Harbor 的架构查看&#xff1a; https://github.com/goharbor/harbor/wiki/Architectur…

Redis 存储原理和数据模型

redis 是不是单线程 redis 单线程指的是命令处理在一个单线程中。主线程 redis-server&#xff1a;命令处理、网络事件的监听。 辅助线程 bio_close_file&#xff1a;异步关闭大文件。bio_aof_fsync&#xff1a;异步 aof 刷盘。bio_lazy_free&#xff1a;异步清理大块内存。io_…