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中有什么作用?对于产量,生成器和迭代,它是一个非常好的通用指南,即使我没有找到它对我的具体情况的答案:)
好的,你知道发电机,所以yield
零件不需要解释.精细.
那么这条线实际上做了什么?不是很多:
它连接padding_zeros
,number_string
然后将结果编码为ASCII.在Python 2.7中哪个是无操作,因为字符串是ASCII开头(根据定义它只包含ASCII数字).
在Python 3中,它会有所不同; 这里.encode()
本来转换的字符串为bytes
对象.但是在Python 2中,它没有任何意义.
归档时间: |
|
查看次数: |
11737 次 |
最近记录: |