«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.

10
Python 3'te neden “1000000000000000 (1000000000000001) aralığında) bu kadar hızlı?
Anladığım kadarıyla range(), aslında Python 3'te bir nesne türü olan fonksiyonun, bir jeneratör gibi, içeriğini anında ürettiği anlaşılıyor . Bu durumda, aşağıdaki satırın aşırı bir zaman almasını beklerdim, çünkü 1 katrilyonun aralıkta olup olmadığını belirlemek için bir katrilyon değerinin üretilmesi gerekecekti: 1000000000000000 in range(1000000000000001) Dahası: Kaç tane sıfır eklesem de, …

14
@Property dekoratör nasıl çalışır?
Yerleşik işlevin nasıl çalıştığını anlamak istiyorum property. Beni şaşırtan şey, propertydekoratör olarak da kullanılabilmesidir, ancak dekoratör olarak kullanıldığında değil, yalnızca yerleşik bir işlev olarak kullanıldığında argümanları alır. Bu örnek belgelerden alınmıştır : class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def …



4
Sözlükler Python 3.6 ve sonraki sürümlerinde sıralanıyor mu?
Sözlükler, önceki enkarnasyonların aksine Python 3.6'da (en azından CPython uygulaması altında) sıralanır. Bu önemli bir değişiklik gibi görünüyor, ancak dokümantasyonda sadece kısa bir paragraf var . Bir dil özelliği yerine bir CPython uygulama detayı olarak tanımlanır, ancak bunun gelecekte standart hale gelebileceğini de ima eder. Öğe sırasını korurken yeni sözlük …

20
Del python'da ne zaman yararlıdır?
Gerçekten python delanahtar kelimeye ihtiyacı olan herhangi bir neden düşünemiyorum (ve çoğu dilde benzer bir anahtar kelime yok gibi görünüyor). Örneğin, bir değişkeni silmek yerine, bir değişken atayabilir None. Ve bir sözlükten silerken, bir delyöntem eklenebilir. Saklamak için herhangi bir sebep var mı delPython'da kalmanız , yoksa Python'un çöp öncesi …


2
Neden bazı kayan <tamsayı karşılaştırmaları diğerlerinden dört kat daha yavaştır?
Kayan sayıları tamsayılarla karşılaştırırken, bazı değer çiftlerinin değerlendirilmesi, benzer büyüklükteki diğer değerlerden çok daha uzun sürer. Örneğin: &gt;&gt;&gt; import timeit &gt;&gt;&gt; timeit.timeit("562949953420000.7 &lt; 562949953421000") # run 1 million times 0.5387085462592742 Ancak, kayan nokta veya tam sayı belirli bir miktar daha küçük veya daha büyük yapılırsa, karşılaştırma çok daha hızlı gerçekleşir: …

2
'X' ('x') içindeki 'x' neden 'x' == 'x' den daha hızlı?
&gt;&gt;&gt; timeit.timeit("'x' in ('x',)") 0.04869917374131205 &gt;&gt;&gt; timeit.timeit("'x' == 'x'") 0.06144205736110564 Ayrıca birden fazla öğeye sahip tuples için çalışır, her iki sürüm de doğrusal olarak büyür: &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' …

8
CPython'daki global tercüman kilidi (GIL) nedir?
Küresel bir tercüman kilidi nedir ve neden bir sorundur? GIL'in Python'dan kaldırılması konusunda çok fazla gürültü yapıldı ve bunun neden bu kadar önemli olduğunu anlamak istiyorum. Hiçbir zaman bir derleyici veya tercüman yazmadım, bu yüzden ayrıntılarla tutumlu olmayın, muhtemelen anlamaları gerekir.



5
Sınıf tanımındaki liste kavramalarından sınıf değişkenlerine erişme
Sınıf tanımındaki liste kavrayışından diğer sınıf değişkenlerine nasıl erişirsiniz? Python 2'de aşağıdakiler çalışır, ancak Python 3'te başarısız olur: class Foo: x = 5 y = [x for i in range(1)] Python 3.2 şu hatayı verir: NameError: global name 'x' is not defined Denemek Foo.xde işe yaramıyor. Python 3'te bunun nasıl …



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.