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.
Spodziewałem array.arraysię, że będę szybszy niż listy, ponieważ tablice wydają się być rozpakowane. Jednak otrzymuję następujący wynik: In [1]: import array In [2]: L = list(range(100000000)) In [3]: A = array.array('l', range(100000000)) In [4]: %timeit sum(L) 1 loop, best of 3: 667 ms per loop In [5]: %timeit sum(A) 1 …
Uwaga: to pytanie służy wyłącznie celom informacyjnym. Interesuje mnie, jak głęboko w wewnętrzne elementy Pythona można się z tym pogodzić. Nie tak dawno temu rozpoczęła się dyskusja w ramach pewnego pytania dotyczącego tego, czy łańcuchy przekazane do instrukcji print mogą być modyfikowane po / w trakcie wywołania funkcji print. Na …
Nie rozumiem, w jaki sposób zapętlenie w słowniku lub ustawienie w Pythonie odbywa się w „arbitralnej” kolejności. To znaczy, to język programowania, więc wszystko w języku musi być w 100% określone, prawda? Python musi mieć jakiś algorytm, który decyduje, która część słownika lub zestawu zostanie wybrana, pierwsza, druga i tak …
Czy istnieje sposób, aby zobaczyć, jak działają funkcje wbudowane w Pythonie? Nie chodzi mi tylko o to, jak ich używać, ale także w jaki sposób zostały zbudowane, jaki jest kod za posortowaniem lub wyliczeniem itp ...?
Wygląda na list(a)to, że totalocate, [x for x in a]totalocates w niektórych momentach i [*a]totalocate przez cały czas ? Oto rozmiary n od 0 do 12 i wynikowe rozmiary w bajtach dla trzech metod: 0 56 56 56 1 64 88 88 2 72 88 96 3 80 88 104 …
Bawiłem się czasem i zauważyłem, że wykonanie prostego rozumienia listy na małym łańcuchu trwało dłużej niż wykonanie tej samej operacji na liście małych ciągów pojedynczych znaków. Jakieś wyjaśnienie? To prawie 1,35 razy więcej czasu. >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x for x …
Próbowałem usunąć niechciane znaki z danego ciągu używając text.translate()w Pythonie 3.4. Minimalny kod to: import sys s = 'abcde12345@#@$#%$' mapper = dict.fromkeys(i for i in range(sys.maxunicode) if chr(i) in '@#$') print(s.translate(mapper)) Działa zgodnie z oczekiwaniami. Jednak ten sam program wykonywany w Pythonie 3.4 i Pythonie 3.5 daje dużą różnicę. Kod …
Czy jest jakaś ostateczna różnica między następującymi dwoma fragmentami kodu? Pierwsza przypisuje wartość do zmiennej w funkcji, a następnie zwraca tę zmienną. Druga funkcja po prostu zwraca wartość bezpośrednio. Czy Python zamienia je w równoważny kod bajtowy? Czy któryś z nich jest szybszy? Przypadek 1 : def func(): a = …
A tuplezajmuje mniej miejsca w pamięci w Pythonie: >>> a = (1,2,3) >>> a.__sizeof__() 48 podczas gdy lists zajmuje więcej miejsca w pamięci: >>> b = [1,2,3] >>> b.__sizeof__() 64 Co dzieje się wewnętrznie w zarządzaniu pamięcią w Pythonie?
Rozumiem różnicę między copya deepcopyw module kopiowania. Używałem copy.copyi copy.deepcopywcześniej z powodzeniem, ale to jest pierwszy raz, kiedy faktycznie przeładowałem metody __copy__i __deepcopy__. Już Googled się i spojrzał przez wbudowany w modułach Pythona szukać wystąpień __copy__i __deepcopy__funkcji (np sets.py, decimal.pyi fractions.py), ale nadal nie jestem w 100% pewien, że mam …
Bawiłem się funkcją skrótu Pythona . W przypadku małych liczb całkowitych pojawia się hash(n) == nzawsze. Jednak nie dotyczy to dużych liczb: >>> hash(2**100) == 2**100 False Nie dziwię się, rozumiem, że hash przyjmuje skończony zakres wartości. Co to za zasięg? Próbowałem użyć wyszukiwania binarnego, aby znaleźć najmniejszą liczbęhash(n) != …
Biorąc pod uwagę odpowiedź Zero Piraeus na inne pytanie , mamy to x = tuple(set([1, "a", "b", "c", "z", "f"])) y = tuple(set(["a", "b", "c", "z", "f", 1])) print(x == y) Drukuje Trueokoło 85% czasu z włączoną losowością mieszania . Dlaczego 85%?
Rozumiem, że pliki „.pyc” to skompilowane wersje zwykłych plików „.py”, tworzone w czasie wykonywania, aby programy działały szybciej. Zauważyłem jednak kilka rzeczy: Po modyfikacji plików „py” zachowanie programu zmienia się. Oznacza to, że pliki „py” są kompilowane lub przynajmniej przechodzą przez jakiś proces haszowania lub porównują znaczniki czasu w celu …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.