首页 > 其他分享 >闭包函数

闭包函数

时间:2022-10-16 19:36:47浏览次数:49  
标签:闭包 传参 函数 res 代码 register

目录

闭包函数

一、基础知识

所谓闭包函数就是定义在函数内部的函数,但是他有一些限制条件:

1、定义在函数内部

2、用到了外部函数名称空间中的名称

def index():
    name = 'jason'
    def inner():
        print(name)

二、作用

闭包函数在使用的过程中的作用其实很简单——是另外一种给函数体代码传参的方式!!!

通过之前的学习我们了解到,当函数需要参数的时候我们会在括号内加入他们需要的参数,这是给函数传参的第一种方式。第二种方式就是使用闭包函数给其他函数体代码传参。代码举例:

# 给函数体代码传参的方式1:代码里面缺什么变量名形参里面就补什么变量名
def register(name,age):
    print(f"""
    姓名:{name}
    年龄:{age}
    """)
register('jason', 18)
# 给函数体代码传参的方式2:闭包函数
def outer(name, age):
    def register():
        print(f"""
        姓名:{name}
        年龄:{age}
        """)

    return register


res = outer('jason', 18)
res()
res()
res = outer('kevin', 28)
res()
res()
res()

第一种情况下的参数传参简单明了就不做具体说明了,第二种方式是使用了闭包函数的方式来传参的,由于工作流程有些绕,我们分条具体解释:

1.当我们运行代码的时候会先定义函数,但是不会运行其中的代码。

2.接着就到了res代码堆这里,我们需要先看代码右边的内容进行了什么操作

3.第一个res代码运行了outer函数并且给他传入了'jason', 18两个参数,之后我们回到代码内部根据流程运行代码,最后发现返回值是register函数名

4.这里我们可以发现第一个res变量名绑定了register函数名

5.后面两行代码都是在调用res绑定的当前参数下的register函数,返回的信息是'jason', 18

6.到了第二次给res变量名赋值的地方,也是一样的判断方式,可以发现现在res绑定成了在'kevin', 28两个参数下的register函数

7.之后又是连续几次调用res绑定的在'kevin', 28两个参数下的register函数,返回的信息也是'kevin', 28


标签:闭包,传参,函数,res,代码,register
From: https://www.cnblogs.com/zhihuanzzh/p/16796847.html

相关文章

  • 递归函数
    目录递归函数递归函数递归函数就是直接或间接调用函数自身的函数,当我们使用这种函数的时候,并不会出现预料之中的死循环,当循环次数达到1000左右就会被解释器强行停止,虽然......
  • 函数
    目录函数一、函数基础知识1、概念讲解2、语法结构3、函数的定义与调用4、函数的分类5、函数的返回值二、函数参数1、位置参数位置形参位置实参2、默认参数(关键字参数)关键字......
  • Mysql 系列 | 性能优化 - 函数调用
    sql性能优化,是代码编写过程中必定要考虑的内容,弄懂性能背后的逻辑,起到事半功倍的效果。今天学习几种常见的简单优化场景。条件字段中调用函数以公司的打卡信息表为例,......
  • python函数应用
    一、函数的作用封装代码,代码重用二、定义函数def函数名(参数):  代码1   代码2调用函数函数名()......
  • Hooks与普通函数的区别
    Hooks与普通函数的区别在这里的Hooks具体指的是自定义Hooks,自定义的Hooks与我们定义的普通函数类似,都可以封装逻辑,以实现逻辑的复用。Hooks实际上是一种特殊的函数,而由于H......
  • 布隆过滤器是否好用,得看哈希函数写成啥样
    作者:小傅哥沉淀、分享、成长,让自己和他人都能有所收获!......
  • 《流畅的Python第二版》读书笔记——函数作为一等对象
    引言这是《流畅的Python第二版》抢先版的读书笔记。Python版本暂时用的是python3.10。为了使开发更简单、快捷,本文使用了JupyterLab。函数是Python的一等(first-class)对象......
  • 函数的内置方法
    内置函数就是python给你提供的,拿来直接用的函数.截至到python版本3.6.2python一共提供了68个内置函数,他们就是python直接提供给我们的.作用域相关locals()返回当前作......
  • 函数的初步认识及注意
    1.应该定义在main函数外面,就是写在源文件下面2.语法 返回值类型函数名(【参数列表】)      {       写上被调用的代码(简称函数体)     ......
  • 【C++】统计string里面出现的字符的个数(使用count函数)
    题目:给出一个string字符串,统计里面出现的字符的个数解决方案:使用算法库<algorithm>里面的count函数(不是s.count()!!count是单独作为一个函数,而不是作为一个方法),使用方法是......