小编sat*_*oru的帖子

在`timeit`结果中,`ns`和`us`代表什么?

我试图比较两个语句的性能,timeit结果如下:

 100 loops, best of 3: 100 ns per loop
 100 loops, best of 3: 1.96 us per loop
Run Code Online (Sandbox Code Playgroud)

但我不知道这些nsus代表什么,所以我不知道哪一个更快.

python timeit

19
推荐指数
2
解决办法
7903
查看次数

如何将项目划分为Django中的应用程序?

我不确定如何将我的Django项目划分为应用程序.

在布置Django项目时我应该考虑哪些事项?

django

17
推荐指数
1
解决办法
2184
查看次数

如何构建Google Hangouts等Chrome扩展程序

谷歌Hangouts扩充有一个面板在Chrome UI之外的显示出来.

这有点像通知但不是.我没有在Extension Developer Docs中看到任何描述API的内容.这是他们正在做的特定于谷歌的黑客攻击吗?我缺少实验性API中的某些内容吗?

google-chrome-extension

13
推荐指数
1
解决办法
6339
查看次数

为什么我可以为变量分配不同类型的值?

在"Go in Action"一书中,作者写道"两种不同类型的值不能彼此分配,即使它们是兼容的".

例如,我们不能分配Durationint64int64Duration.

但这并非总是如此,以下赋值将像X[]int自动转换回来一样:

type X []int
var v []int = X([]int{1, 2, 3})
Run Code Online (Sandbox Code Playgroud)

这两种情况有什么区别?

go

13
推荐指数
1
解决办法
798
查看次数

`extend`比`+ =`更快?

在python中,我们可以通过两种方式连接列表:

  1. lst.extend(another_lst)
  2. lst + = another_lst

我认为extend比使用更快+=,因为它重用了列表而不是使用其他两个创建新列表.

但是当我测试它时timeit,事实证明它+=更快,

>>> timeit('l.extend(x)', 'l = range(10); x = range(10)')
0.16929602623
>>> timeit('l += x', 'l = range(10); x = range(10)')
0.15030503273
>>> timeit('l.extend(x)', 'l = range(500); x = range(100)')
0.805264949799
>>> timeit('l += x', 'l = range(500); x = range(100)')
0.750471830368
Run Code Online (Sandbox Code Playgroud)

我输入的代码有什么问题timeit吗?

python performance list

11
推荐指数
1
解决办法
4392
查看次数

快速算法计算两个列表的增量

我有两个专辑名单,按一些分数排序.

albums_today = ['album1', 'album2', 'album3']
albums_yesterday = ['album2', 'album1', 'album3']
Run Code Online (Sandbox Code Playgroud)

如何计算列表顺序的变化并得到类似的结果

{'album1':1, 'album2':-1, 'album3':0}
Run Code Online (Sandbox Code Playgroud)

python algorithm

11
推荐指数
2
解决办法
887
查看次数

忽略python警告

我想忽略UserWarning我的开发环境中的所有内容,以便它们不会打印到我的错误日志文件中.

我已经阅读了warnings模块的文档,并尝试了类似的方法:

import warnings
import the_module_that_warns

warnings.simplefilter("ignore", UserWarning)
Run Code Online (Sandbox Code Playgroud)

UserWarning仍然打印,为什么?

python

10
推荐指数
1
解决办法
6967
查看次数

为什么Python线程模块中的类会公开工厂函数而不是构造函数?

threading模块中,RLock,SemaphoreEvent等名称都是工厂函数,而实现类的名称以下划线为前缀.

工厂函数只是将它们收到的所有参数传递给底层构造函数.

那么这样做的好处是什么?

python

10
推荐指数
1
解决办法
168
查看次数

这个`_time_independent_equals`是什么意思?

龙卷风 .web模块中有一个叫做的函数_time_independent_equals:

def _time_independent_equals(a, b):
    if len(a) != len(b):
        return False
    result = 0
    for x, y in zip(a, b):
        result |= ord(x) ^ ord(y)
    return result == 0
Run Code Online (Sandbox Code Playgroud)

它用于比较安全cookie签名,从而比较名称.

但是关于这个功能的实现,它只是一个复杂的说法a==b吗?

python tornado

9
推荐指数
1
解决办法
1228
查看次数

如何实现持久的Python`list`?

我试图让一个对象像内置一样list,除了它的值在修改后保存.

我提出的实现是list在一个PersistentList类中包装.对于可能更改列表的方法的每次访问,包装器委托给包装list,并在调用后将其保存到键值数据库.

码:

class PersistentList(object):
    def __init__(self, key):
        self.key = key 
        self._list = db.get(key, []) 

    def __getattr__(self, name):
        attr = getattr(self._list, name)
        if attr:
            if attr in ('append', 'extend', 'insert', 'pop',
                'remove', 'reverse', 'sort'):
                attr = self._autosave(attr)
            return attr
        raise AttributeError

    def _autosave(self, func):
        @wraps(func)
        def _(*args, **kwargs):
            ret = func(*args, **kwargs)
            self._save()
            return ret 
        return _

    def _save(self):
        db.set(self.key, self._list)
Run Code Online (Sandbox Code Playgroud)

这个实现有几个问题:

  1. 我必须像append每次访问时一样修饰方法,有没有更好的方法来装饰某些对象的多个方法?

  2. l += [1,2,3]我没有实现iadd方法那样的操作不起作用. …

python

8
推荐指数
1
解决办法
2716
查看次数