以下是代码:
def my_func(f, arg):
return f(arg)
print((lambda x: 2*x*x, (5)))
>>>(<function <lambda> at 0x10207b9d8>, 5)
如何解决错误,有些人可以用清晰的语言解释错误的确切含义。
答案 0 :(得分:2)
没有错误;您只需向print
,lambda x: 2*x*x
和5
提供两个参数。你不是在调用你的匿名函数,只是把它传递给print
。
print
然后会调用对象__str__
方法,该方法会返回您看到的内容:
>>> str(lambda x: 2*x*x) # similarly for '5'
'<function <lambda> at 0x7fd4ec5f0048>'
相反,修改括号实际调用 lambda,5
作为x
的值传递:
print((lambda x: 2*x*x)(5))
打印出50
。
<function at 0x ...>
的一般含义是什么?
这就是Python在打印时选择表示函数对象的方式。他们的str
获取函数的名称和函数hex
的{{1}}并将其打印出来。 E.g:
id
通过返回字符串创建:
def foo(): pass
print(foo) # <function foo at 0x7fd4ec5dfe18>