五、函数_5.变量的作用域

变量的作用域

全局变量
    在函数外定义,任意函数都可以访问,但不能更改变
        global关键字
        函数内使用global定义的变量是全局变量
        函数内使用global引用一个已定义的全局变量后,可对该全局变量进行更改等操作

局部变量
    在函数内定义,函数外不可以访问

函数中变量的类型
    可变数据类型:list,dict 在函数外定义后,函数内仍然可以更改
    不可变数据类型:其他类型的数据在函数外定义后,函数内只能访问,不能更改

globals()   获取全局的变量数据
locals()    获取当前作用域的变量数据
num = 10
N = 100
varlist = ['a','b','c','d']
vardict = {'1':11,'2':'22','f':'F'}
n = 0
def ScopeOfVariable() :
    print(num)
    # num += 1     函数内不可改变

    global N
    N = 200
    print(N)

    varlist[0] = 15
    vardict['1'] = 111

    local = 'local variable'

    global A
    A = 'global variable'

    global n
    n = 'statement'

    print(globals())
    print(locals())

ScopeOfVariable()

print(varlist)
print(vardict)
# print(local)    函数外不可访问局部变量
print(A)
A = 'Global Variable'
print(A)
print(n)

# 此时当前作用域的范围就是全局
print(globals())
print(locals())


10
200
{'__name__': '__main__', '__doc__': '\n全局变量\n......
{'local': 'local variable'}
[15, 'b', 'c', 'd']
{'1': 111, '2': '22', 'f': 'F'}
global variable
Global Variable
statement
{'__name__': '__main__', '__doc__': '\n全局变量\n......
{'__name__': '__main__', '__doc__': '\n全局变量\n......
在函数内部定义的函数叫做局部函数,局部函数只能在函数内被调用
def outer() :
    print('outer')
    A = 1
    global B
    B = 2

    def inner():
        print('inner')
        # print(A)
        # A += 1    不可修改
        global A
        A = 2
        print(A)

        # print(B)

        global B
        B += 1
        print(B)

        global C
        C = 10

    # print(C)
    inner()
    print(A)


outer()
# inner()    不可调用
print(A)
C += 10
print(C)
print(B)


outer
inner
2
3
1
2
20
3
上一篇:MATLAB学习笔记1——函数调用、参数传递、全局变量使用


下一篇:使用git管理GitHub