回答編集履歴

1

追記

2018/09/23 07:47

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -23,3 +23,43 @@
23
23
  gen = (A(B) for B in C)
24
24
 
25
25
  ```
26
+
27
+
28
+
29
+ ---
30
+
31
+ > 書き方という点では理解しましたが、なぜそれでジェネレータとして認識されるのかが気になっています。
32
+
33
+
34
+
35
+ 構文がどう解析されているか、という話でしょうか。
36
+
37
+ それならば言語リファレンスを見てみてはいかがでしょう。
38
+
39
+ > ```
40
+
41
+ generator_expression ::= "(" expression comp_for ")"
42
+
43
+ > ```
44
+
45
+
46
+
47
+ > ```
48
+
49
+ comp_for ::= [ASYNC] "for" target_list "in" or_test [comp_iter]
50
+
51
+ > ```
52
+
53
+
54
+
55
+ 引用元:
56
+
57
+ - [Python 言語リファレンス » 式 (expression) » ジェネレータ式](https://docs.python.jp/3/reference/expressions.html#generator-expressions)
58
+
59
+ - [Python 言語リファレンス » 式 (expression) » リスト、集合、辞書の表示](https://docs.python.jp/3/reference/expressions.html#displays-for-lists-sets-and-dictionaries)
60
+
61
+
62
+
63
+ 真面目に読むのはかなり骨なのでここでは避けますが、
64
+
65
+ なんとなく`(... for ... in ...)`の形が解析上見られていることは読み取れます。