python交流区

局部变量和全局变量

2019-06-29  本文已影响36人  Mouse_Hang

1、局部变量

局部变量:它是定义在函数内部的变量,使用范围只在函数内部,其作用是在函数内部临时的保存函数内部所需要的数据,那么为什么是“临时保存”呢?因为局部变量的生命周期是从函数执行到该行代码块开始到函数执行结束。不同函数之间具有相同名字的局部变量互不干涉,可以在各自的函数中独立使用。下面是对局部变量的演示:

def demo_01():
    exm = 66
    print("demo_01 --> %d" % exm)


def demo_02():
    exm = 99  # 在demo_02中也定义一个exm的局部变量
    print("demo_02 --> %d" % exm)


demo_01()  # 输出为:demo_01 --> 66
demo_02()  # 输出为:demo_02 --> 99

2、全局变量

全局变量:它是在函数之外定义的变量,该变量的使用范围是可以在定义它的整个模块中使用,即不仅可以在函数之外使用,也可以在函数之中使用。

注意:函数体中使用赋值语句并不会修改全局变量的值。当全局变量和函数中的局部变量名字一样时,函数体内部优先使用函数体中的局部变量。 即:
1、当函数中使用变量时,首先会在函数内部查找该变量,如果有该变量,直接使用;
2、如果函数内部并没有该变量,那么函数会查找在函数执行之前的代码中是否有该全局变量,如果有则直接使用;
3、如果都没有,则程序报错。
举例如下:

exm = 20

def demo_01():
    print("demo_01 --> %d" % exm)


def demo_02():
    exm = 99  # 在demo_02中也定义一个exm的局部变量
    print("demo_02 --> %d" % exm)
    print(num)  # 程序报错;NameError: name 'num' is not defined
demo_01()  # 输出为:demo_01 --> 20
demo_02()  # 输出为:demo_02 --> 99
# 发现当函数体中局部变量和全局变量名字一样时,会优先使用函数体中的局部变量,并且使用复制语句并没有修改全局变量的值。

但有时确实需要在函数体内部修改全局变量,此时就要用到global关键字。用法是在函数体中使用global关键字声明全局变量即可。

exm = 20


def demo_01():
    global exm
    exm = 50
    print("demo_01 --> %d" % exm)


def demo_02():
    print("demo_02 --> %d" % exm)


demo_01()  # 输出为:demo_01 --> 50
demo_02()  # 输出为:demo_02 --> 50
上一篇 下一篇

猜你喜欢

热点阅读