问题标签 [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.
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__()
吗?
python - 提高 Python 中超大字典的性能
我发现如果我在开始时初始化一个空字典,然后在 for 循环中向字典中添加元素(大约 110,000 个键,每个键的值是一个列表,也在循环中增加),速度下降为for 循环去。
我怀疑问题是,字典在初始化时不知道键的数量并且它没有做一些非常聪明的事情,所以存储冲突可能变得非常频繁并且它变慢了。
如果我知道键的数量以及这些键的确切含义是什么,那么 python 中是否有任何方法可以使字典(或哈希表)更有效地工作?依稀记得,如果知道key,就可以巧妙地设计hash函数(完美hash?),提前分配空间。
python - Python 的 cmp_to_key 函数是如何工作的?
我在这里遇到了这个功能。
我对这将如何实现感到困惑——在不检查给定元素与其他所有感兴趣元素的比较情况下,如何知道给定元素应该是什么“位置”key
生成的函数?cmp_to_key
python - Python中的str是如何实现的?
为什么空字符串使用这么多字节?有人知道这 40 个字节中存储了什么吗?
python - 为什么使用 *args 语法的参数列表中的尾随逗号是 SyntaxError?
为什么不能*args
在 Python 中使用尾随逗号?换句话说,这有效
但这并不
Python 2 和 Python 3 都是这种情况。
python - @property 装饰器在 Python 中是如何工作的?
我想了解内置函数是如何property
工作的。令我困惑的是,property
它也可以用作装饰器,但它只在用作内置函数时才需要参数,而不是在用作装饰器时。
此示例来自文档:
property
的参数是getx
,setx
和delx
一个文档字符串。
在下面的代码中property
用作装饰器。它的对象是x
函数,但在上面的代码中,参数中没有对象函数的位置。
在这种情况下如何创建x.setter
和x.deleter
装饰器?
python - 为什么从一个模块中导入一个函数比整个模块本身需要更长的时间?
考虑:
仅导入 Dispatch 函数而不是整个模块需要更长的时间,这似乎违反直觉。有人可以解释为什么采用单个函数的开销如此糟糕吗?谢谢!
python - 如何用“with”调用 tempfile.mkstemp()?- 或者为什么它不返回带有 __exit__() 的 fd?
对我来说,最惯用的调用方式tempfile.mkstemp()
是:
然而,这显然(?)提出了AttributeError: __exit__
使用 try-finally 显式调用os.close(fd)
是解决此问题的一种简单方法,但感觉像是违反了应该有一个——最好只有一个——明显的方法来做到这一点。
有没有办法“解决”这个问题,tempfile
或者是否有理由以这种方式实施?
python - 可以在具有 __slots__ 的类中定义 __setattr__() 吗?
假设我有一个定义__slots__
:
我可以__setattr__()
为它定义吗?
既然Foo
没有__dict__
,它会更新什么?
python - 切片索引限制为 0x7FFFFFFF
我在 Python (2.7.4) 中玩切片:
一切似乎都按预期工作:
除了切片索引似乎限制为 0x7FFFFFFF 之外:
long
为什么切片索引不像常规值那样受到相同的整数提升int
?有什么解决方法吗?