簡體   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