在Python中是否有像JavaScript一样编写lambda对象的方法?

4

JS中,我可以像这样定义一个对象:

foo = {"foo": 42, "bar": function(){/* do something */}}

在Python中是否有类似的方法?


毫不意外,您可以使用 lambda。但是在 lambda 中只有简单的表达式是有效的。 - Daniel Roseman
2个回答

6
以下方法可能有效:
# Define a function    
def foo():
    print("foo")

# Define a dictionary    
d = {"a":1, "b":foo}

d["b"]()

输出:foo

5

Python有lambda函数。 lambda函数是一个小的匿名函数。一个lambda函数可以接受任意数量的参数,但只能有一个表达式。

语法:

lambda arguments : expression

你可以尝试以下代码:

foo = {"foo": 42, "bar": lambda a : a + 10}

您可以按照以下方式使用它:

foo['bar'](5)

以下是您将获得的输出:
15

整个示例:

>>> foo = {"foo": 42, "bar": lambda a : a + 10}
>>> foo['bar'](5)
15

您也可以通过与Loss of human identity提供的解决方案相同的方式调用标准函数。

示例

def my_func(a):
    return a + 10
foo = {"foo": 42, "bar": my_func}
foo['bar'](5)
# output
# 15

好的,看起来不错,但它不是一个“真正”的对象。JS对象可以使用.foo符号调用,而Python字典则不行。 - Marius Illmann
你如何称呼JavaScript中类似 lambda 的对象? - Jeril

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接