[英]SyntaxError: 'yield' outside function Python Spider Script - Scrapy
[英]SyntaxError: 'yield' outside of function in Python
我读过很多关于这个的帖子,我意识到很多人都问过这个问题,但我不明白我做错了什么。 我正在尝试为我正在处理的项目绘制一个带有坐标的网格,并且我正在尝试一些代码来生成它。 我试过这个,但我一直收到这个错误。 代码有什么问题? 我尝试了不同的缩进,但它不起作用。
stepsize = 0.001
for x in range(0, 10, stepsize):
for y in range(0, 10, stepsize):
yield (x,y)
^^原来的q+a
感谢所有提供帮助的人,我不确定为什么要发布该代码,因为它无论如何都行不通! 对不起,我的误解,我以前没有使用过生成器。 :)
yield
关键字用于从函数“返回”生成器对象
它不能在函数之外使用,例如在您的代码中。
如果这是在def
语句下,那就没问题了,但是这里没有def
语句,所以它会引发错误
此外,与问题无关,但这些行不起作用:
for x in range(0, 10, stepsize):
for y in range(0, 10, stepsize):
因为stepsize
是一个浮点数,并且range
函数只处理整数 - 它会说TypeError: 'float' object cannot be interpreted as an integer
为了补充已经说过的内容,您可以通过组合生成器来实现您的代码以产生所需的输出。
def increment(start, end, delta):
while start < end:
yield start
start += delta
def double_increment(start, end, delta):
for x in increment(start, end, delta):
for y in increment(start, end, delta):
yield x, y
例子:
for x, y in double_increment(0, 1, 0.4):
print(f"{x:.2f} {y:.2f}")
0.00 0.00
0.00 0.40
0.00 0.80
0.40 0.00
0.40 0.40
0.40 0.80
0.80 0.00
0.80 0.40
0.80 0.80
您还可以使用product
来产生双增量:
from itertools import product
for x, y in product(increment(0, 1, 0.4), repeat=2):
print(f"{x:.2f} {y:.2f}")
结合更多的 itertools 你可以做:
from itertools import product, count, takewhile
for x, y in product(takewhile(lambda x: x < 1, count(0, step=0.4)), repeat=2):
print(f"{x:.2f} {y:.2f}")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.