python 局部变量 占内存吗_Python的全局变量与局部变量

1.全局变量 VS 局部变量

a. 全局变量在整个文件内有效;

b.局部变量在函数内有效;

c.当全局变量和局部变量同名,局部变量有效。

若定义了全局变量,则可在函数内直接使用全局变量。a = 1

b = [23, 98]

def func():

print("a = ", a) #使用全局变量

print("b = ", b)

b[0] = 9

print("b = ", b)

func()

输出结果:a = 1

b = [23, 98]

b = [9, 98]

若在函数内,存在对全局变量重新赋值,在Python中将解析为定义一个变量。a = 1

b = [23, 98]

def func():

if(1 == a): #局部变量a定义前使用,语法错误

a = 2 #局部变量a定义

print("a = ", a)

print("b = ", b) #全局变量b

b[0] = 9

print("b = ", b)

func()

运行结果:Traceback (most recent call last):

File "变量.py", line 13, in

func()

File "变量.py", line 5, in func

if(1 == a):

UnboundLocalError: local variable 'a' referenced before assignment

若需使用全局变量,则在函数内使用global关键字声明全局变量即可。a = 1

b = [23, 98]

def func():

global a #全局变量

if(1 == a):

a = 2

print("a = ", a)

print("b = ", b)

b[0] = 9

print("b = ", b)

func()

输出结果:a = 2

b = [23, 98]

b = [9, 98]

若不需要使用全局变量,且和全局变量同名,则需要在函数内对其进行一次定义,再使用局部变量。a = 1

b = [23, 98]

def func():

a = 1 #定义局部变量

if(1 == a):

a = 2

print("a = ", a)

print("b = ", b)

b[0] = 9

print("b = ", b)

func()

从前面的例子可以看出,对全局列表的某一个成员赋值符合语法规则。但是,函数内对与全局列表变量b再次赋值,即表示局部变量的定义。在变量定义之前使用,将会报告错误。a = 1

b = [23, 98]

def func():

print("a = ", a)

print("b = ", b) #局部变量定义前使用,语法错误

b[0] = 9

print("b = ", b)

if(9 == b[0]):

b = [28, 98] #局部变量定义

print("b = ", b)

func()

输出结果:a = 1

Traceback (most recent call last):

File "变量.py", line 15, in

func()

File "变量.py", line 6, in func

print("b = ", b)

UnboundLocalError: local variable 'b' referenced before assignment

综上所述:

1. 函数内对与全局变量同名的变量赋值,表示定义一个局部变量。变量必须先定义,后使用。

2. 对于列表类,可以对全局变量列表的一个元素b[0]重新赋值,不表示定义一个局部变量。

建议:

1. 避免定义一个和全局变量同名的局部变量;

2. 函数内使用全局变量,使用global在函数内对其进行声明。

了解更多分析及数据抓取可查看:

本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。

特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值