专栏首页一番码客python之函数式编程之闭包

python之函数式编程之闭包

闭包 ( Closure) 是词法闭包 ( Lexical Closure) 的简称, 是引用自由变量的函数。这个被引用的自由变量将与这个函数一同存在, 即使已经离开创造它的环境也不例外。所以, 闭包是由函数和与其相关的引用环境组合而成的实体。闭包是函数式编程的重要语法结构。

Python 也支持这一特性。在 Python 中创建一个闭包可以归结为以下三点:

● 闭包函数必须有内嵌函数;

● 内嵌函数需要引用上一级函数的变量;

● 闭包函数必须返回内嵌函数。

举个闭包例子:

#! /usr/bin/env python
def GreetingConfig(prefix):
    def greeting(postfix):
    print(prefix, postfix)
    return greeting
    
M = GreetingConfig("good morning")
M("efon")
M("fighting")

本文分享自微信公众号 - 一番码客(efonmark),作者:efonfighting

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python套路-函数式编程之匿名函数与偏函数

    当调用函数时, 有时不需要显示定义好一个函数, 直接传入一个匿名函数更为方便。python可使用lambda表达式创建匿名函数。

    efonfighting
  • python之函数式编程

    没有“边界效应”的函数:在任何情况下,使用相同参数调用函数产生的结果始终相同,即没有函数内部状态的变化会影响输出结果。在python中,如果函数里包含有全局变量...

    efonfighting
  • python函数式编程之高阶函数

    这里以内置函数abs()为例,可以把abs函数赋值给另一个变量,然后这个变量就等同于abs函数了。

    efonfighting
  • Go 语言基础入门教程 —— 函数篇:匿名函数和闭包

    熟悉 Laravel 框架(一个 PHP Web 框架)的同学对匿名函数应该很熟悉,Laravel 框架中有着大量匿名函数的应用场景,比如路由定义、绑定实现到接...

    学院君
  • “西湖论剑”开幕倒计时5天|嘉宾演讲剧透之第一季

    内容简介:新一轮世界科技革命和产业变革孕育兴起将引发未来世界经济政治格局深刻调整,可能重塑国家竞争力在全球的位置,颠覆现有很多产业的形态、分工和组织方式,实现多...

    安恒信息
  • docker之使用virtualbox安装cenos7系统

    (1)下载virtualbox,并进行安装。默认选择即可,同时要注意安装其提示所需的软件。

    绝命生
  • Java源码解析系列-ThreadLocal

    此类提供线程本地变量。这些变量与普通变量不同,因为每个访问一个变量(通过其get或set方法)的线程都有其自己的,独立初始化的变量副本。 ThreadLocal...

    JavaEdge
  • ThreadLocal 核心源码解析

    此类提供线程本地变量。这些变量与普通变量不同,因为每个访问一个变量(通过其get或set方法)的线程都有其自己的,独立初始化的变量副本。 ThreadLocal...

    JavaEdge
  • 「mysql优化专题」主从复制面试宝典!面试官都没你懂得多!(11)

    主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。

    java进阶架构师
  • Kotlin Vocabulary | 内联函数的原理与应用

    我们的项目里常常会创建一些 Util 类,用于分类整理那些会在许多地方用到的小型函数 (也称实用函数),如果这类函数接收了另一个函数作为参数,则可能会造成一些额...

    Android 开发者

扫码关注云+社区

领取腾讯云代金券