零、时光宝盒🌻
(https://blog.csdn.net/weixin_69553582 逆境清醒)
前段时间,我煮八宝粥,十几种材料。因为我妈不想吃太甜的,所以,我没有放冰糖,粥里只靠食物本身的甜度。我处理红枣时,特意从中间去核,保留红枣的完整性。煮好后,我妈吃了两碗,吃到了完整的红枣,我也吃到了。可奇怪的是,没有再加热搅拌,晚上装给我哥吃时,锅里找不到完整的红枣了。这种情况以前煮那么多次八宝粥都没有试过。
我好奇为什么一大锅粥,只有两个完整红枣,其他的连碎角都没看到,煮溶了?因为喜欢研究自己失败的原因,例如我酿酒,整个过程消毒完整,但有时会发生长霉点的情况,我分析过其中各种原因,想出加大酿酒酵母使用量来抵抗杂菌的办法,每次就算有不可控的意外发生,都能经过处理后顺利酿出糯米酒。例如蒸蛋糕,糕体里出现个别大的气孔,整体不够均匀绵密,是因为将处理好的蛋糕材料倒入模具时,没有震几下,入模具过程中产生的空气没有及时排出。。。。所以,我跟我妈唠叨整大锅粥为什么只有两个完整的红枣,其他都没有了,我说时不觉得话有什么问题,因为我是在研究失败原因,就跟我酿酒时说瓶子里有霉点一样。可是,我妈发脾气了,认为我是在说她吃了红枣。。。
这次教训告诉我,同一句话,不同心境的人会理解不同,言者无心,听者有意。如果我们不想家庭发生内耗,话,要小心说,特别是家处于不可控的异常环境下。完整红枣消失的原因,我最后猜测是这次红枣和以往不同,没有用很干的红枣,用了半干的枣,容易煮化了。我和妈吃到完整的红枣,是因为刚煮好就装出来吃,而锅里的红枣,因为整锅粥处于保温状态,等于继续焖煮,化了,而锅里有很多红豆桂圆等材料,粥体是枣红色的,化了的红枣融在粥里看不出来。
结案,除了烹饪经验+1外,和家里人沟通需要留意的经验也+1。
逆境清醒
2026.1.28
python变量详解(四)
___变量的作用域(局部变量、全局变量、非局部变量)
变量的作用域
变量的作用域指其可访问的范围。函数内定义的变量通常为局部变量,仅在函数内有效;全局变量则在整个程序中可用。
在Python中,
- 局部变量:在函数内部定义,仅在函数内有效。
- 全局变量:在函数外部或全局范围内声明的变量称为全局变量。在函数外部定义,整个程序可见。若需在函数内修改全局变量,需使用
global关键字- 非局部变量(
nonlocal):用于在嵌套函数中声明一个变量既不是局部变量,也不是全局变量,而是来自外层函数作用域的变量。它通常用于闭包或嵌套函数中,修改外层函数的变量值。
一、全局变量、局部变量
global_var = "Global" def my_func(): local_var = "Local" print(global_var) # 可访问全局变量 my_func() print(local_var) # 报错:局部变量无法在外部访问在 Python 中,全局变量是指在整个程序范围内都可以访问的变量,通常定义在函数或类之外。若要在函数内部修改它,需要使用global关键字声明。
count = 0 # 全局变量 def increment(): global count count += 1在Python中创建变量的示例。
我们将njbl1创建为变量,我们通过函数fruit()来观察变量njbl1的变化情况。
例1:创建一个全局变量,输出函数变量值
global njbl1 njbl1 = "Apple" def fruit(): print("我是放在篮子里的,代表函数变量值为:", njbl1) fruit()运行结果:
我是放在篮子里的,代表函数变量值: Apple
例2:创建一个全局变量,输出函数内变量的值和函数外变量的值
global njbl1 njbl1 = "Apple" def fruit(): print("我是放在篮子里的,代表函数内变量值为:", njbl1) fruit() print("我是放在桌子上的,代表函数外变量的值:", njbl1)当我们运行代码时,将输出:
我是放在篮子里的,代表函数内变量值为: Apple
我是放在桌子上的,代表函数外变量的值: Apple
例3:创建一个全局变量,在函数内更改njbl1的值,
在函数内将njbl1的值更改为"banana"
global njbl1 njbl1 = "Apple" def fruit(): njbl1 = "banana" print("我是放在篮子里的,代表函数内变量值为:", njbl1) fruit() print("我是放在桌子上的,代表函数外变量的值:", njbl1)当我们运行代码时,将输出:
我是放在篮子里的,代表函数内变量值为: banana
我是放在桌子上的,代表函数外变量的值: Apple
在函数内部和外部打印的结果不相同,
为什么在函数内部做的修改没有带出来呢?因为没有在函数内声明变量njbl1是全局变量,所以,python把函数里面的修改当成局部变量修改,也就是python创建了一个njbl1的局部变量,在函数里面对这个局部变量的修改不会影响到函数外的njbl1变量值。
如果要通过函数修改全局变量njbl1的值怎么处理呢?请看下面这的例子。
例4:创建一个全局变量,在函数内更改njbl1的值,并且同时更改全局变量njbl1的值
在函数内将njbl1的值更改为"banana"
global njbl1 njbl1 = "Apple" def fruit(): global njbl1 njbl1 = "banana" print("我是放在篮子里的,代表函数内变量值为:", njbl1) fruit() print("我是放在桌子上的,代表函数外变量的值:", njbl1)当我们运行代码时,将输出:
我是放在篮子里的,代表函数内变量值为: banana
我是放在桌子上的,代表函数外变量的值: banana
二、非局部变量
非局部变量的概念
在Python中,非局部变量(nonlocal)用于在嵌套函数中声明一个变量既不是局部变量,也不是全局变量,而是来自外层函数作用域的变量。
非局部变量通常用于闭包或嵌套函数中,用于未定义局部作用域的嵌套函数,修改外层函数的变量值。这意味着该变量既不能在局部范围内,也不能在全局范围内。
使用场景
当需要在嵌套函数中修改外层函数的变量时,若直接赋值会默认创建新的局部变量,此时需使用nonlocal明确声明变量来自外层作用域。
基本语法
def outer_function(): x = 10 # 外层函数的变量 def inner_function(): nonlocal x # 声明x为非局部变量 x = 20 # 修改外层函数的x inner_function() print(x) # 输出20与global的区别
global:声明变量为全局作用域(模块级)。nonlocal:声明变量为外层函数作用域(非全局)。
def counter(): count = 0 def increment(): nonlocal count count += 1 return count return increment counter_fn = counter() print(counter_fn()) # 输出1 print(counter_fn()) # 输出2注意事项
nonlocal变量必须在外层函数中已定义,否则会引发SyntaxError。- 不能通过
nonlocal引用全局变量,若需修改全局变量应使用global。
错误示例
报错:x未在外层函数中定义
def outer(): def inner(): nonlocal x # 报错:x未在外层函数中定义 x = 10 inner()创建非局部变量
让我们看一下如何在Python中创建非局部变量的示例。
我们使用nonlocal关键字创建非局部变量。
示例:创建一个非局部变量
njex1='逆境清醒' print("调用函数outer前变量的值:",njex1) def outer(): njex1 = "local本地变量" print("这是变量在外部函数outer中的值1(调用inner函数前):",njex1) def inner(): nonlocal njex1 njex1 = "nonlocal非局部变量" print("这是变量在内部函数inner的值:",njex1) inner() print("这是变量在外部函数outer中的值2(调用inner函数后):",njex1) outer() print("调用函数outer后变量的值:",njex1)当我们运行代码时,将输出以下结果:
调用函数outer前变量的值: 逆境清醒
这是变量在外部函数outer中的值1(调用inner函数前): local本地变量
这是变量在内部函数inner的值: nonlocal非局部变量
这是变量在外部函数outer中的值2(调用inner函数后): nonlocal非局部变量
调用函数outer后变量的值: 逆境清醒
在上面的代码中,有一个嵌套函数inner()。
我们使用nonlocal关键字创建一个非局部变量。
注意:如果我们改变了非局部变量的值,这些改变就会出现在局部变量中。
| 从玲开始学python___python变量专辑 | |
| 1、 | python变量详解(一)___什么是python的变量 https://blog.csdn.net/weixin_69553582/article/details/157438788 |
| 2、 | python变量详解(二)___python变量的命名规则、常见命名风格 https://blog.csdn.net/weixin_69553582/article/details/157438821 |
| 3、 | python变量详解(三)___变量的赋值(变量的赋值、变量的数据类型、变量的动态类型、多变量赋值、解包赋值、交换变量值) https://blog.csdn.net/weixin_69553582/article/details/157438837 |
| 4、 | python变量详解(四)___变量的作用域(局部变量、全局变量、非局部变量) https://blog.csdn.net/weixin_69553582/article/details/157463275 |
| 5、 | python变量详解(五)___跨模块变量使用方法 |
| 6、 | python变量详解(六)___私有变量 |
| 7、 | python变量详解(七)___变量的共享与引用、删除变量 |
| 8、 | python变量详解(八)___变量的类型检查、返回变量所指的内存地址 |
| 9、 | python变量详解(九)___ |
推荐阅读:
逆境清醒文章总目录表
|
|
|
| 给照片换底色(python+opencv) | 猫十二分类 | 基于大模型的虚拟数字人__虚拟主播实例 |
|
|
|
| 计算机视觉__基本图像操作(显示、读取、保存) | 直方图(颜色直方图、灰度直方图) | 直方图均衡化(调节图像亮度、对比度) |
|
|
|
语音识别实战(python代码)(一) | 人工智能基础篇 | 计算机视觉基础__图像特征 |
逆境清醒
| ||
matplotlib 自带绘图样式效果展示速查(28种,全) | ||
| ||
| Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) | ||
|
|
|
| 立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦 | Python 3D可视化(一) | 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud) |
|
|
|
python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印 | 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心) | python爱心源代码集锦(18款) |
|
|
|
Python中Print()函数的用法___实例详解(全,例多) | Python函数方法实例详解全集(更新中...) | 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 |
|
| |
| 用代码过中秋,python海龟月饼你要不要尝一口? | python练习题目录 | |
|
|
|
| 草莓熊python turtle绘图(风车版)附源代码 | 草莓熊python turtle绘图代码(玫瑰花版)附源代码 | 草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码 |
|
| |
巴斯光年python turtle绘图__附源代码 | 皮卡丘python turtle海龟绘图(电力球版)附源代码 | |
|
|
|
Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) | 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名) | 2026年1月头条:三年内第二次,C# 被 TIOBE 指数评为年度编程语言。多家权威机构编程语言排行榜__薪酬状况 |
|
|
|
手机屏幕坏了____怎么把里面的资料导出(18种方法) | 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向) | 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决 |
| ||
| vue3 项目搭建教程(基于create-vue,vite,Vite + Vue) | ||
|
|
|
| 2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特 | 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套) | SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例) |
|
|
|
| 【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码) | HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码) | 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载) |
|
|
|
tomcat11、tomcat10 安装配置(Windows环境)(详细图文) | Tomcat端口配置(详细) | Tomcat 启动闪退问题解决集(八大类详细) |
逆境清醒
信息系统项目管理师专题