Python-13-函数_02_局部变量、全局变量、前向引用

 1 # 1、局部变量和全局变量
 2 
 3 在子程序中定义的变量称为局部变量,在程序的一开始(代码前面没有缩进)定义的变量称为全局变量。
 4 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
 5 当全局变量与局部变量同名时:
 6 在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
 7 
 8 """
 9 ###### 全局变量变量名大写
10 ###### 局部变量变量名小写
11 
12 # 1、指定 全局变量——global
13 
14 name = "121321213"             # 全局变量
15 def change_name1():
16     global name                # global + 全局变量(name),声明,此位置的变量 就是最外面那个全局变量...
17     print(name)
18     name = 'newmet'                # 经过在当前函数中声明全局变量,这一步...将全局变量name 重写,下面所运行的name变量值 均为重写后的值。
19     print('我的名字:', name)
20 
21 def change_name2():
22     # name = 'newmet.top'
23     print('我的名字:', name)          # 由于先调用的change_name1函数,而在这个函数中,利用global(关键字)将全局变量name
24                                      # 重写,后续再执行或者调用别的函数,与全局变量name有关的,都会使用重写后的值。
25 
26 change_name1()
27 change_name2()
28 print(name)
29 
30 # 2、指定 上一级变量——nonlocal
31 
32 ###### 函数可以嵌套函数
33 
34 # 3、前向引用(函数即变量)
"""
    作用域:起作用的范围.
    局部变量:在方法体内部定义的变量
    全局变量:定义在.py文件中的变量
"""

# 全局变量
g1 = 100

def fun1():
    # 可以读取全局变量
    # print(g1)

    # 此时没有改变全局变量,而是创建了与全局变量名称相同的局部变量
    # g1 = 200

    # 声明全局变量
    global g1
    g1 = 200
    print(g1)

    # 再声明全局变量
    global g2
    g2 = 300

    # 局部变量
    a = 1
    # 不能将局部变量 改为全局变量
    # global a




def fun2():
    a = 2
    # global g1,g2   可以省略
    print(g1,g2)

fun1()
fun2()
原文地址:https://www.cnblogs.com/newmet/p/9946512.html