我对理解此代码有疑问:
def dispatch_dict(operator, x, y):
return {
'add': lambda: x + y,
'sub': lambda: x - y,
'mul': lambda: x * y,
'div': lambda: x / y,
}.get(operator, lambda: None)() # here I don't understand this brackets
# after closing get function
print(dispatch_dict('sub', 2, 4))
答案 0 :(得分:1)
.get()
函数返回lambda(从dict或只是空的lambda)。 Lambda is an anonymous function,因此.get()
返回一个函数。需要使用这些括号来返回此函数的结果,而不是函数本身,因为使用它们,函数将调用并返回结果。
答案 1 :(得分:0)
您的.get(operator, lambda: None)
返回函数对象-例如https://medium.com/python-pandemonium/function-as-objects-in-python-d5215e6d1b0d,然后添加()即可调用该函数。
这种简化可能会有所帮助:
def add_lambda(x, y):
add = lambda: x + y # Note this is not PEP-8 compliant
return add
the_function = add_lambda(31, 11) # returns lambda function
the_function() # here are your brackets, this returns 42