Запитання з тегом «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
Оператор "є" поводиться несподівано з цілими числами
На цей питання є відповіді на Stack Overflow на російському : Присваивание целых (int) в Питоне Чому наступне поводиться несподівано в Python? >>> a = 256 >>> b = 256 >>> a is b True # This is an expected result >>> a = 257 >>> b = 257 >>> …

4
Чи впорядковані словники в Python 3.6+?
Словники упорядковані в Python 3.6 (принаймні під реалізацію CPython) на відміну від попередніх втілень. Це здається суттєвою зміною, але це лише короткий параграф у документації . Він описаний як деталі реалізації CPython, а не мовна функція, але також означає, що це може стати стандартним у майбутньому. Як реалізація нового словника …

20
Коли дель корисний у python?
Я не можу реально придумати будь-яку причину, чому python потребує delключового слова (і, здається, більшість мов не мають подібного ключового слова). Наприклад, замість видалення змінної можна було просто призначити Noneїї. І при видаленні зі словника delметод може бути доданий. Чи є якась причина триматися delв пітоні, чи це пережиток днів …


2
Чому деякі порівняння з плаваючими <цілими числами в чотири рази повільніше, ніж інші?
Порівнюючи поплавці з цілими числами, для деяких пар значень потрібно набагато більше часу, ніж інші значення аналогічної величини. Наприклад: &gt;&gt;&gt; import timeit &gt;&gt;&gt; timeit.timeit("562949953420000.7 &lt; 562949953421000") # run 1 million times 0.5387085462592742 Але якщо флоат або ціле число на певну суму зменшиться або збільшиться, порівняння запускається набагато швидше: &gt;&gt;&gt; timeit.timeit("562949953420000.7 …

2
Чому 'x' в ('x',) швидше, ніж 'x' == 'x'?
&gt;&gt;&gt; timeit.timeit("'x' in ('x',)") 0.04869917374131205 &gt;&gt;&gt; timeit.timeit("'x' == 'x'") 0.06144205736110564 Також працює для кортежів з декількома елементами, але, схоже, обидві версії ростуть лінійно: &gt;&gt;&gt; timeit.timeit("'x' in ('x', 'y')") 0.04866674801541748 &gt;&gt;&gt; timeit.timeit("'x' == 'x' or 'x' == 'y'") 0.06565782838087131 &gt;&gt;&gt; timeit.timeit("'x' in ('y', 'x')") 0.08975995576448526 &gt;&gt;&gt; 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 Пробуючи …


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 …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.