Python(21)--变量进阶

变量的进阶使用

  • 1变量引用
  • 2可变、不可变数据类型
  • 3局部变量和全局变量
  • 4.Tips

本系列博文来自学习《Python基础视频教程》笔记整理,视屏教程连接地址:http://yun.itheima.com/course/273.html
在博文:https://blog.csdn.net/sinat_40624829/article/details/89555165中简单的介绍了变量的使用之后,本博文主要总结变量的进阶使用。

1变量引用

变量和数据保存在内存,两者分开保存。

数据保存在内存中的一个位置,变量中保存着数据在内存中的地址。

变量中记录着数据的地址,这就叫做引用。

使用id()查看变量中保存的数据在内存中的地址。

在这里插入图片描述
在这里插入图片描述
实参通过引用调用,调用函数时,本质上保存的是:实参保存数据的引用(地址),而不是实参保存的数据。

函数的返回值传递引用(地址)

2可变、不可变数据类型

不可变数据类型:数字,字符串,元组
可变数据类型:列表、字典

a=1

一旦在某一个内存单元中指定了一个数字,这个单元中的数字就不能变了,但是a可以指向不同的地址,就好像a代表的数字在变一样。

a=“hello”

不可变

a=[1,2,3]

可变,可以通过方法A.append/A.pop来修改列表内容。

a=[3,2,1]

不是在修改原来的列表,而是新建了一个列表

对列表和字典操作:赋值语句会修改变量的引用

在这里插入图片描述)
在这里插入图片描述)
字典的Key不能是可变类型:s数字、元素、字符串可以作为键,列表字典不行,否则会报错。
在这里插入图片描述)
在这里插入图片描述)

报错信息:unhashable
哈希:看做一个函数,传入一个不可变数据类型,并且返回一个结果,提取数据的特征码,如果传递的内容是相同的,就能够返回相同的结果,如果传递的内容是不同的能够返回不同的结果。Hash函数只能接受一个不可变数据类型作为参数,不能接受可变类型参数。
在这里插入图片描述
在python设置字典键值时,为了后续增删查改的方便,解释器会对key进行hash操作,以决定如何在内存中保存字典数据。

3局部变量和全局变量

局部变量:函数内部定义的变量,只能在定义它的函数中使用
全局变量:函数定义的变量,能够在所有函数中都使用

温馨提示;在其他编程语言中,不推荐使用全局变量,–可变范围大,导致函数不好维护,
在Python中有特定的设置,来避免一些问题。函数中要使用变量的时候,就近查找原则,找到就用。

3.1局部变量:临时保存一个函数内部使用的数据。
1.生命周期:创建到消亡,生命周期内才能使用变量。
2.使用细节:不同的函数内部,定义了相同名字变量,相互之间使用互不干扰。

3.2全局变量:
1.使用细节: 在函数内部,可以通过变量的引用获取对应的数据,但是不允许直接修改全局变量的引用。也就是只能用,不能对其使用赋值操作。

num=10
def demo_one():# 希望修改全局变量的值# 在python函数中不允许修改全局变量的值# 如果使用赋值语句,会在函数内部定义一个局部变量num = 99print("demo_one =>%d" %num)
def demo_two():print("demo_two=>%d" % num)
demo_one()
demo_two()

输出:

demo_one =>99
demo_two=>10

2.在函数内部来修改全局变量的值:global声明全局变量

num=10
def demo_one():# 希望修改全局变量的值# 在python函数中不允许修改全局变量的值# 如果使用赋值语句,会在函数内部定义一个局部变量# 声明一下,就能够说后面的变量是全局变量,就不会创建一个局部变量global numnum = 99print("demo_one =>%d" %num)
def demo_two():print("demo_two=>%d" % num)
demo_one()
demo_two()

输出:

demo_one =>99
demo_two=>99

3.全局变量定义的位置:在开发时,把所有的全局变量定义所有函数的上方,就可以保证所有的函数都能正常访访问所有的全局变量。

4.全局变量命名:不同公司对于全局变量的标记有不同的规则;在变量名前面增加gl_或者g_(到新的公司工作,可以问一下,领导全局变量的命名规则,可以显得你有开发经验)

4.Tips

1.Pycharm调试的小技巧:左下角的调试模块跳转。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.Python代码结构:

shebang
import
全局变量
函数定义
执行代码

3.程序执行的顺序要清楚,老师每次说的时候大家都觉得很简单,但是在关键时刻才知道平时积累的重要性.

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

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

相关文章

机器学习知识总结系列-机器学习中的数学-矩阵(1-3-2)

矩阵 SVD 矩阵的乘法状态转移矩阵状态转移矩阵特征值和特征向量 对称阵 正交阵 正定阵数据白化矩阵求导 向量对向量求导 标量对向量求导 标量对矩阵求导一.矩阵1.1 SVD奇异值分解(Singular Value Decomposition),假设A是一个mn阶矩阵&#xf…

面试中海量数据处理总结

教你如何迅速秒杀掉:99%的海量数据处理面试题 前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获&…

redis——旧版复制

Redis 的复制功能分为同步(sync)和命令传播(command propagate)两个操作: 同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。命令传播操作用于在主服务器的数据库状态被修改, 导致…

Linux(3)-网-ifconfig,ping,ssh

终端命令网-ping,ssh1. ifconfig -a2. ping3. ssh3.1安装3.2 连接3.3 配置登入别名防火墙端口号,todo1. ifconfig -a 查看IP地址, 还可以用于配置网口。 ifconfig -a 2. ping ping命令: 检测到IP地址的连接是否正常。命令开始后由本机发送数据包a&…

redis——相关问题汇总

什么是redis? Redis 本质上是一个 Key-Value 类型的内存数据库, 整个数据库加载在内存当中进行操作, 定期通过异步操作把数据库数据 flush 到硬盘上进行保存。 因为是纯内存操作, Redis 的性能非常出色, 每秒可以处理…

一文搞定面试中的二叉树问题

一文搞定面试中的二叉树问题 版权所有,转载请注明出处,谢谢! http://blog.csdn.net/walkinginthewind/article/details/7518888 树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点…

无数踩坑系列(1)--Brightness Controller

Brightness Controller1.尝试找回系统自带亮度调节条1.1 配置grub文件,无效1.2 使用命令调节屏幕亮度,无效2.安装应用程序Brightness Controller2.1许多博文都写出了如下方案,无效:2.2 github 手动安装https://github.com/LordAmi…

springboot2——MyBatis入门

原生缺陷: 数据库dao层操作缺陷: ①jdbc的增删改查代码的冗余过大,查询的时候需要遍历。 ②Sql语句和数据库相关参数和代码的耦合性过高。 解决:使用Mybatis 业务层缺陷: ①业务层和数据…

Linux(4)-资源-du,top,free,gnome

Linux终端命令1.磁盘资源1.1 df -hl1.2 du1.3 统计文件数量2.缓存资源2.1 top2.2 free -m3.Gnome3.1系统监视器-gnome-system-monitor3.2 截屏--screenshot查看文件系统资源的一些命令1.磁盘资源 1.1 df -hl 查看分区磁盘使情况 硬盘空间不够时,跑程序会报错&…

redis——Java整合

redis官网 微软写的windows下的redis 我们下载第一个 额案后基本一路默认就行了 安装后&#xff0c;服务自动启动&#xff0c;以后也不用自动启动。 出现这个表示我们连接上了。 redis命令参考链接 Spring整合Redis 引入依赖 - spring-boot-starter-data-redis <depend…

一文理解KMP算法

一文理解KMP算法 作者&#xff1a;July 时间&#xff1a;最初写于2011年12月&#xff0c;2014年7月21日晚10点 全部删除重写成此文&#xff0c;随后的半个多月不断反复改进。后收录于新书《编程之法&#xff1a;面试和算法心得》第4.4节中。 1. 引言 本KMP原文最初写于2年多前的…

小猫的java基础知识点汇总(下)

1、线程和进程有什么区别&#xff1f; 进程是操作系统资源分配的基本单位&#xff0c;而线程是任务调度和执行的基本单位 线程是进程的子集&#xff0c;一个进程可以有很多线程&#xff0c;每条线程并行执行不同的任务。 不同的进程使用不同的内存空间&#xff0c;而所有的线…

小猫的java基础知识点汇总(上)

1、一个".java"源文件中是否可以包括多个类&#xff08;不是内部类&#xff09;&#xff1f;有什么限制&#xff1f; 可以有多个类&#xff0c;但只能有一个public的类&#xff0c;并且public的类名必须与文件名相一致。 2、short s1 1; s1 s11; 有没有错&#xff…

后端 分页组件实例

/*** 分页相关信息*/ public class Page {//当前页码private int current1;//显示的上限private int limit10;//数据总数//用于计算页数private int rows;//路径private String path;public int getCurrent() {return current;}public void setCurrent(int current) {if (curre…

大数据学习(07)--MapReduce

文章目录目录1.MapReduce介绍1.1 什么是分布式并行编程&#xff1f;1.2 MapReduce模型介绍1.3 map和reduce函数2.MapReduce体系架构3.MapReduce工作流程3.1 概述3.2 MapReduce各个阶段介绍3.3 shuffle过程介绍3.3.1 shuffle过程简介3.3.2 map中的shuffle过程3.3.3 reduce中的sh…

Pytorch(4)-模型保存-载入-eval()

模型保存与提取1. 整个模型 保存-载入2. 仅模型参数 保存-载入3. GPU/CPU模型保存与导入4. net.eval()--固定模型随机项神经网络模型在线训练完之后需要保存下来&#xff0c;以便下次使用时可以直接导入已经训练好的模型。pytorch 提供两种方式保存模型:方式1&#xff1a;保存整…

大数据学习(08)--Hadoop中的数据仓库Hive

文章目录目录1.什么是数据仓库&#xff1f;1.1数据仓库概念1.2传统数据仓库面临的挑战1.3 Hive介绍1.4 Hive与传统数据库的对比1.5 Hive在企业中的部署与应用2.Hive系统架构3.Hive工作原理3.1 SQL转换为MapReduce作业的基本原理3.2 Hive中SQL查询转换MapReduce作业的过程4.Hive…

dubbo知识点总结 持续更新

Dubbo 支持哪些协议&#xff0c;每种协议的应用场景&#xff0c;优缺点&#xff1f;  dubbo&#xff1a; 单一长连接和 NIO 异步通讯&#xff0c;适合大并发小数据量的服务调用&#xff0c; 以及消费者远大于提供者。传输协议 TCP&#xff0c;异步&#xff0c;Hessian 序列化…

无限踩坑系列(6)-mySQL数据库链接错误

mySQL数据库链接错误错误1错误2长链接短连接应用场景需要一直访问mySQL数据库&#xff0c;遇到如下错误&#xff1a;错误1 释放已经释放的数据库链接conn.&#xff0c;或者&#xff0c;操作已经释放的数据库链接conn.或者失去链接后再操作数据库都可能会报这个错误 aise err.I…

初探函数式编程和面对对象式编程

文章目录目录1.函数式编程和面向对象编程概念1.1 函数式编程1.2 面向对象编程2.函数式编程和面向对象编程的优缺点2.1 函数式编程优点缺点2.2 面对对象编程优点缺点3.为什么在并行计算中函数式编程比较好3.1 什么是并行计算3.2 函数式编程兴起原因目录 1.函数式编程和面向对象…