Pytania otagowane jako python-internals

Jak działa Python pod maską? Stosuj w przypadku pytań dotyczących (na przykład) podjętych decyzji projektowych oraz wewnętrznych struktur danych i zastosowanych algorytmów.

10
Dlaczego „1000000000000000 w zakresie (1000000000000001)” jest tak szybki w Pythonie 3?
Rozumiem, że range()funkcja, która w Pythonie 3 jest typem obiektu , generuje zawartość w locie, podobnie jak generator. W takim przypadku oczekiwałbym, że następujący wiersz zajmie nadmiernie dużo czasu, ponieważ w celu ustalenia, czy 1 biliard mieści się w zakresie, należałoby wygenerować biliardy: 1000000000000000 in range(1000000000000001) Co więcej: wydaje się, …

14
Jak działa dekorator @property?
Chciałbym zrozumieć, jak propertydziała funkcja wbudowana . To, co mnie dezorientuje, to fakt, że propertymożna go również używać jako dekoratora, ale wymaga tylko argumentów, gdy jest używany jako funkcja wbudowana, a nie jako dekorator. Ten przykład pochodzi z dokumentacji : class C(object): def __init__(self): self._x = None def getx(self): return …



4
Czy słowniki są zamawiane w Pythonie 3.6+?
Słowniki są uporządkowane w Pythonie 3.6 (przynajmniej w ramach implementacji CPython), inaczej niż w poprzednich wcieleniach. To wydaje się być istotną zmianą, ale jest to tylko krótki akapit w dokumentacji . Jest opisywany jako szczegół implementacji CPython, a nie jako funkcja językowa, ale sugeruje również, że może stać się standardem …

20
Kiedy del jest przydatny w Pythonie?
Naprawdę nie mogę wymyślić żadnego powodu, dla którego python potrzebuje delsłowa kluczowego (a większość języków wydaje się nie mieć podobnego słowa kluczowego). Na przykład zamiast usuwać zmienną, można ją po prostu przypisać None. Podczas usuwania ze słownika delmożna dodać metodę. Czy jest jakiś powód, aby pozostawać delw Pythonie, czy też …


2
Dlaczego niektóre porównania typu float <liczby całkowite są cztery razy wolniejsze niż inne?
Porównując liczby zmiennoprzecinkowe z liczbami całkowitymi, ocena niektórych par zajmuje znacznie więcej czasu niż innych wartości o podobnej wielkości. Na przykład: &gt;&gt;&gt; import timeit &gt;&gt;&gt; timeit.timeit("562949953420000.7 &lt; 562949953421000") # run 1 million times 0.5387085462592742 Ale jeśli liczba zmiennoprzecinkowa lub liczba całkowita zostanie zmniejszona lub powiększona o określoną wartość, porównanie przebiega …

2
Dlaczego „x” w („x”,) jest szybsze niż „x” == „x”?
&gt;&gt;&gt; timeit.timeit("'x' in ('x',)") 0.04869917374131205 &gt;&gt;&gt; timeit.timeit("'x' == 'x'") 0.06144205736110564 Działa również dla krotek z wieloma elementami, obie wersje wydają się rosnąć liniowo: &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
Co to jest globalna blokada tłumacza (GIL) w CPython?
Co to jest globalna blokada tłumacza i dlaczego stanowi problem? Podczas usuwania GIL z Pythona powstało wiele hałasu i chciałbym zrozumieć, dlaczego jest to takie ważne. Nigdy sam nie napisałem kompilatora ani tłumacza, więc nie bądź oszczędny w szczegółach, prawdopodobnie potrzebuję ich do zrozumienia.






Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.