码迷,mamicode.com
首页 > 编程语言 > 详细

python基础--局部变量与全局变量

时间:2018-03-27 14:40:52      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:引用   gpo   oat   直接   报错   就会   lob   全局变量   使用   

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

技术分享图片技术分享图片

  局部变量:

  

class MyClass():
    def a(self):
        n=100
        print(a中的n数值为:%d%(n))

    def b(self):
        n=n+200
        print(b中的n数值为:%d%(n))

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

  全局变量:

_n=1111
class MyClass():
    def a(self):
        n=100
        print(a中的n数值为:%d%(n))

    def b(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
class MyClass():
    def a(self):
        n=100
        print(a中的n数值为:%d%(n))
        return _n
    def b(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
class MyClass():
    def a(self):
        n=100
        print(a中的n数值为:%d%(n))
        return _n
    def b(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一般不要省略不写,否则有时候会产生不正常的结果。 

python基础--局部变量与全局变量

标签:引用   gpo   oat   直接   报错   就会   lob   全局变量   使用   

原文地址:https://www.cnblogs.com/utsuro/p/8656788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!