21 Mart 2025
Python, net sözdizimi ve okunabilirliği ile bilinen, çok yönlü ve yaygın olarak kullanılan bir programlama dilidir. Bu, onu yeni başlayanlar için ideal bir seçim haline getirir, çünkü web geliştirmeden veri bilimine kadar her şeyde kullanılır ve birçok kariyer yolu açar. Bu makale, basit ve anlaşılması kolay kod örnekleriyle temel Python kavramları konusunda size rehberlik edecektir.
Geleneksel “Merhaba Dünya!” programı ile başlayalım. Python'da bu son derece basittir:
print("Merhaba, Başlangıç Yapan!")
Bu tek satır aşağıdakileri gerçekleştirir:
print()
: Bu yerleşik bir fonksiyondur. Fonksiyonlar, belirli görevleri gerçekleştiren yeniden kullanılabilir kod bloklarıdır. print()
kullanıcıya çıktı gösterir.("Merhaba, Başlangıç Yapan!")
: Parantezlerin içinde bir dize değişmezi vardır. Dize, tek ('...'
) veya çift ("..."
) tırnak içine alınmış bir karakter dizisidir.Bunu çalıştırdığınızda, Python yorumlayıcısı print()
işlevini çalıştırır ve ekranınızda “Merhaba, Başlangıç Yapan!” ifadesini görüntüler.
Değişkenler, verileri depolamak için çok önemlidir. Onları etiketli kaplar olarak düşünün. Açıklayıcı adlar kullanmak, küçük harflerle başlamak ve kelimeleri ayırmak için alt çizgi kullanmak (örneğin, my_variable
, user_age
) iyi bir uygulamadır. İşte bir örnek:
# Değişkenlere değer atama
message = "Python'a Hoş Geldiniz!"
number = 10
pi = 3.14159
# Değişken değerlerini yazdırma
print(message)
print(number)
print(pi)
Açıklama:
message = "Python'a Hoş Geldiniz!"
: message
adında bir değişken oluşturulur ve “Python'a Hoş Geldiniz!” dizesi depolanır.number = 10
: number
adında bir değişken 10
tamsayısını depolar.pi = 3.14159
: pi
adında bir değişken 3.14159
ondalık sayısını depolar.print()
daha sonra bu değerleri görüntüler. Python dinamik olarak yazılmıştır: değişkenin türünü (dize, tamsayı, ondalık sayı) açıkça belirtmeniz gerekmez. Python bunu atanan değerden çıkarır.
Etkileşimli programlar genellikle kullanıcı girdisine ihtiyaç duyar. İşte nasıl elde edeceğiniz:
# Kullanıcı girdisi alma
name = input("Lütfen adınızı girin: ")
# Kişiselleştirilmiş bir selamlama yazdırma
print("Merhaba, " + name + "!") # Dize birleştirme
Açıklama:
name = input("Lütfen adınızı girin: ")
: input()
programı duraklatır, kullanıcının bir şey yazıp Enter tuşuna basmasını bekler ve bunu name
değişkeninde bir dize olarak saklar.print("Merhaba, " + name + "!")
: Bu bir selamlama yazdırır. +
operatörü, dizelerle birlikte dize birleştirme işlemini gerçekleştirir ve onları birleştirir. Okunabilirlik için birleştirme yaparken +
etrafına boşluk eklemek iyi bir uygulamadır.if
, else
ve elif
Koşullu ifadeler, programınızın kararlar almasını sağlar ve koşulların doğru veya yanlış olmasına bağlı olarak hangi kod bloklarının yürütüleceğini kontrol eder.
age = int(input("Yaşınızı girin: "))
if age >= 18:
print("Oy kullanmaya uygunsunuz.")
elif age < 0:
print("Bu geçersiz bir yaş.")
else:
print("Henüz oy kullanmaya uygun değilsiniz.")
Açıklama:
age = int(input("Yaşınızı girin: "))
: Yaş için kullanıcı girdisi alır. int()
girdiyi (varsayılan olarak bir dize) bir tamsayıya dönüştürür.if age >= 18:
: age
değişkeninin 18'e eşit veya büyük olup olmadığını kontrol eder. Doğruysa, girintili print
ifadesi yürütülür.elif age < 0:
: Önceki if
koşulu yanlışsa, bu koşul kontrol edilecektir. Doğruysa, ilgili blok yürütülecektir. elif
, “else if” anlamına gelir ve birden çok koşulun sırayla kontrol edilmesini sağlar.else:
: if
veya elif
koşullarının hiçbiri doğru değilse, else
altındaki girintili kod yürütülür. Girinti Python'da hayati önem taşır; if
, elif
ve else
ile ilişkili kod bloklarını tanımlar. Tutarlı girinti (genellikle 4 boşluk) Python kodunun doğru çalışması için çok önemlidir.for
ile Kodu TekrarlamaDöngüler kod bloklarını tekrarlar. for
döngüsü bir dizi (örneğin, bir liste veya bir sayı aralığı) üzerinde yinelenir.
# 0-4 arasındaki sayıları yazdırma
for i in range(5):
print(i)
# Liste elemanlarını yazdırma
fruits = ["elma", "muz", "kiraz"]
for fruit in fruits:
print(fruit)
Açıklama:
for i in range(5):
: range(5)
0'dan başlayarak 5'e kadar (ancak 5 dahil değil) sayılar üretir. Döngü bu dizi boyunca yinelenir; her yinelemede, geçerli sayı i
değişkenine atanır.for fruit in fruits:
: Bu döngü fruits
listesi boyunca yinelenir. Her yinelemede, geçerli liste öğesi fruit
değişkenine atanır.while
ile Kodu Tekrarlamawhile
döngüsü, bir koşul doğru olduğu sürece devam eder.
count = 0
while count < 5:
print(count)
count += 1 # Sayacı artırma
Açıklama:
count = 0
: count
değişkenini 0 olarak başlatır.while count < 5:
: Döngü, count
5'ten küçük olduğu sürece devam eder.count += 1
: Döngünün içinde, count
her yinelemede 1 artırılır. Bu, bir sonsuz döngüyü (koşulun her zaman doğru kalacağı yer) önler.Fonksiyonlar, kodun yeniden kullanımı, organizasyonu ve okunabilirliği için gereklidir. Aynı kodu birden çok kez tekrarlamak yerine, bir fonksiyonu bir kez tanımlayabilir ve bu belirli işlevselliğe ihtiyaç duyduğunuzda çağırabilirsiniz. def
kullanarak kendi fonksiyonlarınızı tanımlayın.
# Bir fonksiyon tanımlama
def greet(name):
print("Merhaba, " + name + "!")
# Fonksiyonu çağırma
greet("Alice")
greet("Bob")
Önemli noktalar:
def greet(name):
: name
adında bir parametre alan greet
adında bir fonksiyon tanımlar.print("Merhaba, " + name + "!")
: Fonksiyonun gövdesi—fonksiyon çağrıldığında yürütülen kod.greet("Alice")
: greet
fonksiyonunu çağırır ve “Alice” argümanını iletir.Kavramları biraz daha karmaşık bir programda birleştirelim:
def calculate_area(length, width):
"""Bir dikdörtgenin alanını hesaplar.""" # Docstring
area = length * width
return area
# Boyutları al
length = float(input("Uzunluğu girin: "))
width = float(input("Genişliği girin: "))
# Alanı hesapla
rectangle_area = calculate_area(length, width)
# Sonucu yazdır
print("Alan:", rectangle_area)
Açıklama:
def calculate_area(length, width):
: Dikdörtgen alanını hesaplamak için length
ve width
parametrelerini alan bir fonksiyon tanımlar. """..."""
bir docstring'dir ve fonksiyonu açıklar. Docstring'ler dokümantasyon için kullanılır ve help() fonksiyonu ile erişilebilir.return area
: Fonksiyon hesaplanan alanı döndürür. return
ifadesi fonksiyondan çıkar ve değeri fonksiyonun çağrıldığı yere geri gönderir.float()
kullanarak ondalık sayılara dönüştürür. float()
kullanmak ondalık değerlere izin verir ve hesap makinesini daha çok yönlü hale getirir.calculate_area
fonksiyonunu çağırır, boyutları iletir ve döndürülen değeri rectangle_area
değişkeninde saklar.Python, program akışını kontrol etmek için başka araçlar da sağlar.
break
, continue
ve else
break
: En içteki for
veya while
döngüsünden çıkar.continue
: Döngünün sonraki yinelemesine geçer.else
bloğu: for
döngüsünde, döngü bittikten sonra (eğer break
oluşmadıysa) çalıştırılır. while
döngüsünde, koşul yanlış olduktan sonra (eğer break
oluşmadıysa) çalıştırılır.#break için örnek
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number == 3:
break # Sayı 3 olduğunda döngüden çık
print(number) # Çıktı: 1 2
#continue için örnek
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number == 3:
continue # Sayı 3 olduğunda sonraki yinelemeye geç
print(number) # Çıktı: 1 2 4 5
#else için örnek
for i in range(5):
print(i)
else:
print("Döngü tamamlandı") #Çalıştırılacak
for i in range(5):
if i==3:
break
print(i)
else:
print("Döngü tamamlandı") #Çalıştırılmayacak
match
İfadesimatch
bir değeri desenlerle karşılaştırır. Diğer dillerdeki switch ifadelerine benzer, ancak daha güçlü desen eşleştirme özelliğine sahiptir. Bu, Python 3.10'dan itibaren mevcuttur.
def http_error(status):
match status:
case 400:
return "Kötü istek"
case 401 | 403 | 404: # Birden çok durum
return "İzin verilmiyor"
case 418:
return "Ben bir çaydanlığım"
case _: # Varsayılan
return "Bir şeyler ters gitti"
print(http_error(404))
print(http_error(500))
_
bir joker karakterdir ve başka hiçbir durum eşleşmezse herhangi bir şeyle eşleşir.
Python, verileri düzenlemek için yerleşik veri yapılarına sahiptir.
my_list = [1, 2, 3, "elma"]
my_list.append("kiraz") # Sona bir eleman ekle
print(my_list[0]) # İndeks ile elemana eriş (0'dan başlayarak)
my_list.remove(2) # Değere göre bir elemanı kaldır
print(my_list)
my_tuple = (1, 2, 3, "elma")
# my_tuple[0] = 5 # Hata (değiştirilemez) - Demetler oluşturulduktan sonra değiştirilemez
print(my_tuple[1])
my_set = {1, 2, 3, 3, 4, 5} # Yinelenenler otomatik olarak kaldırılır
print(my_set) # Çıktı: {1, 2, 3, 4, 5}
my_dict = {"name": "Alice", "age": 30}
print(my_dict["name"]) # Anahtara göre değere eriş
my_dict["age"] = 31 # Bir değeri değiştir
print(my_dict)
squares = [x**2 for x in range(10)] # Karelerin listesi
even = [x for x in range(20) if x % 2 == 0] # Çift sayılar
print(squares)
print(even)
Modüller, kodu yeniden kullanılabilir dosyalara ayırır. Diğer modüllerdeki işlevlere erişmek için import
kullanın.
import math
print(math.sqrt(16)) # math modülünden sqrt fonksiyonuna erişim
print(math.pi) # pi sabitine erişim
from math import sqrt # Belirli bir fonksiyonu içe aktar
print(sqrt(25))
from math import * # Hepsini içe aktar (genellikle kaçının)
print(pi)
Bu, math
modülünün (matematiksel fonksiyonlar sağlayan) kullanımını gösterir. Belirli fonksiyonları veya sabitleri içe aktarmak, kodun okunabilirliğini artırabilir ve adlandırma çakışmalarını önleyebilir. *
ile her şeyi içe aktarmak, genellikle daha büyük projelerde önerilmez.
Fonksiyonlar, argümanlar için varsayılan değerlere sahip olabilir.
def greet(name, greeting="Merhaba"):
print(greeting + ", " + name + "!")
greet("Bob") # Varsayılan selamlamayı kullanır
greet("Alice", "Selam") # Varsayılanı geçersiz kılar
anahtar kelime=değer
sözdizimini kullanarak fonksiyonları çağırın.
def describe_pet(animal_type, pet_name):
print("Benim " + animal_type + " isminde " + pet_name + " adında bir hayvanım var.")
describe_pet(pet_name="Harry", animal_type="hamster") # Sıra önemli değil
Fonksiyonlar, *args
kullanarak isteğe bağlı sayıda konumsal argüman kabul edebilir.
def make_pizza(*toppings):
print("Şunlarla bir pizza yapılıyor:")
for topping in toppings:
print("- " + topping)
make_pizza("pepperoni")
make_pizza("mantar", "peynir", "biber")
*toppings
, tüm konumsal argümanları toppings
adlı bir demet (tuple) içinde toplar.
Fonksiyonlar, **kwargs
kullanarak isteğe bağlı sayıda anahtar kelime argümanı kabul edebilir.
def build_profile(first, last, **kwargs):
# Bir kullanıcı profili oluşturmak için sabit ve isteğe bağlı anahtar kelime argümanlarını birleştirir.
profile = {'first_name': first, 'last_name': last}
profile.update(kwargs) # Profili kwargs'den gelen anahtar-değer çiftleriyle günceller.
return profile
user = build_profile("Albert", "Einstein", location="Princeton", field="fizik")
print(user) # Çıktı: {'first_name': 'Albert', 'last_name': 'Einstein', 'location': 'Princeton', 'field': 'fizik'}
**kwargs
, “anahtar kelime argümanları” anlamına gelir ve ek adlandırılmış argümanları bir sözlükte toplamak için yaygın bir adlandırma kuralıdır. Bu, fonksiyonların esnek girdileri işlemesine olanak tanır.
lambda
ile oluşturulan küçük, anonim fonksiyonlar.
add = lambda x, y: x + y
print(add(5, 3)) # Çıktı: 8
pairs = [(1, 'bir'), (2, 'iki'), (3, 'üç')]
pairs.sort(key=lambda pair: pair[1]) #demetin ikinci elemanına göre sırala
print(pairs)
Lambda fonksiyonları genellikle yüksek dereceli fonksiyonlara (başka fonksiyonları argüman olarak alan fonksiyonlar) argüman olarak kullanılır, bu örnekteki sort
gibi.
Sınıflar, verileri (öznitelikler) ve bu veriler üzerinde çalışan işlevselliği (metodlar) bir araya getirmenin bir yolunu sağlar. Nesne yönelimli programlamadaki ana özelliklerden biridir ve nesneler için şablonlar oluşturmanıza olanak tanır.
class Dog:
def __init__(self, name, age): #yapıcı
self.name = name
self.age = age
def bark(self):
print("Hav!")
my_dog = Dog("Buddy", 3) #sınıfın örneği
print(my_dog.name)
my_dog.bark()
Açıklama:
class Dog:
: Dog
adında bir sınıf tanımlar.def __init__(self, name, age):
: Bu yapıcı (veya başlatıcı) dır. Yeni bir Dog
nesnesi oluşturduğunuzda otomatik olarak çağrılır.
self
: Sınıfın örneğini (üzerinde çalıştığınız belirli Dog
nesnesi) ifade eder. Bir sınıf içindeki tüm metotlardaki ilk parametredir.def bark(self):
: Bu bir metottur—Dog
sınıfına ait bir fonksiyon. Köpeğin verilerine erişebilir (bu basit örnekte olmasa da self.name
gibi).my_dog = Dog("Buddy", 3)
Dog sınıfının my_dog
adında bir örneğini oluşturur.Yineleyici, belirli bir uygulamadan bağımsız olarak, bir koleksiyonun tüm elemanları arasında gezinmeyi sağlayan bir nesnedir.
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
Üreteçler, listeler veya demetler gibi bir tür yinelenebilirdir. Listelerden farklı olarak, içeriklerini bellekte saklamazlar, yield
anahtar kelimesini kullanarak anında değerler üretirler. Bu, onları büyük diziler için bellek açısından verimli hale getirir. Bu ayrıca, tüm listeyi bellekte oluşturan liste üreteçlerinden farklı kılar.
def my_generator():
yield 1
yield 2
yield 3
for value in my_generator():
print(value)
#üreteç ifadesi
squares = (x*x for x in range(10))
print(list(squares))
Bu temeller, Python yolculuğunuz için sağlam bir temel sağlar. Bu kavramları deneyerek ve birleştirerek, giderek daha karmaşık programlar oluşturabilirsiniz. Herhangi bir programlama dilinde ustalaşmanın anahtarının pratik ve keşif olduğunu unutmayın.