'any' 不会引发错误?

'any' doesn't raise error?

我在玩,然后我注意到了这个:

>>> l = input().split()
1 25 11 4
>>> any(s == s[::-1] for s in l)
True
>>> s == s[::-1] for s in l
SyntaxError: invalid syntax
>>> 

如果 s == s[::-1] for s in l 本身会引发错误,为什么 any(s == s[::-1] for s in l) 会起作用?

any(s == s[::-1] for s in l)

等同于:

any((s == s[::-1] for s in l))

和:

(s == s[::-1] for s in l)

不是语法错误。它是一个生成器表达式。正如您所发现的那样,生成器表达式周围需要括号,除非它们作为函数调用的唯一参数出现。

要完成丹D的回答,

(s == s[::-1] for s in l)

就像:

def your_function():
    for s in l:
        yield s == s[::-1]