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

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

10
Почему «1000000000000000 в диапазоне (1000000000000001)» так быстро в Python 3?
Насколько я понимаю, range()функция, которая на самом деле является типом объекта в Python 3 , генерирует свое содержимое на лету, подобно генератору. В этом случае я ожидал, что следующая строка займет неоправданное количество времени, потому что для определения того, находится ли 1 квадриллион в этом диапазоне, необходимо сгенерировать квадриллионные значения: …

14
Как работает @property декоратор?
Я хотел бы понять, как работает встроенная функция property. Что меня смущает, так это то, что он propertyтакже может быть использован в качестве декоратора, но он принимает аргументы только тогда, когда используется как встроенная функция, а не как декоратор. Этот пример из документации : class C(object): def __init__(self): self._x = …


11
Оператор «is» ведет себя неожиданно с целыми числами
На этот вопрос есть ответы на Переполнение стека на русском языке : Присваивание целых (int) в Питоне Почему следующие действия ведут себя неожиданно в Python? >>> a = 256 >>> b = 256 >>> a is b True # This is an expected result >>> a = 257 >>> b …

4
Заказаны ли словари в Python 3.6+?
Словари упорядочены в Python 3.6 (по крайней мере, под реализацию CPython) в отличие от предыдущих воплощений. Это кажется существенным изменением, но это только короткий параграф в документации . Он описывается как подробность реализации CPython, а не как языковая функция, но также подразумевает, что это может стать стандартом в будущем. Как …

20
Когда Del полезен в Python?
Я не могу придумать причину, по которой python нуждается в delключевом слове (и большинство языков, похоже, не имеют аналогичного ключевого слова). Например, вместо того, чтобы удалить переменную, можно просто присвоить Noneей. И при удалении из словаря, delметод может быть добавлен. Есть ли какая-то причина, чтобы оставаться delв Python, или это …


2
Почему некоторые сравнения с плавающей запятой в четыре раза медленнее других?
При сравнении значений с плавающей точкой и целых чисел некоторым парам значений требуется гораздо больше времени для оценки, чем другим значениям схожей величины. Например: >>> import timeit >>> timeit.timeit("562949953420000.7 < 562949953421000") # run 1 million times 0.5387085462592742 Но если число с плавающей точкой или целое число становится меньше или больше …

2
Почему «x» в («x»,) быстрее, чем «x» == «x»?
>>> timeit.timeit("'x' in ('x',)") 0.04869917374131205 >>> timeit.timeit("'x' == 'x'") 0.06144205736110564 Также работает для кортежей с несколькими элементами, обе версии кажутся линейно растущими: >>> timeit.timeit("'x' in ('x', 'y')") 0.04866674801541748 >>> timeit.timeit("'x' == 'x' or 'x' == 'y'") 0.06565782838087131 >>> timeit.timeit("'x' in ('y', 'x')") 0.08975995576448526 >>> timeit.timeit("'x' == 'y' or 'x' == …

8
Что такое глобальная блокировка интерпретатора (GIL) в CPython?
Что такое глобальная блокировка интерпретатора и почему это проблема? Было много шума вокруг удаления GIL из Python, и я хотел бы понять, почему это так важно. Я никогда не писал ни компилятор, ни интерпретатор, так что не будьте скромны с деталями, мне, вероятно, понадобится их понять.



5
Доступ к переменным класса из списка понимания в определении класса
Как вы получаете доступ к другим переменным класса из понимания списка в определении класса? Следующее работает в Python 2, но не работает в Python 3: class Foo: x = 5 y = [x for i in range(1)] Python 3.2 выдает ошибку: NameError: global name 'x' is not defined Попытка Foo.xтоже …


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)) Но результат меня удивил: Size of l1 = 144 Size of l2 = 192 …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.