Pycharm(九)函数的闭包、装饰器

目录

一、函数参数

二、闭包

三、装饰器


一、函数参数

python 复制代码
def func01():
    print("func01 shows as follows")
func01()
# 函数名存放的是函数所在空间的地址
print(func01)#<function func01 at 0x0000023BA9FC04A0>
func02=func01
print(func02)#<function func01 at 0x0000023BA9FC04A0>
func02()
print('-'*30)

def foo(func):
    func()
foo(func01)

这段代码的运行结果如下:

可以得到这样的结论;

函数名存放的是函数所在空间地址;

函数名()执行函数名所存放空间地址中的代码。

func01 =func02函数名可以像普通变量一样赋值,func01() 等价于 func02(),也可以作为参数去使用。

二、闭包

我们知道当函数调用完,函数内定义的变量都销毁了,但是我们有时候需要保存函数内的这个变量,每次在这个变量的基础上完成一系列的操作,比如: 每次在这个变量的基础上和其它数字进行求和计算,那怎么办呢?就可以通过闭包来解决这个需求。

闭包

定义:在函数嵌套的前提下,内部函数使用了外部函数的变量, 并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。

作用:闭包可以保存函数内部的变量,不会随着函数的调用完而销毁。

构成条件:①在函数嵌套(函数里面再定义函数)的前提下 ②内部函数使用了外部函数的变量(还包括外部函数的参数) ③外部函数返回了内部函数。

如下代码:

python 复制代码
'''
闭包
    定义:
        在函数嵌套的前提下,内部函数使用了外部函数的变量,
        并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。
    作用:
        闭包可以保存函数内部的变量,不会随着函数的调用完而销毁。
    构成条件:
        ①在函数嵌套(函数里面再定义函数)的前提下
        ②内部函数使用了外部函数的变量(还包括外部函数的参数)
        ③外部函数返回了内部函数
'''
#1.在函数嵌套(函数里面再定义函数)的前提下
def func_out(num1):
    #2.内部函数使用了外部函数的变量(还包括外部函数的参数)
    def func_inner(num2):
        num=num1+num2
        print(f'num现在的值:{num}')
    #3.外部函数返回了内部函数
    return func_inner
f=func_out(10)
f(1)
f(2)

运行结果:

解释:

结论:闭包可以对外部函数的变量进行保存。

闭包的使用:

python 复制代码
def config_name(name):
    def say_info(info):
        print(name+':',info)
    return say_info
Tom=config_name('Tom')
Tom('你好!')
Tom('你吃饭了吗?')

闭包不仅可以保存外部函数的变量,还可以提高代码的复用性。

相关推荐
m沐沐3 小时前
【深度学习】卷积神经网络 数据增强、保存最优模型实现,详细解读
人工智能·python·深度学习·机器学习·cnn·数据增强
天青色等烟雨..3 小时前
全流程ArcGISPro空间分析、三维建模、可视化及Python融合应用技术
开发语言·python
极光代码工作室3 小时前
基于Spark的日志监控与分析平台
大数据·hadoop·python·spark·数据可视化
AOwhisky3 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
浊酒南街3 小时前
subprocess.check_output函数介绍
python
TheBestRucy3 小时前
RAG知识库问答系统落地:从向量检索到上下文增强的全链路实践
人工智能·python·langchain·aigc·交互
可视化运维管理爱好者3 小时前
nVisual Studio:数据中心网络智能规划设计工具
网络·ide·visual studio
AOwhisky4 小时前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
其实防守也摸鱼4 小时前
补天SRC新手入门指南:从0到1的漏洞挖掘之路
网络·python·学习·安全·web安全·数据挖掘·挖洞
lupai4 小时前
手机在网状态查询 API 新手实战指南
大数据·python·智能手机