Pythonのジェネレータジェネレータ特定の例を見つけ、それが長い間理解されています

DEF SCQ()
     のための I における範囲(3 :)
         収量I
G = SCQ()
 のために N  [1、10 ]。
    G((N + K)= ための K におけるG)
 プリント(リスト(G))
コードの表示

結果がでなければならないことを確認するために、コードので、一人で目を起動し、[11,12,13]

しかし、コードの実行が、結果はそうではありませんが、見つかった[20,21,22]

これは私も奇妙な、なぜ予想以上に様々な試み、その後、それからより多くの、とは、次のサイクルのための条件を変更したことだろう突然のすべてで、リストは二番目の数字を移動しない限り、結果は変わりませんことがわかりました。

ステップ操作でデバッグステップを開いた後に、それは次のような理由から、以下のように発見されました

SCQ DEF():
範囲でI(3):
収率I
G = SCQ()
第1発電ジェネレータ1
#プログラムは、再びループのための2つの発電機を作成し、ダウン順に実行します
[1、10]におけるnのため #n個の発生器1はgenerator2 =を作成し、N =ああ第三のジェネレータ10 generator3作成
G =(GにおけるK用の(N-K +))を

印刷(リスト(Gあなたは、発電機generator3を作成するとき))#これは第三コール・ジェネレータのn = 10である
ため、発電機の性質のために#を、呼び出しがここG3、G2、G3の呼び出しのときに実行され、呼び出されたときにのみ実行されるように、 N = 10、G2リコールG

おすすめ

転載: www.cnblogs.com/wenmo/p/11372958.html