自学python(05) 闭包操作

在学习闭包的过程中有不少疑惑,查看了一些书籍资料和很多前辈的博客,感觉大都写的比较严谨或者比较学术化,还是不能帮助新手理解闭包的操作过程,以下内容主要是基于个人为了好理解闭包操作而总结,并不严谨,仅供参考。
  • 1
  • 2

首先看什么是内部函数? 
在函数内部声明的函数就是内部函数 
格式:

def 函数名():
    局部变量...
    def 内部函数名():
        Python功能代码...
  • 1
  • 2
  • 3
  • 4

示例:

def funName():
    name = 'dragon'
    #定义一个内部函数
    def inner():
        print('我是内部函数')

'''注释:
    1.内部函数的本质就是局部变量(函数就是一个变量)
    2.内部函数在函数外部不可以直接调用
    3.内部函数在函数内部调用(当然,必须要定义内部函数之后才能调用)
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

内部函数是函数内部声明的函数,不能直接在外部函数调用,因此:把内部函数(或者局部变量)能够调到全局环境中使用的方法就是闭包操作

以下是闭包最常用方法 
思路:为了把函数内部的局部变量和内部函数调到全局变量,就在函数内部再写一个函数,这个函数可以没有具体函数式,新建函数的目的就是利用return语句调出我们想要的局部变量和内部函数 
格式:

def 函数名():
    局部变量...
    def 内部函数名():
        pass
    return (局部变量,内部函数...)
  • 1
  • 2
  • 3
  • 4
  • 5

示例:

# 定义一个函数
def outer():
      # 定义几个局部变量
    money = 100
    count = 10
    strs = 'boys'
      # 定义一个内部函数 (比如算两个数的和)
    def inner(a,b):
        result = a + b
        print(result)
      # 新建函数myfunc用于调出我们想要的内部函数和局部变量
    def myfunc():
        pass
        return money,inner  #带出我们想要的money变量和inner函数
    return myfunc        #带出装有我们想要的变量的函数myfunc

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

接下来一层层运行函数就可以得到我们想要的局部变量和内部函数了

# 运行outer函数返回得到myfunc函数,用func1接收
func1 = outer()
# 运行func1函数返回得到money变量和inner函数组成的元组,再通过索引分别得到
func2 = func1()   #用func2接收func1运行得到的元组
# 获取money变量
vars = func2[0]
# 获取inner函数
func = func2[1]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这样我们就成功把局部变量money和内部函数inner拿到全局环境中了!

Python学习交流、资源共享群:563626388 QQ

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值