在python中的lambda

栏目: Python · 发布时间: 6年前

内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/7974442/lambda-in-python

我在 python 中重新考虑一些方案练习(如果有意义的话),找出py可以在FP方面做什么.我的问题在python中涉及lambda:

我可以在python中定义一个函数作为参数之一吗?

想想:

def f (op,x,y):
    #return some lambda function that combines x and y in the appropriate way
    #i.e if op is +, then return x+y, if op is -, then return x-y etc

#Edit : added usage
#this should be called like this:
f(+, 1,2) #should return 3

我知道这是可能的方案,但有什么等同于python?我得到的印象是,在python中的lambda只是定义一个方法的一种较短的方式,我没有找到任何方法来定义python中的一般组合函数.

我可以在你的问题中看到一些点,让我们按顺序通过它们:

我可以把一个函数作为参数传递给某人吗?

是:

def f(op, x, y):
    return op(x, y)

def add(x, y):
    return x + y

f(add, 10, 7) #gives 17

2.那么呢呢呢?

与方案不同,Python操作符不是函数,因此您不能直接作为参数传递它们.您可以自己创建包装器功能,也可以从标准库导入 operator 模块.

import operator

operator.add(1, 2)
(lambda x,y : x+y)(1, 2)

在大多数情况下,运算符不是真正的功能是有点难过,但至少Python给我们链接的比较,如10<= x<100交换... 那么Python和Scheme之间有什么区别呢? 在一般意义上,Python中的函数与Scheme中的函数一样强大,但有一些注意事项: lambda关键字有限 您只能具有单个表达式作为函数体

f = lambda x, y: x + y

由于Python中有一些是语句而不是表达式(赋值,2.x打印,…)的东西,往往需要回到命名函数.

有关闭

def make_printer(msg):
    def printer():
        print msg
    return printer

printer('a message')()

但它们中变异的变量是一种痛苦

这不行.它尝试绑定内部函数的新n,而不是使用外部函数

def make_counter(n):
    def inc():
        n = n + 1
        return n
    return inc

新的3.x非本地关键字

def make_counter(n):
    def inc():
        nonlocal n
        n = n + 1
        return n
    return inc

解决方案w /可变对象

def make_counter(n):
    nw = [n]
    def inc():
       nw[0] = nw[0] + 1
       return nw[0]
    return inc

对象而不是关闭.使用魔术__call__方法假装其功能

class Counter:
    def __init__(self, n):
        self.n = n
    def __call__(self):
        self.n += 1
        return self.n

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/7974442/lambda-in-python


以上所述就是小编给大家介绍的《在python中的lambda》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解网络硬件

图解网络硬件

[日] 三轮贤一 / 盛荣 / 人民邮电出版社 / 2014-7 / 69.00元

本书详细介绍了计算机网络硬件的相关知识,在对硬件设备、相关技术及规范进行详尽考据和整理的同时,侧重工程实践,重点讲述了在实际网络建设工程中真实使用的网络硬件设备及其相关背景知识,能够帮助读者深入理解计算机网络在工程实践中某些容易混淆的概念,如L3交换机和路由器等。 本书在讲解的同时,还辅以丰富的图例,使计算机网络设备的真实情况一目了然,同时深入浅出地介绍了原本复杂抽象的计算机网络术语,因此对......一起来看看 《图解网络硬件》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换