Python变量作用域详解 郝伟 2021/10/02 [TOC]

1. 简介

在本示例中,通过5次变量A的调用,演示了变量在不同域下的使用方法,全代码如下所示:

A = 100

def func1():
    ''' 如果内部不存在,则从全局进行调用 '''
    print('func1  直接调用: A=' + str(A))

def func2():
    ''' 如果内部存在,则优先调用内部变量 '''
    A=250
    print('func2  内部定义: A=' + str(A))

def func3():
    ''' 如果想要修改外部的A,则需要使用global进行声明 '''
    global A
    A=50
    print('func3  全局调用: A=' + str(A))



print('globle 原始数值:A=' + str(A))    # 打印全部变量
func1()      # 局部变量
func2()      # 局部变量
func3()      # 局部变量
print('globle 最终数值:A=' + str(A))    # 打印全部变量

2.  输出

globle 原始数值:A=100
func1  直接调用: A=100
func2  内部定义: A=250
func3  全局调用: A=50
globle 最终数值:A=50

3. 分析

对5行输出分析解释如下。

  1. globle 原始数值:A=100 直接对全局变量A进行调用,输出原始值。
  2. func1 直接调用: A=100 由于在func1中未定义A,所以使用的也是全局的A。
  3. func2 内部定义: A=250 由于在func2中定义了A,所以此时有两个A,全局的A和func2中的A,在函数内调用时,默认调用函数内定义的A。
  4. func3 全局调用: A=50 如果在函数内要修改全局的A,则需要使用 global 关键字。
  5. globle 最终数值:A=50 在func3中对全局A进行了修改,所以A的最终值是50。

results matching ""

    No results matching ""