これは、同様に動作し、私はちょうど関数の引数として発電機に通過させるためのさまざまな構文とPythonで実験した、と私は私がこれをやってきたが、ことに気づき、なぜ関数に渡すときに、ジェネレータの周囲のカッコをPythonで省略することができますか?
>>> sum((j for j in xrange(5)))
10
:
>>> sum(j for j in xrange(5))
10
これはLinuxのPython 2.6.6でテストされています。フードの下で何が起こっているのですか?それは構文的な砂糖ですか?すべての後、通常は開封された発電機は、インタプリタに判読できません:
>>> j for j in xrange(5)
File "<stdin>", line 1
j for j in xrange(5)
^
SyntaxError: invalid syntax
私もこれに気付きました。実際に私を苛立たせます。私は文法の不規則性が好きではありませんが、たとえそれが素晴らしい構文的砂糖であってもです。私が奇妙な文法を望むなら、私はperlでプログラミングしています。 – Omnifarious
@Omnifarius:私は一貫性を高く評価します(一般的にはPythonも同様です)。しかし、二重引用符は単なる冗長です。 – delnan
@delnan - そうではありません。たとえば、 'sum(jはj、{'a':1、 'b':2} .itititems())の' jです。 'j'と' k'の間のカンマはどのように解釈され、なぜですか? – Omnifarious