问题标签 [yield-keyword]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
53 浏览

python - 无法理解生成器的简单示例

我在几个地方找到了这些简单的例子:

在第一个示例中,生成器会自行耗尽,在第二个示例中它不会耗尽,但 for 循环负责停止无限生成。一个典型的解释是yield“返回”一个值,冻结函数状态,当被调用时,函数将从该状态继续next()。这种解释是不是有点误导?在任一示例中,我都无法“可视化”多次调用生成器函数的任何内容 ( next())。返回一个生成器不是更好yield吗,它是一个只能迭代一次的可迭代对象?

编辑:生成器也不是可迭代对象:它动态生成可迭代对象,并且它“产生”(而不是“返回”)只能迭代一次。在我能正确掌握它之前,这有点令人费解,就像许多其他概念一样:) 谢谢。

0 投票
3 回答
88 浏览

javascript - 多人游戏中的对手移动承诺

在过去的四天里,我一直在研究承诺、协程、纤程、延续等。

我仍然不知道如何解决我的多人回合制纸牌游戏动作,其中起始玩家实际上是最多五个 AI 或人类玩家的游戏“控制器”。

下面的代码有效,但有一个问题:-

它无法检测到人类 oppo 的牌移动,因此在没有它们的情况下继续玩,这当然会造成混乱。

任何人都可以建议改变我的整体概念或使用承诺或任何其他“同步”构造的方法吗?

以下是我的代码的四个关键区域:




该游戏在概念上类似于 uno,但具有评分组件

(旨在帮助孩子掌握基本算术)。

0 投票
2 回答
4517 浏览

python - python生成器中代码的执行何时停止?

我试图通过构建一个行为类似于“枚举”内置函数的生成器来理解 yield 语句的行为,但我目睹了不一致,具体取决于我如何迭代它。

我对生成器的理解是,一旦到达 yield 语句,代码的执行就会停止,并返回一个值。这与我在下面的脚本中得到的相符。

在这种情况下,生成器似乎恰好在 yield 语句处停止,并在第二个“next”语句的 n+=1 中恢复:

但是,如果我使用下面的 for 循环,生成器似乎不会在 yield 语句处停止。

这就是我得到的:

编辑考虑评论

我意识到我只迭代了一个元素,但我没想到会看到最后一个“在生成器中的'yield'语句之后”句子(即使我迭代所有元素也会出现。

为什么会这样?

0 投票
2 回答
5039 浏览

python - Tornado POST 请求的返回响应

我看过 Tornado 文档和示例,其中 self.write 方法被广泛用于在 HTML 上呈现一些值,其中 POST 请求在处理程序中运行。但是我找不到很清楚如何将响应返回给客户端。

例如,我正在从客户端调用 Tornado 服务器上的 POST 请求。接受post请求的代码是:

有了这个,我可以找到 cbtp 的值,有了self.write(cbtp),我可以用 HTML 打印它。但相反,我想以 JSON 格式将此值返回给客户端,就像{'cbtp':cbtp} 我想知道如何修改我的代码以便将此响应发送给客户端,或者给我一些文档,以便对此进行流利的解释。

做类似的事情

抛出一个BadYieldError: yielded unknown object

0 投票
0 回答
42 浏览

python - 当变量在“yield”之后时,python 语法是什么?

我从这里得到了这段代码。这是报价:

" 生成器函数接收传递给 send 函数的值,作为相应yield 表达式的结果。 "

注意:它表示 yield 表达式,表示整个“屈服电流”的东西。我的理解正确吗?如果是这样,为什么不直接使用“yield”,从表达式中删除“current”?

0 投票
1 回答
949 浏览

python-3.x - 熊猫数据框产量错误

我正在尝试为熊猫数据框生成 1 行 1 行,但出现错误。数据框是一个股票价格数据,包括每日的开盘价、收盘价、最高价、最低价和成交量信息。

以下是我的代码。这个类将从 MySQL 数据库中获取数据

在主函数中:

数据示例:

update_bars函数将调用_get_new_bar移动到下一行(第二天价格)

我的目标是每天获取股票价格(迭代数据框的行),但self.symbol_data[s]in_connect_MySQL是数据框,而 in_get_new_bar是生成器,因此我收到此错误

AttributeError:'generator'对象没有属性'itertuples'

有人有想法么?

我正在使用python 3.6。谢谢

self.symbol_datais a dict,symbol是获取数据帧的字符串键。数据为股价数据。例如self.symbol_data["GOOG"],按日期返回一个带有谷歌每日股价信息索引的数据框,每行包括开盘价、最低价、最高价、收盘价和成交量。我的目标是每天使用yield.

_connect_MySQL将从数据库中获取数据在这个例子中,函数中的s = "GOOG"

0 投票
1 回答
16 浏览

python - 在没有内部目录的目录中生成文件

我的任务是训练一个机器学习模型。我想产生文件以避免将来出现内存问题。我偶然发现了一个我稍微调整了一下的解决方案。但是修改并不能完全满足我的需要。假设我拥有的文件夹结构如下:

../

一个/

2014-01-01

2014-01-05

2014-01-06

/乙

2014-01-02

2014-01-06

...

所以基本上在文件夹中:测试,我有子目录,如:A,B .. 等。在每个子目录中,我有日期:2014-01-01 等。

我需要生成器做的是按日期时间顺序生成文件,忽略目录本身(顺序子目录无关紧要,我可以先从 B 获取文件,然后从 A 获取文件,没关系)

我有以下代码atm:

这将输出如下内容:

即我不需要第一个路径和所有目录路径。

我如何省略这些?

编辑:实际上,glob 似乎返回了一个列表......p.glob('*/*')似乎可以解决问题,但是sorted(.)给了我一个列表而不是一个一个地产生文件

0 投票
3 回答
64 浏览

python - 基于另一个生成器的生成器

我的任务实际上很简单,但我不知道如何实现它。我打算在我的 ML 算法中使用它,但让我们简化示例。假设有一个像下面这样的生成器:

以上, 将产生我们1, 2,34.

假设上述生成器返回单个“样本”。我想编写一个生成器方法来批量处理它们。假设批量大小为2。所以如果这个新方法被调用:

然后这个批处理生成器的输出将是:1and2然后3and 4。元组/列表无关紧要。重要的是如何退回这些批次。我找到yield from了 Python 3.3 中引入的这个关键字,但在我的情况下它似乎没有用。

显然,如果我们有5nums 而不是4, and batch_sizeis 2,我们将省略第一个生成器的最后一个产生的值。

0 投票
0 回答
642 浏览

python - `yield` 在烧瓶中的整个解析过程中

首先,我使用烧瓶。

其次,我yield喜欢下面的代码。

所以在__init__ inCheckFile之后is completed, I返回values withyield` 到响应。

我想做的是能够yield在.__init__file.parse()

0 投票
0 回答
44 浏览

python - 从磁盘产生 n 个文件

我正在尝试从磁盘读取文件,然后将其拆分为[features and labels]

我的磁盘中有 3.5GB 的巨大数据,我无法同时将其读入内存。如何修改此代码以一次生成 n 个文件进行处理。

有没有更有效的方法来读取 tensorflow 中的大量数据?