问题标签 [python-internals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2892 浏览

python - Python,内置id()的对象方法是什么?

在 Python 中:

  • len(a)可以替换为a.__len__()
  • str(a)repr(a)可以替换为a.__str__()a.__repr__()
  • ==__eq__,+__add__, 等等

有没有类似的方法来获取id(a)?如果没有,是否有任何解决方法可以在不使用的情况下获取 python 对象的唯一 ID id()


编辑:附加问题:如果不是?有什么理由不定义 a__id__()吗?

0 投票
1 回答
35383 浏览

python - 提高 Python 中超大字典的性能

我发现如果我在开始时初始化一个空字典,然后在 for 循环中向字典中添加元素(大约 110,000 个键,每个键的值是一个列表,也在循环中增加),速度下降为for 循环去。

我怀疑问题是,字典在初始化时不知道键的数量并且它没有做一些非常聪明的事情,所以存储冲突可能变得非常频繁并且它变慢了。

如果我知道键的数量以及这些键的确切含义是什么,那么 python 中是否有任何方法可以使字典(或哈希表)更有效地工作?依稀记得,如果知道key,就可以巧妙地设计hash函数(完美hash?),提前分配空间。

0 投票
1 回答
8803 浏览

python - Python 的 cmp_to_key 函数是如何工作的?

我在这里遇到了这个功能。

我对这将如何实现感到困惑——在不检查给定元素与其他所有感兴趣元素的比较情况下,如何知道给定元素应该是什么“位置”key生成的函数?cmp_to_key

0 投票
3 回答
3737 浏览

python - Python中的str是如何实现的?

为什么空字符串使用这么多字节?有人知道这 40 个字节中存储了什么吗?

0 投票
2 回答
4729 浏览

python - 为什么使用 *args 语法的参数列表中的尾随逗号是 SyntaxError?

为什么不能*args在 Python 中使用尾随逗号?换句话说,这有效

但这并不

Python 2 和 Python 3 都是这种情况。

0 投票
14 回答
639447 浏览

python - @property 装饰器在 Python 中是如何工作的?

我想了解内置函数是如何property工作的。令我困惑的是,property它也可以用作装饰器,但它只在用作内置函数时才需要参数,而不是在用作装饰器时。

此示例来自文档

property的参数是getx,setxdelx一个文档字符串。

在下面的代码中property用作装饰器。它的对象是x函数,但在上面的代码中,参数中没有对象函数的位置。

在这种情况下如何创建x.setterx.deleter装饰器?

0 投票
3 回答
1396 浏览

python - 为什么从一个模块中导入一个函数比整个模块本身需要更长的时间?

考虑:

仅导入 Dispatch 函数而不是整个模块需要更长的时间,这似乎违反直觉。有人可以解释为什么采用单个函数的开销如此糟糕吗?谢谢!

0 投票
2 回答
5768 浏览

python - 如何用“with”调用 tempfile.mkstemp()?- 或者为什么它不返回带有 __exit__() 的 fd?

对我来说,最惯用的调用方式tempfile.mkstemp()是:

然而,这显然(?)提出了AttributeError: __exit__

使用 try-finally 显式调用os.close(fd)是解决此问题的一种简单方法,但感觉像是违反了应该有一个——最好只有一个——明显的方法来做到这一点。

有没有办法“解决”这个问题,tempfile或者是否有理由以这种方式实施?

0 投票
1 回答
2056 浏览

python - 可以在具有 __slots__ 的类中定义 __setattr__() 吗?

假设我有一个定义__slots__

我可以__setattr__()为它定义吗?

既然Foo没有__dict__,它会更新什么?

0 投票
2 回答
348 浏览

python - 切片索引限制为 0x7FFFFFFF

我在 Python (2.7.4) 中玩切片:

一切似乎都按预期工作:

除了切片索引似乎限制为 0x7FFFFFFF 之外:

long为什么切片索引不像常规值那样受到相同的整数提升int?有什么解决方法吗?