屈服在python 2.7中有什么作用?

Geo*_*ter 7 python string yield generator python-2.7

可能重复:
解释了Python yield关键字

好吧,我可能很难说这个问题,但这就是我的情况.

我在Python 2.7中有这行代码,我试图理解:

yield (padding_zeros + number_string).encode("ascii")
Run Code Online (Sandbox Code Playgroud)

在这行代码中,padding_zeros是一个变量数为0的字符串,是一个字符串number_string形式的数字,可以是0到10000之间的任何数字.

我非常有信心.encode("ascii")将yield的输出转换为ascii.

我完全在海上讲的是它的yield (padding_zeros + number_string)作用.

我知道它启动了一个生成器,但我花了很多时间在线搜索并阅读语法,但我仍然无法弄清楚生成器实际上了什么.这是我第一次看python没有帮助(我的最终目标是将此代码转换为C#).

那么,基本上,请有人向我解释这行代码的作用是什么?它只是将两个字符串加在一起还是做了一些更复杂的事情?

对于进一步的上下文,这是该行代码出现的块:

for current_length in range(4, max_length + 1):
    for i in range(0, pow(10, current_length)):
        number_string = str(i)
        padding_zeros = "0" * (current_length - len(number_string))
        yield (padding_zeros + number_string).encode("ascii")
Run Code Online (Sandbox Code Playgroud)

(max_length正如它听起来的那样 - 一个表示某事物最大长度的数字)

提前感谢任何和所有的答案(即使他们告诉我不要这样一个毛躁的菜鸟):)

编辑:非常感谢你的答案 - 即使我只选择一个作为最好的答案,他们都非常有帮助.还要感谢评论 - 正如其中一些人指出的那样,"yield"关键字在Python中有什么作用?对于产量,生成器和迭代,它是一个非常好的通用指南,即使我没有找到它对我的具体情况的答案:)

Tim*_*ker 6

好的,你知道发电机,所以yield零件不需要解释.精细.

那么这条线实际上做了什么?不是很多:

它连接padding_zeros,number_string然后将结果编码为ASCII.在Python 2.7中哪个是无操作,因为字符串是ASCII开头(根据定义它只包含ASCII数字).

在Python 3中,它会有所不同; 这里.encode()本来转换的字符串为bytes对象.但是在Python 2中,它没有任何意义.