Python相当于JavaScript函数对象。

时间:2018-01-23 09:40:03

标签: javascript python

我在JavaEE过去两年一直在开发fullstack。我想粉碎我的Python知识 所以我想知道是否有一个Python等效于这个JavaScript构造,我希望将涉及使用Python词典:

var myFunctions = {
    'greet': function(name){
        return "Hello, " + name;
    },

    'farewell': function(time){
        return "See you " + time;
    }
}

所以我可以这样调用函数:

let greetMarta = myFunctions['greet']("Marta");

4 个答案:

答案 0 :(得分:4)

您可以使用lambda来定义非常简单的函数,例如内联函数;但是它们只能由一个表达式组成:

my_functions = {
    'greet': lambda name: "Hello {}".format(name),
    'farewell': lambda time: "See you {}".format(time)
}

对于任何更复杂的事情,你需要定义一个独立的函数,然后在dict中引用它:

def my_complex_function(param):
    ... logic ...
    return whatever

my_functions = {
    'complex_func': my_complex_function,
    ...
}

答案 1 :(得分:0)

def greet(name):
    return "Hello, " + name

def farewell(time):
    return "See you " + time

my_functions = 
{
    "greet": greet,
    "farewell": farewell
}

答案 2 :(得分:0)

嗯,函数是Python中的一个对象,你可以传递,你的myFunctions在这里被称为字典(而不是Javascript中的对象):

myfunctions = {
    'greet': lambda x: print("Hi" ,x,"!"),
    'bye'  : lambda x: print("Bye",x,"!")
}

如果你想为函数写更长的东西,在字典之外定义它,只需使用值的名称。编辑:请参阅@ Venkat的答案。

答案 3 :(得分:0)

def greet(name):
    return "Hello, " + name;

def farewell(time):
    return "See you " + time;

my_dict = {'greet' : greet, 
           'farewell' : farewell}

greetMarta = my_dict['greet']("Marta");

使用字典来获取函数并执行