当前位置: 首页 > news >正文

Python函数 之 变量

1.引用【了解】

  1. 定义变量的时候, 变量和数据 都会在内存开辟空间
  2. 变量所对应的内存空间中存储的是 数据所在内存的地址 (平时理解为 将数据存储到变量中即可)
  3. 变量中保存数据的地址,就称为是引用
  4. Python 中所有数据的传递,传递的都是引用(即地址)
  5.  赋值运算符(=), 会改变变量的引用, 即只有 = 可以修改变量的引用
  6. 可以使用 id(变量) 函数,查看变量的引用


2.可变类型与不可变类型【记住】

根据内存中的数据是否允许修改,将数据类型分为可变类型与不可变类型

简单理解: 不使用等号,能不能修改数据值。

                        如果不使用等号,可以修改,则是可变的;

                        如果只能使用等号就可以修改的话,则是不可变的

可变类型: 可以修改

        - 列表(list) list.append()

        - 字典(dict ) dict.pop()

        - 集合(set)

不可变类型: 不允许修改

        - 数字类型(int , float , bool)

        - 字符串(str)

        - 元组(tuple)

注意:如下图,元组为什么能改变数据,因为下图中改变的是列表的数据 


3.局部变量和全局变量

根据变量定义的位置将变量分为局部变量和全局变量

(1)局部变量

1, 在函数内部定义的变量,称为是局部变量

2, 特点

  • - 2.1 局部变量,只能在当前函数内部使用
  • - 2.2 可以在不同函数内定义名字相同的局部变量

3, 生命周期(使用范围)

  • - 3.1 在函数执行(调用)的时候被创建
  • - 3.2 函数执行结束被销毁(删除)

4, 形参可以认为是局部变量

5, 如果想要在函数外部使用局部变量的值, 使用 return 返回

def func1():num = 10  # 局部变量print(num)def func2():num = 20print(num)if __name__ == '__main__':func1()  # 10func2()  # 20func1()  # 10

(2)全局变量 

1, 在函数外部定义的变量

2, 特点

  • - 2.1 全局变量 可以在任意函数内访问(读取)
  • - 2.2 想要在函数内部修改全局变量的引用,需要使用 global 关键字声明(使用 global 关键字可以声明为全局变 量)
  • - 2.3 如果在函数内部出现和全局变量名字相同的局部变量,在函数内部使用的是局部变量

3, 生命周期

  • - 代码执行的时候 创建, 执行结束销毁
# 定义全局变量
g_num = 10def func_1():print(g_num)  # 使用全局变量def func_2():g_num = 20  # 定义局部变量print(g_num)def func_3():global g_num  # 声明为全局变量g_num = 30print(g_num)
if __name__ == '__main__':print(g_num)  # 10func_1()  # 10func_2()  # 20func_1()  # 10print(g_num)  # 10func_3()  # 30 修改了全局变量, 将全局变量的值改为30 了func_1()  # 30g_num = 100func_1()  # 100 修改全局变量的值func_2()  # 20 局部变量func_3()  # 30func_1()  # 30
def func1():list1.append(10)def func2():list1 = [1, 1]  # 定义局部变量, 不影响全局变量list1.append(0)def func3():global list1  # 全局变量list1.pop()  # 删除最后一个数据def func_5():list1.pop()  # 用的全局变量,没有改引用def func4():global list1  # 全局变量list1 = [1]if __name__ == '__main__':list1 = [1, 2]func1()print(list1)  # ①[1, 2] ②[1, 2, 10](√) ③报错func2()print(list1)  # ① [1, 1, 0] ②[1, 2, 10](√) ③报错func3()print(list1)  # [1, 2]# func_5()# print(list1) # ②[1, 2] ①[1]对func4()print(list1)  # [1]


未完待续。。。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 前端导出pdf
  • Science Advances 仿生双模态触觉感知
  • c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决
  • PMON的解读和开发
  • java通过poi-tl导出word实战详细步骤
  • 视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器
  • git diff,stash,submodule,format-patch
  • 自定义波形图View,LayoutInflater动态加载控件保存为本地图片
  • 上传图片,base64改为文件流,并转给后端
  • QT 图片处理
  • C#的DllImport使用方法
  • STM32智能空气质量监测系统教程
  • VUE与React的生命周期对比
  • 基于物联网的智慧校园建设与发展
  • 打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)
  • 0x05 Python数据分析,Anaconda八斩刀
  • CSS 专业技巧
  • css系列之关于字体的事
  • JavaScript设计模式与开发实践系列之策略模式
  • mockjs让前端开发独立于后端
  • Mybatis初体验
  • node和express搭建代理服务器(源码)
  • OSS Web直传 (文件图片)
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • 安卓应用性能调试和优化经验分享
  • 对JS继承的一点思考
  • 分布式熔断降级平台aegis
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 正则学习笔记
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #HarmonyOS:Web组件的使用
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (八)Flask之app.route装饰器函数的参数
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二十三)Flask之高频面试点
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (四)c52学习之旅-流水LED灯
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • ***详解账号泄露:全球约1亿用户已泄露
  • .gitignore不生效的解决方案
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net Signalr 使用笔记
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET企业级应用架构设计系列之结尾篇
  • .pop ----remove 删除
  • 。Net下Windows服务程序开发疑惑
  • @ConfigurationProperties注解对数据的自动封装
  • @PreAuthorize与@Secured注解的区别是什么?