【Python-闭包】

■ 闭包特性

在这里插入图片描述

■ 简单闭包

def outer(logo):

    def inner(msg):
        print(f"<{logo}>{msg}<{logo}>")

    return inner

fn1 = outer("程序员")
fn1("大家好")
fn1("大家好")

■ 使用nonlocal关键字修改外部函数的值

fn2 = outer("大学教育")
fn2("大家好")
# 使用nonlocal关键字修改外部函数的值
def outer(num1):

    def inner(num2):
        nonlocal num1
        num1 += num2
        print(num1)

    return inner

fn = outer(10)
fn(10)
fn(10)
fn(10)
fn(10)

■ 使用闭包实现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)

相关推荐

  1. 9、python-

    2024-04-25 00:54:01       62 阅读
  2. Python

    2024-04-25 00:54:01       56 阅读
  3. Python

    2024-04-25 00:54:01       44 阅读
  4. Python

    2024-04-25 00:54:01       45 阅读
  5. python基础---

    2024-04-25 00:54:01       33 阅读
  6. Python与装饰

    2024-04-25 00:54:01       59 阅读
  7. python的应用

    2024-04-25 00:54:01       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 00:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 00:54:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 00:54:01       82 阅读
  4. Python语言-面向对象

    2024-04-25 00:54:01       91 阅读

热门阅读

  1. yarn的安装于配置

    2024-04-25 00:54:01       40 阅读
  2. auto关键字的妙用

    2024-04-25 00:54:01       34 阅读
  3. ElasticSearch(3)

    2024-04-25 00:54:01       35 阅读
  4. ceph存储系统

    2024-04-25 00:54:01       28 阅读
  5. Android判断应用是否在前台运行

    2024-04-25 00:54:01       33 阅读
  6. 2024/4/24总结

    2024-04-25 00:54:01       32 阅读
  7. 手撕代码: C++实现数据的序列化和反序列化

    2024-04-25 00:54:01       29 阅读