nonlocal关键字
闭包的优点:
– 无需定义全局变量即可实现通过函数,持续的访问、修改某个值
– 闭包使用的变量的所用于在函数内,难以被错误的调用修改

闭包的缺点:
– 由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存

Admin_Log



 

"""
闭包的优点:
    - 无需定义全局变量即可实现通过函数,持续的访问、、修改某个值
    - 闭包使用的变量的所用于在函数内,难以被错误的调用修改

闭包的缺点:
    - 由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存
"""

# 使用闭包实现ATM小案例
def account_create(initial_amount=0):
    def atm(num, deposit=True):
        nonlocal initial_amount
        if deposit:
            initial_amount += num
            print(f"存款:+{num},账户余额:{initial_amount}")
        else:
            initial_amount -= num
            print(f"取款:-{num},账户余额:{initial_amount}")

    return atm


atm = account_create()

atm(100)
atm(200)
atm(100, deposit=False)