变量的作用域
全局变量
在函数外定义,任意函数都可以访问,但不能更改变
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