【发布时间】:2016-01-15 10:20:15
【问题描述】:
在 Python IDLE 3.5.0 shell 中工作。根据我对内置“过滤器”函数的理解,它返回列表、元组或字符串,具体取决于您传递给它的内容。那么,为什么下面的第一个分配有效,而第二个无效('>>> 只是交互式 Python 提示)
>>> def greetings():
return "hello"
>>> hesaid = greetings()
>>> print(hesaid)
hello
>>>
>>> shesaid = filter(greetings(), ["hello", "goodbye"])
>>> print(shesaid)
<filter object at 0x02B8E410>
【问题讨论】:
-
在我的机器上,
help(filter)说它返回一个迭代器,而不是列表、元组或字符串。您可能正在查看旧版本 Python 的文档。在任何情况下,您的filter表达式即使在旧版本中也不起作用,因为filter的第一个参数必须是可调用的,而greetings()返回的值不是可调用的。 -
我使用的是一个旧教程,它没有说明 Python 的版本。谢谢凯文....虽然我不明白(只是从这里开始:-)...你的意思是:“因为 filter 的第一个参数必须是可调用的,并且 greetings() 返回的值不是一个可调用的。”
-
接下来你让我自学什么是可调用对象。在论坛和其他地方都找到了一些主题。再次感谢! (试图编辑以前的评论,但 StackOverflow 不允许...
-
“不允许”?这当然是允许的——你能够存储返回值(没有引发异常);该值不是您所期望的。这里的原标题有些误导。
标签: python variables filter variable-assignment