python全局变量一般没有缩进_python全局变量与局部变量

本文介绍了Python中全局变量和局部变量的区别。全局变量在函数外部定义,全程有效,而局部变量只在函数内部有效。当函数退出时,局部变量会被释放。在函数内部使用全局变量需要使用`global`关键字声明。同时,文章详细阐述了Python函数对变量作用的原则,包括简单数据类型和组合数据类型的情况。
摘要由CSDN通过智能技术生成

1.全局变量与局部变量

全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效

局部变量:指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在

例1:

n = 1 # 全局变量

def func(a, b):

c = a * b # c是局部变量,a和b作为函数参数也是局部变量

return c

s = func("knock~", 2)

print(s)

print(c)

ee89a1ed3a54a9331e2cbbbebf4ba43c.png

这个例子说明,当函数执行完退出后,其内部变量将被释放。

如果函数内部使用了全局变量呢?例如:

n=1 #n是全局变量

def func(a,b):

n=b #这个n是在函数内存中新生成的局部变量,不是全局变量

return a*b

s=func("knock~",2)

print(s,n) #测试一下n值是否发生改变knock~knock~ 1

9308bda8823a9edf8cb6d109fa86c6f2.png

函数func()内部使用了变量n,并且将变量参数b赋值给变量n,为何n值没有改变?

因为函数func()有自己的内存空间,它将n=b语句理解为生成一个局部变量n,并将参数b赋值给它,此时func()函数没有将n当作全局变量。所以,函数退出后,局部变量n被释放,全局变量n的值没有改变。

如果希望让func()函数将n当作全局变量,需要在变量n使用前显式说明该变量未全局变量,修改后:

n = 1 # n是全局变量

def func(a,b):

global n

n = b # 这个n是在函数内存中新生成的局部变量,不是全局变量

return a*b

s = func("knock~",2)

print(s, n) # 测试一下n值是否发生改变knock~knock~ 1

6cc1f7d2d560035eecb12ec885c5ac11.png

2.python函数对变量的作用遵守原则:

(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。

(2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。

(3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。

(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。

原文:https://www.cnblogs.com/GumpYan/p/14154760.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值