Python代码阅读(第45篇):柯里化

本文中的代码实现了Corey的功能。

[En]

The code read in this article implements the function of Corey.

在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

curry

from functools import partial

def curry(fn, *args):
  return partial(fn,*args)

EXAMPLES
add = lambda x, y: x + y
add10 = curry(add, 10)

add10(20) # 30

curry函数接收一个接受多个参数的初始函数和部分参数,返回接受单一参数的函数。

函数使用 functools.partial()生成一个部分对象。该部分对象被调用时的行为类似于 fn给定了部分参数被调用,需要提供剩余参数。

在直觉上,柯里化声称”如果你固定某些参数,你将得到接受余下参数的一个函数”。所以对于有两个变量的函数 x+y,如果固定了 y=2,则得到有一个变量的函数 x+2

functools.partial(func, /, *args, **keywords)
返回一个新的 部分对象,当被调用时其行为类似于 func 附带位置参数 args和关键字参数 keywords被调用。 如果为调用提供了更多的参数,它们会被附加到 args。 如果提供了额外的关键字参数,它们会扩展并重载 keywords。 大致等价于:

def partial(func, /, *args, **keywords):
  def newfunc(*fargs, **fkeywords):
    newkeywords = {**keywords, **fkeywords}
    return func(*args, *fargs, **newkeywords)
  newfunc.func = func
  newfunc.args = args
  newfunc.keywords = keywords
  return newfunc

Original: https://www.cnblogs.com/felixz/p/15668570.html
Author: FelixZ
Title: Python代码阅读(第45篇):柯里化

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/510576/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 计算机毕业设计Python+Django的寻人失物失物招领系统(源码+系统+mysql数据库+Lw文档)

    运行环境 开发语言:Pythonpython框架:django软件版本:python3.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm/vsco…

    Python 2023年8月5日
    076
  • MySQL 基础操作

    MySQL基础操作 使用方法: 方式一: 通过图型界面工具,如 Navicat 等( 高级课使用 ) 方式二: 通过在命令行敲命令来操作 ( 基础阶段使用 ) SQL ( Stru…

    Python 2023年6月10日
    057
  • pytest_mysql_pytest扫盲1–pytest运行规则

    1、pytest安装: pip install -U pytest -i https://pypi.tuna.tsinghua.edu.cn/simple 2、pytest运行方式…

    Python 2023年9月14日
    039
  • MySQL经典案例50题

    建表、插入数据 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(20) NOT NULL DEFAULT”, s_b…

    Python 2023年10月24日
    051
  • [python] 简单遗传算法与粒子群算法

    遺伝的アルゴリズム 遺伝的アルゴリズムを使用し、下記の関数の最大化及び最小化を実現しなさい。ただし、x1、x2、x3の取り得る値は0~15とし、それぞれの遺伝子型は4ビットのビット…

    Python 2023年6月6日
    070
  • 数据挖掘中的常见数据预处理方法总结

    一 . 基本概念 为什么需要数据预处理: 现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术 数据…

    Python 2023年10月26日
    037
  • NeRF神经辐射场ECCV2020

    目录 NeRF前置内容:渲染和观察方向 摘要 1.Introduction 2.Related Work * 2.1.Neural 3D shape representations…

    Python 2023年10月9日
    037
  • 如何利用Dpabi,AFNI,FSL软件计算种子点的功能连接?

    种子点功能连接方法基本概念和实现 种子点的功能连接基本概念 功能连接在数据处理里的具体应用 如何使用 Dpabi, AFNI 和 FSL 计算种子点功能连接呢? * 选择种子点 利…

    Python 2023年10月8日
    060
  • Python Django项目-Django基本运行过程

    这几天一直在搞这个项目随着Django的更新很多以前的代码需要重新修改。因此我将为大家写下新的django+pyecharts的内容,最终目标是实现动态生成数据,并通过pyecha…

    Python 2023年8月3日
    052
  • Pytest框架运行方式(主函数、命令行、配置、执行顺序)

    一、pytest单元测试框架 二、单元测试框架和自动化测试框架有什么关系? 三、pytest简介 四、使用pytest,默认的测试用例的规则以及基础应用 五、pytest测试用例的…

    Python 2023年9月13日
    037
  • pandas 切分

    %% import numpy as np import pandas as pd %% df = pd.read_excel(‘./data/demo_04.xlsx…

    Python 2023年8月8日
    068
  • [Pandas] 数据追加 df.append

    df.append()可以将其他DataFrame附加到调用方的末尾,并返回一个新对象 它是最简单、最常用的数据合并方式 语法 df.append(other, ignore_in…

    Python 2023年8月7日
    034
  • 手把手教你使用Numpy、Matplotlib、Scipy等5个Python库

    导读:用Python设计控制系统,你会用到接下来要介绍的几个模块:Numpy、Matplotlib、Scipy、Sympy和Python-Control。 作者:南裕树(Yuki …

    Python 2023年9月1日
    052
  • C++模板(初阶)

    本章主要讲解三个部分: 泛型编程、函数模板、类模板 目录 泛型编程 函数模板 函数模板概念 函数模板的格式 函数模板的原理 函数模板的实例化 隐式实例化 显式实例化 模板参数的匹配…

    Python 2023年9月26日
    035
  • 卷积神经网络CNN实现mnist手写数字识别

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年9月27日
    067
  • Python基础 — 变量进阶

    目录 ​​变量进阶​​ ​​01. 变量的引用​​ ​​1.1 引用的概念​​ ​​1.2 变量引用 的示例​​ ​​1.3 函数的参数和返回值的传递​​ ​​02. 可变和不可变…

    Python 2023年5月24日
    060
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球