优点

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

缺点

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

代码

def ATM(balance):
    def change (num,type=True) -> int :
        nonlocal balance    # 使用nonlocal关键字修改外部函数的值
        if type == True:   # 存钱
            balance += num
            print(f"<存款>{num}元,当前余额:{balance}")
        else:   # 取钱
            balance -= num
            print(f"<取款>{num}元,当前余额:{balance}")
        return balance  # 返回修改后的余额
    return change
atm = ATM(100)
atm(10)
atm(10,1)
for x in range(1,10):
    atm(x)
for x in range(10,20):
    atm(x,False)
res:int = atm(200)
print(res)

结果

<存款>10元,当前余额:110
<存款>10元,当前余额:120
<存款>1元,当前余额:121
<存款>2元,当前余额:123
<存款>3元,当前余额:126
<存款>4元,当前余额:130
<存款>5元,当前余额:135
<存款>6元,当前余额:141
<存款>7元,当前余额:148
<存款>8元,当前余额:156
<存款>9元,当前余额:165
<取款>10元,当前余额:155
<取款>11元,当前余额:144
<取款>12元,当前余额:132
<取款>13元,当前余额:119
<取款>14元,当前余额:105
<取款>15元,当前余额:90
<取款>16元,当前余额:74
<取款>17元,当前余额:57
<取款>18元,当前余额:39
<取款>19元,当前余额:20
<存款>200元,当前余额:220
220
最后修改:2025 年 01 月 13 日
如果觉得我的文章对你有用,请随意赞赏