内层函数无法直接修改外层函数的参数,
def outer(loge):
def inner(msg):
print(f"<{loge}>{msg}<{loge}>")
return inner
fn1 = outer('奔跑吧')
fn1("大家好")
闭包实现ATM机系统
#ATM
def account_create(initial_amount = 0): #账户余额默认值为0
def atm(num, deposit = True): #根据num判断是存钱还是取钱,是存钱就是Ture
nonlocal initial_amount #使用nonlocal对账户余的进行重新改写
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(200)
atm(300)
atm(100,deposit=False)