Вопросы с тегом 'python-internals'

Как работает Python под капотом? Используйте для вопросов, касающихся (например) проектных решений и используемых внутренних структур данных и алгоритмов.
18 отв.

Возможны ли переменные статического класса на Python?

Возможно ли иметь статические переменные класса или методы в python? Какой синтаксис требуется для этого?
16 сент. '08 в 4:46
9 отв.

Почему "1000000000000000 в диапазоне (1000000000000001)" так быстро в Python 3?

Я понимаю, что функция range(), которая на самом деле тип объекта в Python 3, генерирует ее содержимое на лету, подобно генератору. В этом случае я ожидал бы, что следующая строка займет слишком много времени, потому что для определения того, будет...
06 мая '15 в 18:32
14 отв.

Как работает декоратор @property?

Я хотел бы понять, как работает встроенная функция property. Меня смущает то, что property также можно использовать в качестве декоратора, но он принимает только аргументы при использовании в качестве встроенной функции, а не при использовании в кач...
26 июня '13 в 23:47
11 отв.

Использование __slots__?

Какова цель __slots__ в Python - особенно когда я хотел бы использовать его, а когда нет?
23 янв. '09 в 8:37
18 отв.

Когда del полезно в python?

Я не могу думать о какой-либо причине, почему для python требуется ключевое слово del (и большинство языков, похоже, не имеют аналогичного ключевого слова). Например, вместо удаления переменной можно просто присвоить ей None. И при удалении из слова...
27 мая '11 в 4:37
2 отв.

Почему некоторые float <целочисленные сравнения в четыре раза медленнее других?

При сравнении поплавков с целыми числами некоторые пары значений занимают гораздо больше времени, чем другие значения аналогичной величины. Например: >>> import timeit >>> timeit.timeit("562949953420000.7 < 562949953421000") # ...
07 мая '15 в 15:11
6 отв.

time.sleep - спит нить или процесс?

В Python для * nix, time.sleep() блокирует поток или процесс?
18 сент. '08 в 17:16
2 отв.

Почему 'x' в ('x',) быстрее, чем 'x' == 'x'?

>>> timeit.timeit("'x' in ('x',)") 0.04869917374131205 >>> timeit.timeit("'x' == 'x'") 0.06144205736110564 Также работает для кортежей с несколькими элементами, обе версии кажутся линейными: >>> timeit.timeit("'x' in ('x...
05 марта '15 в 21:29
3 отв.

Являются ли словари упорядоченными в Python 3.6+?

Словари упорядочены в Python 3.6 (по крайней мере, при реализации CPython), в отличие от предыдущих воплощений. Это похоже на существенное изменение, но это лишь короткий абзац в документации. Он описывается как деталь реализации CPython, а не язык, ...
11 окт. '16 в 17:59
13 отв.

Что такое глобальная блокировка интерпретатора (GIL) в CPython?

Что такое глобальная блокировка интерпретатора и почему это проблема? Много шума было устранено при удалении GIL из Python, и я хотел бы понять, почему это так важно. Я никогда не писал ни компилятор, ни интерпретатор, так что не стесняйтесь подробн...
18 авг. '09 в 17:50
7 отв.

Являются ли кортежи более эффективными, чем списки в Python?

Есть ли разница в производительности между кортежами и списками, когда дело доходит до создания и поиска элементов?
16 сент. '08 в 4:43
7 отв.

Как реализуется список Python?

Это связанный список, массив? Я искал вокруг и только нашел, что люди догадываются. Мои знания C недостаточно хороши, чтобы посмотреть исходный код.
12 окт. '10 в 20:56
5 отв.

Доступ к переменным класса из понимания списка в определении класса

Как вы получаете доступ к другим переменным класса из понимания списка в определении класса? Следующие действия выполняются в Python 2, но не выполняются в Python 3: class Foo: x = 5 y = [x for i in range(1)] Python 3.2 дает ошибку: NameE...
17 дек. '12 в 0:42
6 отв.

Почему порядок в словарях и наборах произволен?

Я не понимаю, как цикл по словарю или набор в python выполняется "произвольным" порядком. Я имею в виду, это язык программирования, поэтому все на языке должно быть на 100% определено, правильно? Python должен иметь какой-то алгоритм, который опреде...
18 марта '13 в 17:59
3 отв.

Почему два идентичных списка имеют разный объем памяти?

Я создал два списка l1 и l2, но каждый из них имеет другой метод создания: import sys l1 = [None] * 10 l2 = [None for _ in range(10)] print('Size of l1 =', sys.getsizeof(l1)) print('Size of l2 =', sys.getsizeof(l2)) Но результат удивил меня: Siz...
25 июля '18 в 22:22