python全栈开发 day12 十二、装饰器。

一、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、开放:修改了源代码,没有更改调用方式,对外调用方式还是原来的,但功能有所增加

 

上一篇:Java Day12(下)


下一篇:如何搭建一个VUE+Element前端项目(保姆级教学)