程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

避免或延迟评估可能不使用的事物

发布于2019-10-07 19:26     阅读(593)     评论(0)     点赞(8)     收藏(1)


如何在Python中实现惰性评估?几个简单的例子:

>>> def foo(x):
...     print(x)
...     return x
... 
>>> random.choice((foo('spam'), foo('eggs')))
spam
eggs
'eggs'

上面,我们真的不需要评估该元组的所有项目,而是只选择其中一项。在下面,foo()除非查找字典中实际上缺少查找键,否则实际上不需要计算默认值

>>> d = {1: "one"}
>>> d.get(2, foo("default"))
default
'default'
>>> d.get(1, foo("default"))
default
'one'

我正在寻找一种Python的方式来重构上述示例,从而懒惰地求值。


解决方案


在Python中进行延迟评估的标准方法是使用生成器

def foo(x):
    print x
    yield x

random.choice((foo('spam'), foo('eggs'))).next()

顺便说一句。Python还允许生成器表达式,因此下面的行将不会预先计算任何内容:

g = (10**x for x in xrange(100000000))


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/133138/37c015d20b7ad12b2f54/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

8 0
收藏该文
已收藏

评论内容:(最多支持255个字符)