• 0

Kodunuzu İyi Hale Getirecek 10 Python İpucu ve Püf Noktası

4 hafta önce , Okuma süresi 5 dakika.

Kodunuzu İyi Hale Getirecek 10 Python İpucu ve Püf Noktası
Harika Python Hileleri:

Python, dinamik semantiğe sahip, yorumlanmış, nesne yönelimli, üst düzey bir programlama dili olmakla beraber dinamik yazım ve dinamik bağlama ile birleştirilmiş yüksek seviyeli yerleşik veri yapıları, Hızlı Uygulama Geliştirme için ve ayrıca mevcut bileşenleri birbirine bağlamak için bir komut dosyası veya yapıştırıcı dili olarak kullanım için çekici hale getirir.

Liste anlama özelliğini kullanın

Python 2.0'dan beri, birçok "for" ve "while" bloğunun yerini almak için liste anlamayı kullanabilirsiniz. Listeyi anlama daha hızlıdır çünkü Python yorumlayıcısının döngü sırasında öngörülebilir bir modeli tespit etmesi için optimize edilmiştir. Bonus olarak, liste anlama daha okunaklı olabilir (işlevsel programlama) ve çoğu durumda, sayım için fazladan bir değişken kazandırır. Örnek vericek olursak, 1 ile 10 arasındaki çift sayıları bir satırla alalım.

# bir aralığı yinelemenin iyi yolu 
eşittir = [ aralıktaki i için (10) eğer i% 2 == 0]
yazdır (çiftler)
Çıktı: [0, 2, 4, 6, 8]
# aşağıdaki pek "Pythonic" değildir
i = 0 çift
= []
i <10 ise:
eğer i% 2 == 0: evens.append (i)
i + = 1
baskı (çiftler)
Çıktı: [0, 2, 4, 6, 8]

Birleştirme dizeleri kullanın

Bir dizgi listesini birleştirmeniz gerektiğinde, bunu her bir öğeyi tek tek ekleyerek bir for döngüsü kullanarak yapabilirsiniz . Bununla birlikte, özellikle liste uzunsa,  çok verimsiz olacaktır. Python'da dizeler değişmezdir ve bu nedenle sol ve sağ dizelerin her birleştirme çifti için yeni dizeye kopyalanması gerekir.

Daha iyi bir yaklaşım, join ()işlevi aşağıda gösterildiği gibi kullanmaktır:

karakterler = ['p', 'y', 't', 'h', 'o', 'n'] 
kelime = "" .join (karakterler)
baskı (kelime)
Çıktı: python

Numaralandırma işlevini kullanın

Enumerate () yöntemi, bir yinelenebilir sayacı ekler ve onu (numaralandırma nesnesi) döndürür.

Sözdizimi enumerate ()şöyledir:

numaralandır (yinelenebilir, başlangıç ​​= 0)

başlanğıç isteğe bağlıdır. enumerate ()bu sayıdan saymaya başlar. Başlangıç ​​belirtilmezse, o  olarak alınır start. Örnegin ;

bakkal = ['ekmek', 'süt', 'tereyağı'] 

numaralandırmadaki öğe için (bakkal): sayım için
baskı (öğe)

baskı (' n')
, numaralandırılan öğe (bakkal):
baskı (sayı, öğe)

print (' n')
#
sayım için varsayılan başlangıç ​​değerini değiştirme , numaralandırmadaki öğe (market, 100):
baskı (sayım, madde)
Çıktı: (0, 'ekmek')
(1, 'süt')
(2, 'tereyağı')

0 ekmek
1 süt
2 tereyağı

100 ekmek
101 süt
102 tereyağı

Lambda işlevini kullanın

Python'da anonim bir işlev, isimsiz olarak tanımlanan bir işlevdir. Normal işlevler  def Python'da anahtar sözcük kullanılarak tanımlanırken , anonim işlevler lambda anahtar sözcük kullanılarak tanımlanır .

Python'da Lambda İşlevinin Sözdizimi:

lambda bağımsız değişkenleri: ifade

# İşlev basitse aşağıdaki örnek Python'da önerilmezdef add (x, y): 
x + y döndür
yazdır (ekle (2, 3))Çıktı: 5# Bu gibi durumlarda, def işlevi yerine lambda işlevinin kullanılması öneriliradd = lambda x, y: x + Y
print (add (2, 3))
Çıktı: 5

Python'daki Liste, Bilgisayar Bilimi'nde insanların bahsettiği normal tek bağlantılı liste olarak uygulanmaz. Python'daki liste bir dizidir. Yani, listenin başından arama yapmadan, O (1) sabit süreli bir indeksi kullanarak listedeki bir öğeyi alabilirsiniz. Bunun anlamı nedir? Bir Python geliştiricisi, bir liste nesnesinde insert () kullanırken bir an düşünmelidir. Örneğin: >>> list.insert (0, eleman)

Bu, ön tarafa bir öğe eklerken verimli değildir, çünkü listedeki tüm sonraki dizinin değiştirilmesi gerekecektir. Bununla birlikte, list.append () kullanarak verimli bir şekilde listenin sonuna bir öğe ekleyebilirsiniz. Bununla birlikte, her iki ucunda da hızlı yerleştirme veya çıkarma istiyorsanız, deque seçin. Hızlıdır çünkü Python'daki deque çift bağlantılı bir liste olarak uygulanır.

Listelerle çalışırken ZIP kullanın

Aynı uzunlukta birkaç listeyi birleştirip sonucu yazdırmanız için size bir görev verildiğini varsayalım. Yine, zip()aşağıdaki kodda gösterildiği gibi kullanarak istenen sonucu elde etmenin daha genel bir yolu :

ülkeler = ['Fransa', 'Almanya', 'Kanada'] 
başkentler = ['Paris', 'Berlin', 'Ottawa']
ülke için, başkent zip (ülkeler, başkentler):
print (ülke, başkent)
Çıktı: Fransa Paris
Almanya Berlin
Kanada Ottawa

Koleksiyonları kullanın

Python koleksiyonları, listeler, kümeler, tuple'lar, sözlükler gibi konteyner veri türleridir. Koleksiyon modülü, kodunuzu geliştirerek işleri çok daha temiz ve kolay hale getiren yüksek performanslı veri türleri sağlar. Koleksiyonlar modülünün sağladığı birçok işlev vardır. Bu gösteri için Counter() işlevi kullanılır .

Counter () Fonksiyonu böyle bir liste veya başlığın gibi bir iterable alır ve Bir Karşı Sözlük döndürür. Sözlüğün anahtarları yinelenebilirde bulunan benzersiz öğeler olacaktır ve her anahtarın değerleri yinelenebilir dosyada bulunan öğelerin sayısı olacaktır.

Bir counter() nesne oluşturmak için , Counter () aşağıdaki kodda gösterildiği gibi çalışacak yinelenebilir (liste) geçirin .

koleksiyonlardan içe aktar Sayaç 
sayısı = Sayaç (['a', 'b', 'c', 'd', 'b', 'c', 'd', 'b'])
print (sayı)
Çıktı: Sayaç ( {'b': 3, 'c': 2, 'd': 2, 'a': 1})

Yineleme araçları kullanın

Python itertools modülü, yineleyicileri işlemeye yönelik bir araç koleksiyonudur. itertools yinelenebilir girdi verileri dizileri oluşturmak için birden fazla araca sahiptir.  itertools combinations kombinasyonları oluşturmak için kullanılır. Bunlar aynı zamanda giriş değerlerinin olası gruplandırmalarıdır

itertools'dan içe aktarma kombinasyonları 
comb_list = list (kombinasyonlar ('12345', 2))
yazdır (comb_list)
Çıktı: [['1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '3 '), (' 2 ',' 4 '), (' 2 ',' 5 '), (' 3 ',' 4 '), (' 3 ',' 5 '), (' 4 ',' 5 ')]

Jeneratörleri kullanın

Jeneratörlerin uygulanması çok kolay, ancak anlaşılması biraz zor.

Üreteçler, yineleyiciler oluşturmak için kullanılır, ancak farklı bir yaklaşımla. Üreteçler, yinelenebilir bir öğe kümesini teker teker özel bir şekilde döndüren basit işlevlerdir.

Bir öğe kümesi üzerindeki yineleme, for deyimini kullanmaya başladığında, üretici çalıştırılır. Üreticinin işlev kodu bir "verim" ifadesine ulaştığında, üretici, kümeden yeni bir değer döndürerek yürütmesini for döngüsüne geri döndürür. Jeneratör işlevi istediği kadar (muhtemelen sonsuz) değer üretebilir ve her birini sırayla verir.

7 rastgele tamsayı döndüren bir üretici fonksiyonunun basit bir örneği:

rastgele içe aktardef lottery (): 
#
, aralık (6) 'daki i için 1 ile 40 arasında 6 sayı döndürür :
random.randint (1, 40)
# 1 ile 15 arasında 7. bir sayı döndürür
random.randint (1,15)
piyangodaki random_number için ():
print ("Ve sonraki sayı…% d!"% (random_number))
Çıktı: Ve sonraki sayı ... 17! Ve bir sonraki numara ... 36! Ve sonraki numara ... 37! Ve sonraki numara ... 15! Ve bir sonraki numara ... 5! Ve sonraki numara ... 27! Ve sonraki numara ... 11!

Dekoratörleri kullanın

Python, mevcut bir koda işlevsellik eklemek için  dekoratörler adı verilen ilginç özelliğe sahiptir .

Bu aynı zamanda metaprogramlama olarak da adlandırılır, çünkü programın bir bölümü derleme zamanında programın başka bir bölümünü değiştirmeyede çalışır.

İşlevler ve yöntemler, çağrılabildikleri için çağrılabilir olarak adlandırılır.

Aslında, özel _call_() yöntemi uygulayan herhangi bir nesne çağrılabilir olarak adlandırılır. Bu nedenle, en temel anlamda, bir dekoratör, bir çağrılabilir döndüren bir çağrılabilirdir.

Temel olarak, bir dekoratör bir işlevi alır, bazı işlevler ekler ve onu döndürür.

def make_pretty (func): def interior ( 
):
print (" Süslendim ")
func ()
return inside
def sıradan ():
print ("Sıradanım")


Dekoratör işlevinin orijinal işleve bazı yeni işlevler eklediğini görebiliriz. Bu, hediye paketlemeye benzer. Dekoratör bir sarmalayıcı görevi görür. Süslenen nesnenin doğası (içindeki gerçek hediye) değişmez. Ama şimdi güzel görünüyor (dekore edildiğinden beri).

Bu yaygın bir yapıdır ve bu nedenle Python, bunu basitleştirmek için bir sözdizimine sahiptir.
#Yazılım #python