python-internals


Improving performance of very large dictionary in Python

If I know the number of keys and exactly what are those keys, is there any way in python to make a dict (or a hashtable) work more efficiently? I vaguely remember that if you know the keys, you can... Read More


python - Why are some float < integer comparisons four times slower than others?

A comment in the Python source code for float objects acknowledges that: Comparison is pretty much a nightmare This is especially true when comparing a float to an integer, because, unlike floats,... Read More


python - Why is a class __dict__ a mappingproxy?

This helps the interpreter assure that the keys for class-level attributes and methods can only be strings. Elsewhere, Python is a "consenting adults language", meaning that dicts for objects are exp... Read More


performance - Why is x**4.0 faster than x**4 in Python 3?

Why is x**4.0 faster than x**4 in Python 3*? Python 3 int objects are a full fledged object designed to support an arbitrary size; due to that fact, they are handled as such on the C level (see how... Read More


Different object size of True and False in Python 3

It is because bool is a subclass of int in both Python 2 and 3. >>> issubclass(bool, int) True But the int implementation has changed. In Python 2, int was the one that was 32 or 64 bits, depending... Read More


What exactly is __weakref__ in Python?

__weakref__ is just an opaque object that references all the weak references to the current object. In actual fact it's an instance of weakref (or sometimes weakproxy) which is both a weak reference... Read More


python - time.sleep -- sleeps thread or process?

It blocks the thread. If you look in Modules/timemodule.c in the Python source, you'll see that in the call to floatsleep(), the substantive part of the sleep operation is wrapped in a PyBEGINALLOWTH... Read More


Why is range(0) == range(2, 2, 2) True in Python 3?

The range objects are special: Python will compare range objects as Sequences. What that essentially means is that the comparison doesn't evaluate how they represent a given sequence but rather what... Read More


python - Why do two identical lists have a different memory footprint?

When you write [None] * 10, Python knows that it will need a list of exactly 10 objects, so it allocates exactly that. When you use a list comprehension, Python doesn't know how much it will need. So... Read More


Are dictionaries ordered in Python 3.6+?

Are dictionaries ordered in Python 3.6+? They are insertion ordered [1]. As of Python 3.6, for the CPython implementation of Python, dictionaries remember the order of items inserted. This is consi... Read More