一、nonlocal关键词
# global # num = 0 # def fn(): # global num # L>G 将局部的名字与全局统一 # num = 200 # fn() # print(num) # 结果为 200
1、作用:将local和enclosing(e中的名字需要提前定义)中的名字统一
2、应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值
3、案例
def outer(): num = 0 print(num) # 结果为 0 def inner(): # 如果想在被嵌套的函数中修改外部函数变量(名字)的值 nonlocal num # 将L与E(E中的名字需要提前定义)的名字统一 num = 100 print(num) # 结果为 100 inner() print(num) # 结果为 100 outer()
num =100 def fn(): global num num = 10 def fn2(): global num num = 20 fn2() fn() print(num)
二、开放封闭原则
# 1.0版本 def fn(): print('fn run') fn() # 结果为 fn run # 2.0版本 def fn(): print('fn1 run') print('fn2 run') print('fn3 run') fn()
1、定义:不能修改源代码,不能更改调用方式,但可以对外提供增加新功能的特性
2、开放:修改了源代码,没有更改调用方式,对外调用方式还是原来的,但功能有所增加