首页 > 编程语言 >Python---- 一闭三器

Python---- 一闭三器

时间:2023-02-03 17:12:57浏览次数:36  
标签:函数 Python inside ---- 三器 external func print def

一闭三器

  • 闭包

  • 装饰器

  • 迭代器

  • 生成器

闭包

保证数据安全

闭包 结构

内层函数对外层函数的局部变量的使用,内层函数被称为闭包函数

闭指的是:该函数的内部函数

包指的是:内部函数在外部被引用

 

构成条件

1、函数嵌套

2、外部函数返回内部函数名

3、内部函数使用外部函数的变量

def external():
    var = "我是闭包"

    # 函数嵌套
    def inside():
        # 内部函数使用外部函数变量
        print(var)
    # 外部函数返回内部函数名
    return inside


res = external()
# external()的返回值为inside,所以res() == inside()
res()
def external():
    name = "外层函数"

    def inside():
        print("我是内部函数")
        return name

    return inside


res = external()
r1 = res()
print(r1)

装饰器

装饰器的本质是闭包

装饰器是 Python 的一个重要部分。简单地说:他们是不改变函数功能的基础上,给函数增加一些功能。他们有助于让我们的代码更简短,也更有范儿。

1、函数可以作为参数进行传递

def demo():
    print("我是demo函数")


def func(insert):
    insert()


func(demo)
def demo():
    return 10


def func(demo):
    print(demo + 15)


func(demo())
# 输出结果为25

 

2、装饰器实例

# 写好闭包结构 外部函数提供一个自由参数
def external(func):
    def inside():
        print("开启外挂")
        func()
        print("关闭外挂")
        print("-" * 25)
    return inside


# func()代表我们需要装饰的函数,在需要装饰的函数前@装饰器的外部函数名
@external
def play_lol():
    print("德玛西亚草丛三兄弟已就位")


@external
def play_wow():
    print("兽人永不为奴")


play_lol()
play_wow()

 

标签:函数,Python,inside,----,三器,external,func,print,def
From: https://www.cnblogs.com/cenb/p/17089887.html

相关文章

  • laravel-admin基本使用
    如何用这个去做实现后台简单功能。【1】laravel-admin的安装https://laravel-admin.org/docs/zh/1.x/installation#生成的文件1.首先我们要确保已经安装了laravel 我使......
  • 1398:短信计费
    #include<iostream>usingnamespacestd;intmain(){ intn; cin>>n; floata,b=0; for(inti=0;i<n;i++){ cin>>a; if(a<70){ b=b+0.1; }else{ b=b+0.1; ......
  • MySQL:锁
    锁的概述事务的隔离性数据库锁来实现。锁是计算机协调多个进程或线程并发访问某一资源的机制。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据......
  • 数据结构-基础
    1.什么是数据结构?数据结构是计算机存储、组织数据的方式。数据结构是指数据之间存在一种换种多种特定关系的数据元素的集合。结构包括物理结构和逻辑结构。数据逻辑结构......
  • 铠二
    熊猫侠vs刑天......
  • bugku xxx二手交易市场
    打开靶场分析很明显需要先注册一个账号才行完成后发现两个上传图片的地方一个是更换头像,一个是发布内容先更换头像试试首先上传一个木马图片,会发现一直转圈圈,(卡......
  • 三元运算符
    三元运算符packageoperator;publicclassdemo06{publicstaticvoidmain(String[]args){//三元运算符x?a:b//如果x=true,则结果为a,否......
  • 扩展赋值运算符
    扩展赋值运算符packageoperator;publicclassdemo05{publicstaticvoidmain(String[]args){inta=10;intb=20;a+=b;//a......
  • mysql常用语法汇总
    增删改查--新增insertintotb_student(`name`,age,sex,classid)values('李四',18,1,1);--删除deletefromtb_studentwhereid=1;--修改updatetb_students......
  • BZOJ3786 星系探索
    写了发假的\(\text{ETT}\),\(\text{FQH-Treap}\)维护括号序\(\text{Code}\)#include<bits/stdc++.h>#defineINinline#defineebemplace_backusingnamespacestd......