파이썬에서 함수에 대한 인수로 생성자를 전달하기위한 다른 구문을 실험하고 있었는데,이 작업을 수행했지만함수에 전달할 때 파이썬에서 생성자에 대한 괄호를 생략 할 수 있습니까?
>>> 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 : 나는 일관성을 매우 중요시하며 (일반적으로 파이썬도 그렇습니다), 이중 괄호는 단순한 중복입니다. – delnan
@delnan - 그렇지 않습니다. 예를 들어,'sum (j는 j, k는 { 'a': 1, 'b': 2} .iteritems())'입니다. 'j'와'k' 사이의 쉼표는 어떻게 해석되고, 왜입니까? – Omnifarious