问题描述
我在Python 3中具有以下简单函数:
def func(i,j):
return lambda i,j: (i*j)
下面是此函数应执行的示例:
IN: func(4,'Hello')
OUT: ('Hello' 'Hello' 'Hello' 'Hello')
但是,实际输出是存储结果的内存中的地址。 我需要进行哪些修改?
1楼
如果要返回i * j
的值,请继续并返回它。
Lambda表示它返回的功能可以按您希望的方式运行。
考虑一下:
def mul(x, y):
return x * y
def func(x, y):
return lambda x, y: x*y
现在,让我们看一个小shell会话:
>>> mul(4, 'hello')
'hellohellohellohello'
>>> func(4, 'hello')
<function 'lambda' at ...>
>>> f = func(4, 'hello')
>>> f(4, 'hello')
'hellohellohellohello'
如您所见,当您使用lambda时,您的函数将返回一个函数,而该函数又需要被调用。
参数x
和y
与lambda函数中的参数不对应。
由于您的预期输出是x
个y
的元组,因此请在函数中使用一个元组:
def func(i, j):
return (j,) * i