Python笔记2|全局变量和局部变量

Python全局变量和局部变量

1.变量的作用域

请添加图片描述

1.1变量产生的底层原理

在这里插入图片描述在这里插入图片描述

①执行a = 3
在这里插入图片描述
栈中产生全局变量 a \color{red}{a} a ,堆中创建了 i n t \color{purple}{int} int 对象, v a l u e \color{orange}{value} value 3 \color{green}{3} 3, t y p e \color{orange}{type} type i n t \color{green}{int} int,再把该对象的 i d \color{orange}{id} id 给了栈中的全局变量 a \color{red}{a} a
此时全局变量 a \color{red}{a} a 指向了值为 3 \color{green}{3} 3 的对象。

②在 def text01():时,
在这里插入图片描述
栈中产生全局变量 t e x t 01 \color{red}{text01} text01 ,栈中产生函数对象,并将函数对象的 i d \color{orange}{id} id t e x t 01 \color{red}{text01} text01
此时 t e x t 01 \color{red}{text01} text01 指向函数对象。

text01()调用函数时,在这里插入图片描述栈中产生一个栈帧,在栈帧中产生局部变量 b \color{blue}{b} b,堆中创建了 i n t \color{purple}{int} int 对象, v a l u e \color{orange}{value} value 4 \color{green}{4} 4, t y p e \color{orange}{type} type i n t \color{green}{int} int,再把该对象的 i d \color{orange}{id} id 给了栈帧中的局部变量 b \color{blue}{b} b
此时局部变量 b \color{blue}{b} b 指向了值为 4 \color{green}{4} 4 的对象。

⚠️PS:调用函数时,在栈里产生一个 栈 帧 \color{red}{栈帧} (函数调用完后就没有了),局部变量在栈帧中创建,随着栈帧消失而消失。

2. 函数内部使用未定义的局部变量

函数内部使用未定义的局部变量,并且有跟它重名的全局变量
请添加图片描述

3.函数内变量(局部变量)和全局变量重名

请添加图片描述

4.函数内部修改全局变量

如果要在函数内改变全局变量的值,需要增加 global 关键字声明。请添加图片描述

5.打印函数内的全局变量和局部变量

在函数体内使用locals()globals()函数可以分别打印函数内的全局变量和局部变量。
请添加图片描述

6.全局变量和局部变量的效率

请添加图片描述
测试表明,局部变量的效率比全局变量高。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值