python成员变量和全局变量_python基础--局部变量与全局变量

首先来看两张图,局部变量与全局变量的区别:

局部变量:

classMyClass():defa(self):

n=100

print('a中的n数值为:%d'%(n))defb(self):

n=n+200

print('b中的n数值为:%d'%(n))

这个时候就会报错,函数b中的n=n+200会显示n未定义错误,原因是n只是在函数a中定义了一个值100,但是函数b中并未赋值,如果还是要使用n这个数值,就可以定义一个全局变量,表示区分我这里写成_n

全局变量:

_n=1111

classMyClass():defa(self):

n=100

print('a中的n数值为:%d'%(n))defb(self):global_n

n=_n+1111

print('b中的n数值为:%d'%(n))return_n

ret=MyClass()print(ret.b())

运行的结果:

b中的n数值为:2222

1111

如果修改n=_n+1111为_n=_n+1111,那么全局变量也会随之改变,示例代码如下:

_n=1111

classMyClass():defa(self):

n=100

print('a中的n数值为:%d'%(n))return_ndefb(self):global_n

_n=_n+1111

print('b中的n数值为:%d'%(_n))return_n

ret=MyClass()print(ret.b())print(ret.a())

运行结果:

b中的n数值为:2222

2222

a中的n数值为:100

2222

这里可以看见,在调用b函数后,已经对全局变量_n进行了修改,变成了2222,再接下来调用a函数的时候,返回值return _n是已经被b函数修改后的全局变量_n,数值是2222。

如果再次调用b函数,数值将会变成3333,因为全局变量_n在2222的基础上又一次被b函数+1111。

代码如下:

_n=1111

classMyClass():defa(self):

n=100

print('a中的n数值为:%d'%(n))return_ndefb(self):global_n

_n=_n+1111

print('b中的n数值为:%d'%(_n))return_n

ret=MyClass()print(ret.b())print(ret.b())print(ret.b())print(ret.a())

运行结果:

b中的n数值为:2222

2222

b中的n数值为:3333

3333

b中的n数值为:4444

4444

a中的n数值为:100

4444

当然,如果你看着打印结果后面跟着把函数返回值也打印了很不舒服,也可以直接写成ret.b(),不需要print,这样就只会打印:b中的n数值为:2222,而不会把返回值2222跟在后面打印出来

ps:值得注意的是,引用全局变量保留字global一般不要省略不写,否则有时候会产生不正常的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值