Tag: 生成器

我应该如何使用Google风格的狮身人面像来logging列表,选项和收益?

如何使用Sphinx-Napoleon为Google样式文档中的生成器指定列表的types,可选参数和返回types? 我试过了 List[type] list of type Optional[type] type, optional 和 Yields: type: 分别; 但是都会产生不令人满意的输出,这与生成的其他文档不一致。 例如 Optional[type] 只是给 可选[types] 没有任何type链接。 我试过每个内置的主题,并有相同的问题。 我应该如何用狮身人面像 – 拿破仑的Google风格的文档logging这些元素?

发电机线程安全吗?

我有一个multithreading程序,我创build一个生成器函数,然后将其传递给新的线程。 我希望它是共享/全局性的,所以每个线程可以从生成器中获得下一个值。 使用这样的生成器是否安全,还是会遇到从多个线程访问共享生成器的问题/条件? 如果没有,是否有更好的方法来处理这个问题? 我需要的东西,将循环通过一个列表,并产生任何线程调用它的下一个值。

node.js是否支持yield?

有没有办法让发电机进入node.js? 我目前正在用callback来伪造它们,但是我必须记得检查我的generator函数内部的callback响应,这个函数创build了很多if (callback(arg) === false) return; 我想在Python中的东西: for p in primes(): if p > 100: break do_something(p) 我正在做的节点是这样的: primes(function(p) { if (p > 100) return false; do_something(p) }); 也许像coffeescript可以帮助?

这个lambda / yield / generator理解是如何工作的?

我今天正在查看我的代码库,发现这个: def optionsToArgs(options, separator='='): kvs = [ ( "%(option)s%(separator)s%(value)s" % {'option' : str(k), 'separator' : separator, 'value' : str(v)} ) for k, v in options.items() ] return list( reversed( list( (lambda l, t: (lambda f: (f((yield x)) for x in l) )(lambda _: t) )(kvs, '-o') ) ) ) 它似乎需要一个参数的字典,并把它们变成一个shell命令的参数列表。 它看起来像是在一个生成器理解中使用yield,我认为这是不可能的。 >>> optionsToArgs({"x":1,"y":2,"z":3}) ['-o', 'z=3', […]

如何从Python中的生成器获取一个值?

非常基本的问题 – 如何从Python中的生成器获取一个值? 到目前为止,我发现我可以通过编写gen.next()来获得一个。 我只是想确保这是正确的方式?

Python空发生器函数

在Python中,可以通过将yield关键字放在函数的主体中来轻松定义一个迭代器函数,例如: def gen(): for i in range(100): yield i 我怎样才能定义一个不产生任何值的生成器函数(生成0值),下面的代码不起作用,因为python不知道它应该是一个生成器,而不是一个正常的函数: def empty(): pass 我可以做类似的事情 def empty(): if False: yield None 但那会非常难看。 有没有什么好的方法来实现一个空的迭代器函数?

迭代器和枚举器之间的区别

一个.NET 3.5作业的面试问题是“迭代器和枚举器有什么区别”? 这是一个核心区别,用LINQ来做什么等等。 无论如何,有什么区别? 我似乎无法在网上find一个可靠的定义。 没有错,我可以find两个术语的含义,但我得到的答案略有不同。 面试的最佳答案是什么? IMO一个迭代器“迭代”一个集合,一个枚举器提供迭代的function,但是这个必须被调用。 而且,使用yield关键字被认为是保存状态。 这个状态到底是什么? 有没有这种好处发生的例子?

将生成器对象转换为列表进行debugging

当我使用IPython在Python中进行debugging时,有时候会碰到一个断点,我想检查一个当前是一个生成器的variables。 我能想到的最简单的方法就是把它转换成一个列表,但是我不清楚在ipdb一行中做什么的简单方法,因为我对Python很ipdb 。

Koa / Co / Bluebird或Q / Generators / Promises / Thunk相互影响? (Node.js)

我正在研究与Koa部分构build一个Web应用程序,但是我并没有完全理解Hors,Whens,以及在哪些方面可以select – 应用 – 支持“使asynchronous更简单”的技术/方法下面列出)。 总的来说,networking上关于这个问题的不同指导仍然让事情变得模糊,特别是在不断发展的最佳实践方面,或者至less是更好的方面,以及在什么情况下。 networking上似乎没有什么东西可以把它全部放在上下文中。 我希望对这个庞大的屁股蔓延的post的反应可以纠正这一点 。 也许下面的问题可以激发人写一个彻底的博客文章或类似的东西来解决这个问题。 我的感觉是,我甚至不接近唯一会从中受益的人。 因此,如果明智的社群能帮助解答以下关于下列技术的问题(以粗体显示)并提供清晰的话,我会很高兴: – a)他们如何以及在何种情况下(如适用)互相补充,补充,替代和/或重叠解决scheme? – b)它们在速度性能,error handling简易性和debugging方便性方面有什么权衡? – c)什么时候,何地以及为什么使用“这个”与“那个”技术,技术组合,和/或方法更好? – d)哪些技术或方法(如果有的话)可能是“明星”。 (希望能够很好地解释作为答案一部分的意见。) ============================== 技术: * Koa * 我的理解: Koa是构buildNode应用程序的基础,它利用了ECMAScript-6特性,其中一个特性是生成器。 * Co * 我的理解: – Co是一个运行ECMAScript-6生成器的实用程序库(它本来就是Node .011和谐的),其目标是允许编写样板代码来运行和pipe理生成器。 Co本质上是Koa(?)的一部分。 具体问题: – 如果和如何在Koa中使用Co,而不是在非Koa中使用Co。 换句话说,Koa整个门面Co? – 如果有更好的发电机库,Co可以replace成Koa发电机库吗? 有没有? *承诺“Q”和蓝鸟等图书馆* 我的理解: – 如果并且直到Node本身运行这个规范,它们在某种意义上就是用于实现Promises / A +规范的“polyfills”。 – 他们还有一些非规范的便利工具来促进使用许诺,比如Bluebird的promisfyAll工具。 具体问题: – […]

为什么Python中没有第一个(可迭代的)内置函数?

我想知道是否有一个原因,在Python内置函数中没有first(iterable) ,有点类似于any(iterable)和all(iterable) (它可能被塞进stdlib模块的某个地方,没有在itertools看到它)。 first会执行短路发生器评估,以避免不必要的(和可能的无限数量的)操作; 即 def identity(item): return item def first(iterable, predicate=identity): for item in iterable: if predicate(item): return item raise ValueError('No satisfactory value found') 这样你可以expression如下的东西: denominators = (2, 3, 4, 5) lcd = first(i for i in itertools.count(1) if all(i % denominators == 0 for denominator in denominators)) 显然你不能做list(generator)[0]在这种情况下,因为发电机没有终止。 或者,如果你有一堆正则expression式匹配(当他们都有相同的groupdict接口时有用): match = first(regex.match(big_text) for […]