-
1509 votesanswersviews
为什么Python 3中的“1000000000000000在范围内(1000000000000001)”如此之快?
据我所知, range() 函数实际上是an object type in Python 3,它在运行中生成其内容,类似于生成器 . 在这种情况下,我原本预计下面的行需要花费过多的时间,因为为了确定1千万亿是否在该范围内,必须生成一个千万亿的值: 1000000000000000 in range(1000000000000001) 此外:似乎无论我添加多少个零,计算或多或少都需要相同的时间(基... -
714 votesanswersviews
@property装饰器如何工作?
我想了解内置函数 property 的工作原理 . 令我困惑的是 property 也可以用作装饰器,但它只在用作内置函数时才需要参数,而不是用作装饰器时 . 这个例子来自documentation: class C(object): def __init__(self): self._x = None def getx(self): return... -
110 votesanswersviews
与Python 3.4相比,为什么Python 3.5中的str.translate要快得多?
我试图在Python 3.4中使用 text.translate() 从给定的字符串中删除不需要的字符 . 最小的代码是: import sys s = 'abcde12345@#@$#%$' mapper = dict.fromkeys(i for i in range(sys.maxunicode) if chr(i) in '@#$') print(s.translate(mapper))... -
77 votesanswersviews
为什么我可以在Python for循环中为迭代器和序列使用相同的名称?
这更像是一个概念性问题 . 我最近在Python中看到了一段代码(它在2.7中运行,它也可能在2.5中运行),其中 for 循环对正在迭代的列表和该项中的项使用相同的名称 . 列表,这既是糟糕的做法,也是一些根本不起作用的东西 . 例如: x = [1,2,3,4,5] for x in x: print x print x 产量: 1 2 3 4 5 5 现在,对我来说,打印的最后一... -
2 votesanswersviews
“groupby”和参数解包的实现特定行为
我试图理解我在今天早些时候写过的_1658709中发现的一个怪癖 . 基本上,我正在从包含 itertools.groupby 的生成器函数中产生组 . 我发现有趣的是,如果我在赋值的左侧解包生成器,则生成器的最后一个元素仍然存在 . 例如: # test_gb.py from itertools import groupby from operator import itemgetter in... -
255 votesanswersviews
是否在Python 3.6中订购了字典?
字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同 . 这似乎是一个重大变化,但它只是documentation中的一个短段 . 它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准 . 在保留元素顺序的同时,新字典实现如何比旧字典执行得更好? 以下是文档中的文字: dict()现在使用PyPy开创的“紧凑”表示 . 与Python 3.5相... -
281 votesanswersviews
为什么有些浮点数<整数比较慢四倍?
将浮点数与整数进行比较时,某些值对的评估时间比其他类似值的值要长得多 . 例如: >>> import timeit >>> timeit.timeit("562949953420000.7 < 562949953421000") # run 1 million times 0.5387085462592742 但是如果浮点数或整数变... -
307 votesanswersviews
time.sleep - 睡眠线程还是进程?
在Python for * nix中, time.sleep() 会阻塞线程还是进程? -
138 votesanswersviews
是否有可能“破解”Python的打印功能?
注意:此问题仅供参考 . 我很有兴趣看到Python内部有多深入,可以使用它 . 不久前,关于在调用 print 之后/期间是否可以修改传递给print语句的字符串的讨论开始讨论了.1233127_ . 例如,考虑功能: def print_something(): print('This cat was scared.') 现在,当运行 print 时,应显示到终端的输出: This ...