a = 10
def func():
b = 6
def inner():
print(a, b) # 引入可以随意使用, 反正都在他的作用域内部, 其中global与nonlocal是改变自己作用域范围外变量的值
inner()
func()
# 1---函数可以作为参数进行传递
# def func(): # 定义函数
# print("我是函数")
#
#
# def sin(fn): # 以函数作为参数进行传递
# fn()
#
#
# sin(func)
#
# 2---函数可以作为返回值进行传递
# def func1():
# def inner():
# print("12255")
#
# return inner
#
#
# func1()
# 3---函数名称可以当成一个变量一样的进行赋值
# def func1():
# print("我是函数1")
#
#
# def func2():
# print("我是函数2")
#
#
# func1 = func2
#
# func1()
# 1---在局部引入全局的局部变量[global]
# a = 10
#
#
# def inner(): # 闭包函数
# global a # 在局部环境中引用全局环境中的变量
# a = 20 # 局部函数inner中的局部变量a
# print(a)
#
#
# inner()
# print(a)
# 2---在局部引入外层的局部变量[nonlocal]
def func():
b = 9
def func1():
nonlocal b # 向外一层引入局部变量, 如果有就引入, 如果没有就继续向外一层, 直到全局, 但是不包括全局
print("引入的值", b)
b = 6
print(b)
func1()
print("变量被改变成新的值", b) # 变量被改变
func()