在JS中,我可以这样定义一个对象:
foo = {"foo": 42, "bar": function(){/* do something */}}
Run Code Online (Sandbox Code Playgroud)
有没有办法在Python中做同样的事情?
以下可能有效:
# Define a function
def foo():
print("foo")
# Define a dictionary
d = {"a":1, "b":foo}
d["b"]()
Run Code Online (Sandbox Code Playgroud)
输出: foo
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)