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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В Python для * nix, time.sleep() блокирует поток или процесс?
18 сент. '08 в 14: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 в 18:29
13

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

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

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

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

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

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

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

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

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

Я не понимаю, как цикл по словарю или набор в python выполняется "произвольным" порядком. Я имею в виду, это язык программирования, поэтому все на языке должно быть на 100% определено, правильно? Python должен иметь какой-то алгоритм, который опреде...
18 мар. '13 в 14: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 в 19:22