Python中有没有办法像JS中那样编写像lambda这样的对象

Mar*_*ann 4 javascript python

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

foo = {"foo": 42, "bar": function(){/* do something */}}
Run Code Online (Sandbox Code Playgroud)

有没有办法在Python中做同样的事情?

Emp*_*yee 6

以下可能有效:

# Define a function    
def foo():
    print("foo")

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

d["b"]()
Run Code Online (Sandbox Code Playgroud)

输出: foo


Jer*_*ril 5

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

句法:

lambda 参数:表达式

您可以尝试以下方法:

foo = {"foo": 42, "bar": lambda a : a + 10}
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式使用它:

foo['bar'](5)
Run Code Online (Sandbox Code Playgroud)

您将获得以下输出:

15
Run Code Online (Sandbox Code Playgroud)

整个示例:

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

您也可以通过丢失人的身份以相同的方式引用其他解决方案来调用标准函数。

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