内容来源于:https://www.bilibili.com/video/BV1ZJ411y7Te?from=search&seid=5018137173127254008
Part 1 展示函数的作用域
‘’’
三句口诀理解Python的函数作用域机制
1、作用域,是栋楼,下楼套上楼
2、读变量,往下搜,一直到一楼
3、改变量,莫下楼,除非你放狗(global)
‘’’
"""示例1:展示1和2"""
def secondFloor():
print(msg)
def thirdFloor():
print(msg)
return thirdFloor
stf =secondFloor()
stf()
执行结果:
我是全局变量msg
我是全局变量msg
"""示例2:展示3"""
msg = "我是全局变量msg"
def secondFloor():
global msg
msg +=" hello world"
print(msg)
def thirdFloor():
print(msg)
return thirdFloor
stf =secondFloor()
stf()
执行结果:
我是全局变量msg hello world
我是全局变量msg hello world
Part 2 展示闭包和装饰器
“”"两句口诀理解闭包和装饰器
1、闭包:至少2层楼,楼下变量管楼上,return上楼不动手
2、装饰器:客人空手来,还得请上楼,干啥都同意,有参给上楼
“”"
"""示例1:演示第一个闭包
"""
msg = "我是全局变量msg"
def secondFloor():
msg ="我是second floor"
def thirdFloor():
print(msg)
return thirdFloor
stf =secondFloor()
stf()
执行结果:
我是second floor
"""
示例2:装饰器
"""
def secondFloor(func):
def thirdFloor(arg):
print("原函数开始执行")
func(arg)
print("原函数执行完成")
return thirdFloor
@secondFloor
def origin(info):
print(info)
origin("我是带参的原始函数")
执行结果:
原函数开始执行
我是带参的原始函数
原函数执行完成