繁体   English   中英

需要了解Python生成器对象

[英]Need to understand Python generator object

在下面的:

name = 'TODD'
chars = set('AEIOU')
for ii in range(-1, int(math.copysign(len(name) + 1, -1)), -1):
    if any((cc in chars) for cc in name[ii]):
        print 'Found'
    else:
        print 'Not Found'

我知道任何(...)里面的东西都是生成器对象。 我不明白的是缺少括号 - 如果括号属于any()函数,那么生成器表达式周围是否应该有另一组括号?

谢谢。

当在仅具有一个参数的函数调用中使用时,可以省略括号, 生成器表达式语法特别允许它。

对于只有一个参数的调用,可以省略括号。 请参阅呼叫详细信息部分。

如果表达式已经是括号中的唯一内容,则可以省略生成器表达式的括号。

文档

对于只有一个参数的调用,可以省略括号。

不,不需要额外的parens,实际上也不是你正在测试的“布尔表达式”所必需的parens,请看这两个简单的例子:

In [37]: any(i > 10 for i in range(19))
Out[37]: True

In [38]: all(i > 10 for i in range(19))
Out[38]: False

你所拥有的是一个带有单个参数的函数调用(你的生成器表达式)所以不需要parens。 有关更多信息,请参阅生成器表达式文档

对于只有一个参数(生成器表达式)的函数调用,每个文档不需要它们

对于只有一个参数的调用,可以省略括号。 请参阅呼叫详细信息部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM