当前位置: 首页 > 知识库问答 >
问题:

使用[object instance].__self__有什么意义?

袁河
2023-03-14
def groupby(key, seq):
    """ Group a collection by a key function
    """
    if not callable(key):
        key = getter(key)
    d = collections.defaultdict(lambda: [].append)
    for item in seq:
        d[key(item)](item)
    rv = {}
    for k, v in d.items():
        rv[k] = v.__self__
    return rv

有什么理由使用rv[k]=v.__self__而不是rv[k]=v吗?

共有1个答案

翁和颂
2023-03-14

这是一个有点令人困惑的节省少量时间的技巧:

我们正在用一个工厂函数创建一个DefaultDict,该函数用[].append返回一个新列表实例的绑定append方法。然后,我们可以像创建包含列表的D[key(item)](item)那样执行D[key(item)].append(item)。如果我们不每次都查找.append,我们就会获得少量的时间。

但是现在dict包含绑定方法,而不是列表,因此我们必须通过.__self__取回原始列表实例。

>>> a = []
>>> a.append.__self__ is a
True
 类似资料:
  • 问题内容: 使用“抽象方法”有什么意义?抽象类不能实例化,但是抽象方法呢?他们只是在这里说“您必须实现我”,如果我们忘记了它们,编译器会抛出错误? 这还意味着其他吗?我还阅读了有关“我们不必重写相同的代码”的内容,但是在抽象类中,我们仅“声明”了抽象方法,因此我们将不得不在子类中重写代码。 您能帮我多了解一点吗?我检查了有关“抽象类/方法”的其他主题,但没有找到答案。 问题答案: 除了提醒您必须实

  • 问题内容: 我们已经成功地使用pm2在服务器上运行应用程序。我们目前正在迁移至docker,我们看到了http://pm2.keymetrics.io/docs/usage/docker- pm2-nodejs/ 但是,将两者一起使用的意义何在?码头工人不提供pm2所做的一切吗? 问题答案: 通常在docker内部使用pm2是没有意义的。 PM2和Docker都是流程管理器,它们都可以执行日志转发

  • 问题内容: 在有两个线程对其进行读/写操作并且不希望取出锁的开销(或潜在的死锁风险)的情况下,有时会使用实例变量。例如,计时器线程会定期更新一个int ID,该int ID在某些类中作为getter公开: 我的问题:鉴于JLS只能保证32位读取将是原子有任何一点 曾经 使用挥发性长时间?(即64位)。 警告 :请不要回答说使用over 是预先优化的情况;我很清楚如何/何时使用,但在某些情况下更可取

  • 本文向大家介绍怎么使用自定义字体?有什么注意事项?相关面试题,主要包含被问及怎么使用自定义字体?有什么注意事项?时的应答技巧和注意事项,需要的朋友参考一下 @font-face { font-family: '自定义字体名称'; src: url('字体文件名.eot'); /* IE9 Compat Modes / src: url('字体文件名.eot?#iefix') format('emb

  • 问题内容: 我正忙于学习证书,偶然发现了一个我从未听说过的概念-“标签声明”。例如: ‘label’:’statement’ 所以我的问题是..为什么?这有什么用?什么时候要使用这样的东西? 问题答案: 我知道的唯一用途是可以在或语句中使用标签。因此,如果您有嵌套循环,则可以一次突破多个层次: 如该示例所示,如果您以嵌套的方式一次遍历两件事(例如搜索匹配项)并想要继续进行,或者您正在执行常规迭代,

  • 本文向大家介绍JQuery中$(document)是什么意思有什么作用,包括了JQuery中$(document)是什么意思有什么作用的使用技巧和注意事项,需要的朋友参考一下 首先我解释一下jQuery jQuery有一个用来作为DOM快速载入javascript的得心应手的小函数,那就是ready… 他在页面加载完成之前执行。 为什么不用window.onload(),因为window.onlo