首页 > 编程语言 >Python-2闭包

Python-2闭包

时间:2023-04-26 11:44:25浏览次数:41  
标签:闭包 count 函数 Python inner func def

1.闭包:闭包是在嵌套函数中,内函数使用外函数的局部变量,并且返回了内函数。

2.特点:延长了局部变量的生命周期,持续到脚本执行结束。

3.意义:保护了内部变量,防止像使用全局变量(global)的时候被篡改。

nonlocal:是一个关键字用于访问封闭函数作用域中的变量。当内层函数在外层函数中被定义时,它们可以访问该外层函数的变量,这些变量被称为封闭函数变量。

代码:

"""
coding:utf-8
@Software:PyCharm
@Time:2023/4/26 11:11
@author:Panda
"""


# 闭包
def hobby():  # 外函数
    lin = 'xxx'  # 局部变量
    def hobbye():
        print('测试闭包函数{}'.format(lin))
    return hobbye()
hobby()
# Output:测试闭包函数xxx


# 延长num的周期,在闭包返回的时候注意“return inner”,如果两个函数都有传参
# 注意需要传出函数名,在最外面进行调用函数,否则无法调用到内部函数
def outer(num):
    def inner(val):
        print(num + val)
    return inner

func = outer(10)
func(15)
# Output:25


def outer():
    count = 0
    def inner():
        nonlocal count
        count += 1
        print(count)
    return inner


func = outer()
func()
func()
count = 20  # 因为有nonlocal的存在 不是全局变量 所以无法被篡改
func()
func()
func()

# Output:1 2 3 4 5

 

标签:闭包,count,函数,Python,inner,func,def
From: https://www.cnblogs.com/future-panda/p/17355073.html

相关文章

  • Python通过GPIO从DHT11温度传感器获取数据
    Python通过GPIO从DHT11温度传感器获取数据设备:树莓派4B、DHT11、杜邦线DHT11DHT11是一款有已校准数字信号输出的温湿度传感器。其精度湿度±5%RH,温度±2℃,量程湿度20-90%RH,温度0~50℃。精度不高,但价格低廉。DHT11使用单总线通信。供电电压3.3~5V。线路连接DHT11 树莓......
  • python subprocess Popen非阻塞,读取adb日志
    简单版fromthreadingimportThreadfromqueueimportQueue,Emptyimportshlexif__name__=='__main__':print_hi('PyCharm')#Car().run()defenqueue_output(stdout,queue):withopen("www.log",'w......
  • python安装过程中的问题
    1.用pip安装插件时报Fatalerrorinlauncher:Unabletocreateprocessusing'"D:\ProgramFiles\Python311\python.exe""D:\ProgramFiles\Python311\Scripts\pip.exe"installpyinstaller':???????????解决:1.检查Python安装的路径是否正确。在这种......
  • 一篇文章教会你什么是Python模仿强类型
    今日鸡汤此曲只应天上有,人间难得几回闻。前言   Hi,各位小伙伴,你们好,今天我们来说一个Python未来趋势的并且一个好玩的东西。    我们可能多多少少都听过一句话,动态一时爽,重构火葬场。从生产角度出发,Python确实是一门很优秀的语言,但是当多人协作时,或者接手别人Python代码时,......
  • 力扣 819. 最常见的单词--python
    给定一个段落(paragraph)和一个禁用单词列表(banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。 示例:输入:paragraph......
  • python 使用selenium 不开启浏览器
    selenium不启动浏览器模式打开浏览器再启动会浪费时间,对爬虫的性能也是个影响,还有一种就是不打开浏览器。如下参数是针对chrome的全局参数,不能自定义参数。fromseleniumimportwebdriver#还有一些其他的参数'''#添加UAoptions.add_argument('user-agent="MQQBrowser/26......
  • Python的socket编程
    目前处在学习python爬虫的阶段,昨天看到了python的socket模块,分别实现TCP、UDP时间戳回显。1、tcp通信server和client代码#tcpServer.py#!/usr/bin/python#-*-coding:utf-8-*-fromsocketimport*fromtimeimportctimeHOST=''PORT=21156BUFSIZE=1024ADD......
  • python open 用法
    函数语法open(file,mode,buffering,encoding,errors,newline,closefd,opener)参数说明:name:一个包含了你要访问的文件名称的字符串值。mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读......
  • python 快速替换csv数据集字符串列表中的表情符号为空,asyncio,re,pandas
     传统的字符串列表替换字符串使用遍历非常慢比如下面这段代码,如果处理几十万或上百万的数据集时,会非常的慢,几小时几天都可能importrep=re.compile(u'['u'\U0001F300-\U0001F64F'u'\U0001F680-\U0001F6FF'u'\u2600-\u2B55\U00010000-\U0010ffff]+')#text="超详细修......
  • python安装pillow报错
    Fatalerrorinlauncher:Unabletocreateprocessusing'"D:\ProgramFiles\Python311\python.exe" "D:\ProgramFiles\Python311\Scripts\pip.exe"installpillow':??????????? 解决:cmd窗口执行32位:python3-mpipinstall--up......