İşinize Yarayacak Bazı Python İpuçları
Python programlama dilini öğrenmeye başladıysanız diğer dillere nazaran bazı işleri daha az kodla daha kolay yapabileceğinizi göreceksiniz. Python dilinin popüler olmasının nedenlerinden bir tanesi de budur.
Burada işleriniz kolaylaştıracak bazı ipuçları ve kod örnekleri bulacaksınız.
İki değişkenin değerlerini birbirine değiştirmek
Python, bir satırda iki değişkenin değerlerini değiş tokuş yapmak için sezgisel bir yol sağlamaktadır. Örneğimizi inceleyelim.
x, y = 10, 20 print(x, y) x, y = y, x print(x, y) #1 (10, 20) #2 (20, 10)
Karşılaştırma operatörlerini birleştirme
Eğer bir sayının hem bir değerden büyük olduğunu ve aynı zamanda bir başka sayıdan küçük olduğunu tek bir satır kodla denetleyebiliriz.
n = 10 sonuc = 1 < n < 20 print(sonuc) # True sonuc = 1 > n <= 9 print(sonuc) # False
Örnekte n değişkenine 10 rakamını atadıktan sonra ikinci satırda n değişkeninin 1’den büyük ve aynı zamanda 20’den küçük olup olmadığına bakıyoruz ve sonucu boolean tipinde sonuc değişkenine atama yapıyoruz ve sonraki satırda da bunu yazdırıyoruz. Görüleceği üzere ilk karşılaştırmamız doğru olduğundan True değeri dönecektir.
Şartlı atamalar için üçlü (ternary) koşul operatör kullanımı
Ternary yani üçlü koşul operatörü geleneksel if-else koşul kodlarına göre daha az kodla kolaylık sağlamaktadır.
Genel ifade şu şekilde kullanılmaktadır.
[doğru ise] if [koşul] else [yanlış ise]
Bunu bir örnekle açıklayalım
x = 10 if (y == 9) else 20
Bu örnekte x değişkenine y değeri 9‘a eşitse 10 atayalım, değilse 20 atayalım koşullu cümlesidir.
Benzerini sınıf objeleri için de uygulayabiliriz.
x = (classA if y == 1 else classB)(param1, param2)
Bu örnekte classA ve classB iki ayrı obje olup y değerine göre sınıf kurucularından biri çağrılır.
Aşağıdaki örnekte üç parametreli hangisikucuk fonksiyonu tanımlıyoruz ve bu üç değişkenden en küçük olanı tek satırlık bir koşul cümlesi ile bulabiliyoruz.
def hangisikucuk(a, b, c): return a if a <= b and a <= c else (b if b <= a and b <= c else c) print(hangisikucuk(1, 0, 1)) print(hangisikucuk(1, 2, 2)) print(hangisikucuk(2, 2, 3)) print(hangisikucuk(5, 4, 3)) #Çıktısı #0 #1 #2 #3
Listelerle bir başka örkek
[m**2 if m > 10 else m**4 for m in range(50)] #=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
Çoklu satır dizelerle (string) çalışmak
Burada kullanacağımız yöntem C dilinden aşina olduğumuz ters slash ( \ ) kullanmak olacaktır. Yani uzun bir string değerini bir den fazla satıra bölmek istersek satır sonlarına \ eklemek yeterlidir.
cokluSatir = "select * from multi_row \ where row_id < 5" print(cokluSatir) # select * from multi_row where row_id < 5
Bir başka yöntem ise “”” (üç çift tırnak) kullanmak olabilir.
cokluSatir = """select * from multi_row where row_id < 5""" print(cokluSatir) #select * from multi_row #where row_id < 5
Yukarıdaki yöntemlerin bir dezavantajı vardır. Eğer satırlarda muntazam bir paragraf başı kullanılmıyorsa her çıkıntı için bir boşluk (whitespace) eklenecektir.
Son bir çözüm ise string değerini parantez içinde almak olacaktır.
cokluSatir= ("select * from multi_row " "where row_id < 5 " "order by age") print(cokluSatir) #select * from multi_row where row_id < 5 order by age
Bir dizinin elemanlarını yeni değişkenlere atama
Birden fazla değişkene aynı anda atama yapmak için diziler kullanabiliriz. Dikkat edeceğimiz konu dizi eleman sayısı kadar değişken kullanılmalıdır.
testList = [1,2,3] x, y, z = testList print(x, y, z) #-> 1 2 3
Bir dizideki string’leri nasıl tek bir string yaparız
Bir dizi içindeki string değerleri tek bir string haline join fonksiyonu ile dönüştürebiliriz. Aşağıdaki örnekte kelimeler arasına boşluk bırakarak “Ben Python ile çalışmayı seviyorum” string değeri oluşturulup ekrana yazdırıyoruz.
test = ['Ben', 'Python', 'ile', 'çalışmayı', 'seviyorum'] print ''.join(test)
Koda dahil edilen modüllerin dosya lokasyonları yazdırmak
Aşağıdaki örnekte threading ve socket modüllerini kodumuza dahil ediyoruz ve altta bunların dosya yolunu yazdırıyoruz.
import threading import socket print(threading) print(socket) #1- <module 'threading' from '/usr/lib/python2.7/threading.py'> #2- <module 'socket' from '/usr/lib/python2.7/socket.py'>
“_” Operatorünün kullanılması
Bu operatörün varlığından bir çok Python kullanıcı haberdar değildir ama özellikle Python konsolundan kod girişlerinde kolaylık sağlar.
Python konsolunda herhangi bir ifade veya fonksiyonu denediğimizde çıkan sonuç geçici olarak _ operatörüne aktarılır. Sonucu tekrarlamak için _ operatörünü kullanmamız yeterlidir.
>>> 2 + 1 3 >>> _ 3 >>> print _ 3
Örneğimizde 2+1 sonucu olan 3 değeri _ operatörüne aktarılmaktadır. Sadece onu kullanarak ekrana 3 değerini tekrar yazdırmak mümkün olmaktadır.
Kodumuzda hata ayıklamayı (debug) devreye sokmak
Kodumuza pdb modülünü ekleyerek hata ayıklama işlemini aktif ederek breakpoint ekleyebiliyoruz.
import pdb pdb.set_trace()
Dosya paylaşımı yapmak
Python dahili web sunucu özelliği ile kök dizininde bulunan dosyaları web üzerinden paylaştırma özelliğine sahiptir. Web sunucuyu başlatmak için Python 3 sürümünde aşağıdaki komutu yazmanız yeterlidir.
python3 -m http.server
Eğer halen Python 2. sürümü kullanıyorsanız aşağıdaki komutu yazmanız gerekecek.
python -m SimpleHTTPServer
“if” koşul operatörünü kısa şekliyle kullanmak
Normalde birden fazla koşulu if ile denetlememiz gerektiğinde şunu yazarız.
if m==1 or m==3 or m==5 or m==7:
Bunu daha pratik olarak aşağıdaki şekilde kısaltabiliyoruz.
if m in [1,3,5,7]:
Python sürümünü tesbit etmek
Eğer Python kodunuzun belli sürümler altında çalışmasını istemiyorsanız kodunuzun hangi Python sürümünde çalıştığını denetleyebilirsiniz.
import sys #Python sürümünü tesbit ediyoruz if not hasattr(sys, "hexversion") or sys.hexversion != 50660080: print("Üzgünüm, bu scripti çalıştırmak için en az Python 3.5 gereklidir\n") print("Lütfen 3.5 veya daha üst sürüme güncelleme yapınız.\n") sys.exit(1) #Python sürümünü yazdıralım print("Python sürümünüz: ", sys.version)