İş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)