¸üÐÂʱ¼ä:2017Äê11ÔÂ30ÈÕ16ʱ57·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
ÒªÀí½âyield×öÁËʲô£¬¾Í±ØÐëÃ÷°×Éú³ÉÆ÷(generators)ΪºÎÎ¶øÔÚÃ÷°×Éú³ÉÆ÷֮ǰ»¹ÒªÖªµÀµü´úÆ÷(iterables)¡£
1. µü´úÆ÷
µ±ÎÒÃÇ´´½¨Ò»¸ölistµÄʱºò£¬ÎÒÃÇ¿ÉÒÔÒ»¸ö½ÓÒ»¸öµÄ¶ÁÈ¡ËüµÄ³ÉÔ±¡£ÕâÖÖÒ»¸ö½ÓÒ»¸ö¶ÁÈ¡µÄÐÐΪ½Ð×öµü´ú£º

mylist¾ÍÊÇÒ»¸öµü´úÆ÷¡£µ±ÎÒÃÇʹÓÃÁбíÍÆµ¼Ê½(Òà³ÆÁбíÉú³Éʽ£¬list comprehension)ʱ£¬ÎÒÃÇ´´½¨ÁËÒ»¸ölist£¬Í¬Ê±»¹ÓÐÒ»¸öµü´úÆ÷£º

ÎÒÃÇ¿ÉÒÔʹÓÓ for … in …”µÄÈκÎÊÂÎï¶¼Êǵü´úÆ÷£¬È磺ÁÐ±í¡¢×Ö·û´®¡¢ÎļþµÈ¡£
ÕâЩµü´úÆ÷ºÜ±ãÀû£¬ÎÒÃÇ¿ÉÒÔÏë¶ÁÈ¡¶àÉپͶÁÈ¡¶àÉÙ£¬µ«ÊÇÎÒÃÇÒªÔÚÄÚ´æÖд¢´æËùÓеĿÉȡֵ£¬È»¶øµ±ÎÒÃÇÓÐÌ«¶àµÄֵʱÎÒÃDz»×ÜÊÇÏ£ÍûÈç´Ë¡£
2. Éú³ÉÆ÷
Éú³ÉÆ÷(generators)Ò²Êǵü´úÆ÷£¬µ«ÊÇÎÒÃÇÖ»ÄÜ¶ÔÆäµü´úÒ»´Î¡£ÕâÊÇÒòΪÉú³ÉÆ÷²¢Ã»ÓÐÔÚÄÚ´æÖд洢ËùÓеÄÖµ£¬¶øÊÇÒª¿¿¶¯Ì¬Éú³É¡£

ÎÒÃÇÓÃÔ²À¨ºÅ()´úÌæÁË·½À¨ºÅ[]£¬³ý´ËÖ®ÍâÊÇÏàͬµÄ¡£µ«ÊÇ£¬ÎÒÃDz»ÄÜÖØ¸´Ö´ÐÐfor i in mygenerator£¬ÒòΪÉú³ÉÆ÷Ö»ÄÜʹÓÃÒ»´Î£ºÏȼÆËã³ö0£¬È»ºó¾ÍÍüÁËÕâ¸ö0²¢¼ÆËã³ö1£¬×îÖÕ¼ÆËã³ö4¡£
3. yield
yieldÊÇÒ»¸ö¹Ø¼ü×Ö£¬Ê¹ÓÃÆðÀ´ÀàËÆreturn£¬µ«ÊÇʹÓõĺ¯Êý»á·µ»ØÒ»¸öÉú³ÉÆ÷¡£

ÕâÊÇÒ»¸öûÓõÄÀý×Ó£¬µ«Êǵ±ÎÒÃÇÖªµÀÎÒÃǵĺ¯ÊýÒª·µ»ØÒ»¸öÅÓ´óµÄÖµ¼¯ºÏ£¬¶øÕâЩֵÎÒÃÇÖ»»áµü´ú¶Áȡһ´Îʱ£¬ÕâÑùʹÓÃÊǺܷ½±ãµÄ¡£
ÒªÕÆÎÕyield£¬ÎÒÃDZØÐëÀí½âµ±ÎÒÃÇÔÚµ÷Óú¯ÊýµÄʱºò£¬ÎÒÃÇÔÚº¯ÊýÌåÖÐдµÄ´úÂ벢ûÓÐÖ´ÐС£º¯Êý½ö·µ»ØÁËÒ»¸öÉú³ÉÆ÷¶ÔÏó£¬ÕâÓеãÒâÏë²»µ½¡£
È»ºó£¬µ±forÿ´ÎʹÓÃÉú³ÉÆ÷µÄʱºò£¬ÎÒÃǵĴúÂë¶¼»á±»Ö´ÐÐÒ»´Î¡£
ÖØÒªµÄϸ½Ú²¿·Ö£º
µÚÒ»´Îforµ÷ÓÃÓÉÎÒÃǵĺ¯Êý´´½¨µÄÉú³ÉÆ÷ʱ£¬»á´ÓÍ·Ö´ÐÐÎÒÃǺ¯ÊýÖеĴúÂëÖ±µ½Óö¼ûyield¹Ø¼ü×Ö£¬È»ºó»á·µ»ØÑ»·µÄµÚÒ»¸öÖµ¡£Æäºóÿ´Îµ÷Óö¼»áÔÙÒ»´ÎÔËÐÐÎÒÃÇÔÚº¯ÊýÖÐдµÄÑ»·£¬·µ»ØÏÂÒ»¸öÖµ£¬ÒÔ´ËÒ»Ö±µ½ÔÙûÓзµ»ØÖµ¡£
Ò»µ©º¯ÊýÔËÐе«²»ÔÙ¼¤·¢yieldʱ£¬¾Í¿ÉÒÔÈÏΪÉú³ÉÆ÷ÒѾ¿ÕÁË¡£Õâ¿ÉÄÜÊÇÓÉÓÚÑ»·ÒѾ½áÊø£¬»òÕßÓÉÓÚÎÒÃDz»ÔÙÂú×ã“if/else”µÄÌõ¼þÅжϡ£
±±¾©Ð£Çø