python:浅析变量

python:浅析变量

在学习局部变量和全局变量的时候,相信大家一定有过这种想法:函数内部为什么不能修改全局变量?今天咱们就一起来看看如何在函数中修改全局变量

一、变量

1、含义?

​ 用于存储某种不确定的或者未知数据的容器叫做变量

2、作用?

​ 我i想变量的作用无非就是:开辟内存空间然后保存数据

二、局部变量

1、含义

​ 定义在函数内的变量叫做局部变量

2、作用域

​ 只能在该函数范围内使用,也就是说在哪个函数中定义的,那么就只能在该函数中使用,在其他或者外界访问不到

3、生命周期

​ 如果函数内部没有可执行的代码,或者说该函数内部已经没有对局部变量进行某种操作的代码,并且当该函数执行完毕时,局部变量就会被销毁,或者说被回收

# 定义的一个函数
def func():
    # 在函数中定义的局部变量
    i = 12
    # 输出全局变量
    print("局部变量:",i)

# 注意:在每次调用该函数的时候,都会去定义局部变量,那上次的局部变量去哪了?
# 上一次的局部变量在该函数执行完毕时已经释放内存回收了

三、全局变量

1、含义

​ 定义在函数外部的变量叫做全局变量

2、作用域

​ 只能在整个模块中访问或者使用,一个.py文件就是一个模块,在其他模块中访问不到

3、生命周期

​ 当整个程序没有课执行的代码,或者说当整个程序执行完毕时,此时全局变量就要被销毁,或者说被回收

# 全局变量
x = 20
# 输出全局变量,输出20
print(x)
# 当整个程序执行完毕时,全局变量就会被释放内存,回收

四、在函数变量的执行流程

​ 1、在函数中有局部变量就用局部变量

​ 2、当无局部变量时使用全局变量

​ 3、当局部变量和全局变量重名,函数会默认选择使用局部变量

# 定义一个函数
def func():
    # 定义局部变量
    i = 12
    # 输出局部变量
    print("局部变量:",i)
    # 这里看上去是修改全局变量的值,实则是定义的局部变量
    x = 1
    # 这里输出的是局部变量,是1,这里就可以看到,函数会默认选择局部变量
    print(x)

# 全局变量
x = 20
# 调用函数
func()
# 输出全局变量,输出20
print(x)

五、如何在局部变量中操作全局变量

# 当函数中没有与全局变量同名的局部变量时,在函数中是完全可以访问全局变量的,但是不能修改
# 那么如果想在函数中操作或者说修改使用全局变量,那么该怎么办?使用global关键字声明

# 定义了一个函数
def func():
    # 使用global关键声明全局变量x,为什么说是声明?因为全局变量中已经有了x变量,那么此时就是声明,使用全局变量
    # 如果说全局变量中没有x,那么此时就变成了声明并定义全局变量,并且在外界和其他函数中都可以访问
    # 注意:global x = 10 这种写法是错误的,在程序中会直接报错
    global x
    # 修改了全局变量x
    x = 10
    # 输出10
    print(x)

# 全局变量
x = 20
# 输出20
print(x)
# 调用函数
func()
# 输出10,因为在函数中已经修改了
print(x)

六、区别

​ 说了这么多,是不是还有许多朋友不太清除呢?不过没关系,看了下面这个表格以后,我相信你会有很大的收获,并且理解什么时局部变量什么是全局变量

局部变量全局变量
作用开辟内存空间,存储数据开辟内存空间,存储数据
定义在函数内定义在函数外定义
作用域只能在该函数中使用只能在该模块中使用
访问函数内可以访问并修改该函数内的局部变量,但只能访问全局变量,不能修改,如果需要修改则需要使用global关键字在函数外只能访问修改全局变量,不能访问和修改局部变量
生命周期当该函数执行完毕时销毁并回收局部变量当程序执行完毕时销毁并回收全局变量

以上均为自己在今天一天的学习中所学到的一些知识,并根据自己的理解所总结的一篇文章,如果本篇文章有什么不完善的地方,还请各位码友能够多多指教,同时也希望自己所学的东西能够帮助更多的朋友,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值