«python-internals» etiketlenmiş sorular

Python kaputun altında nasıl çalışır? Alınan tasarım kararları ve kullanılan dahili veri yapıları ve algoritmalar (örneğin) ile ilgili sorular için kullanın.

4
Python dizileri neden yavaş?
array.arrayDiziler kutudan çıkarılmış gibi göründüğü için listelerden daha hızlı olmasını bekliyordum . Ancak, aşağıdaki sonucu elde: 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 loop, …

4
Python'un yazdırma işlevini “hacklemek” mümkün mü?
Not: Bu soru yalnızca bilgi amaçlıdır. Python'un içlerine ne kadar derine inmenin mümkün olduğunu görmekle ilgileniyorum. Çok uzun zaman önce, belirli bir soru içinde , basılı çağrılara geçirilen dizelerin çağrı yapıldıktan sonra / sırasında değiştirilip değiştirilemeyeceğine dair bir tartışma başladı print. Örneğin, şu işlevi göz önünde bulundurun: def print_something(): print('This …

6
Sözlüklerdeki ve setlerdeki düzen neden keyfi?
Bir sözlükte döngü yapmanın veya python'da ayarlamanın 'keyfi' sıra ile nasıl yapıldığını anlamıyorum. Demek istediğim, bu bir programlama dilidir, bu yüzden dildeki her şey% 100 belirlenmelidir, doğru mu? Python, sözlüğün veya kümenin hangi kısmının seçildiğine karar veren bir çeşit algoritmaya sahip olmalıdır, 1., saniye vb. Neyi kaçırıyorum?



3
Neden küçük bir dizgeyi yinelemek küçük bir listeden daha yavaş?
Zamanla oynuyordum ve küçük bir dizge üzerinde basit bir liste kavrama yapmanın, aynı işlemi küçük tek karakter dizileri listesinde yapmaktan daha uzun sürdüğünü fark ettim. Herhangi bir açıklama var mı? Neredeyse 1,35 katı zaman. >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x for x …

1
Str.translate Python 3.5'te Python 3.4'e kıyasla neden çok daha hızlı?
text.translate()Python 3.4'ü kullanarak belirli bir dizeden istenmeyen karakterleri kaldırmaya çalışıyordum . Asgari kod: import sys s = 'abcde12345@#@$#%$' mapper = dict.fromkeys(i for i in range(sys.maxunicode) if chr(i) in '@#$') print(s.translate(mapper)) Beklendiği gibi çalışıyor. Ancak aynı program Python 3.4 ve Python 3.5'te çalıştırıldığında büyük bir fark yaratır. Zamanlamaları hesaplamak için kod: …




7
Bir Python nesnesi için kopyalama / derin kopya işlemlerini nasıl geçersiz kılınır?
Ben arasındaki farkı anlamak copyvs. deepcopykopya modülünde. Daha önce copy.copyve copy.deepcopybaşarıyla kullandım , ancak ilk kez gerçekten __copy__ve __deepcopy__yöntemlerini aşırı yüklemeye başladım . Zaten yoluyla etrafına Googled ve baktım örnekleri aramaya Python modülleri dahili __copy__ve __deepcopy__fonksiyonları (örn sets.py, decimal.pyve fractions.py), ama yine de% 100 emin ben doğru var benim. İşte …

4
Python'da hash (n) == n ne zaman?
Python'un hash fonksiyonu ile oynuyorum . Küçük tamsayılar için hash(n) == nher zaman görünür . Ancak bu, büyük sayıları kapsamaz: >>> hash(2**100) == 2**100 False Şaşırmadım, hash'in sınırlı bir değer aralığı aldığını anlıyorum. Bu aralık nedir? En küçük sayıyı bulmak için ikili aramayı kullanmayı denedimhash(n) != n >>> import codejamhelpers …


2
.Pyc dosyaları ne zaman yenilenir?
".Pyc" dosyalarının, programların daha hızlı çalışmasını sağlamak için çalışma zamanında oluşturulan düz metin ".py" dosyalarının derlenmiş sürümleri olduğunu anlıyorum. Ancak birkaç şey gözlemledim: "Py" dosyalarının değiştirilmesi üzerine program davranışı değişir. Bu, "py" dosyalarının derlendiğini veya en azından yeniden derlenmeleri gerekip gerekmediğini anlamak için bir tür karma işlem veya zaman damgalarını …

3
Max neden sıralamadan daha yavaş?
Bunun Python 2 ve 3'teki fonksiyondan maxdaha yavaş olduğunu buldum sort. Python 2 $ python -m timeit -s 'import random;a=range(10000);random.shuffle(a)' 'a.sort();a[-1]' 1000 loops, best of 3: 239 usec per loop $ python -m timeit -s 'import random;a=range(10000);random.shuffle(a)' 'max(a)' 1000 loops, best of 3: 342 usec per loop Python 3 $ …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.