21 Mart 2025

Python Temelleri: Yeni Başlayanlar İçin Kodlama Rehberi

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.

İlk Python Programınız: “Merhaba Dünya!”

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:

  1. 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.
  2. ("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.

Python'da Değişkenler

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:

  1. message = "Python'a Hoş Geldiniz!": message adında bir değişken oluşturulur ve “Python'a Hoş Geldiniz!” dizesi depolanır.
  2. number = 10: number adında bir değişken 10 tamsayısını depolar.
  3. 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.

Python'da Kullanıcı Etkileşimi

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:

  1. 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.
  2. 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.

Koşullu Mantık: 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Döngüler: for ile Kodu Tekrarlama

Dö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:

  1. 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.
  2. for fruit in fruits:: Bu döngü fruits listesi boyunca yinelenir. Her yinelemede, geçerli liste öğesi fruit değişkenine atanır.

Döngüler: while ile Kodu Tekrarlama

while 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:

  1. count = 0: count değişkenini 0 olarak başlatır.
  2. while count < 5:: Döngü, count 5'ten küçük olduğu sürece devam eder.
  3. 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: Yeniden Kullanılabilir Kod Blokları

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:

  1. def greet(name):: name adında bir parametre alan greet adında bir fonksiyon tanımlar.
  2. print("Merhaba, " + name + "!"): Fonksiyonun gövdesi—fonksiyon çağrıldığında yürütülen kod.
  3. greet("Alice"): greet fonksiyonunu çağırır ve “Alice” argümanını iletir.

Kavramları Birleştirme: Basit Bir Alan Hesaplayıcı

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:

  1. 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.
  2. return area: Fonksiyon hesaplanan alanı döndürür. return ifadesi fonksiyondan çıkar ve değeri fonksiyonun çağrıldığı yere geri gönderir.
  3. Program, uzunluk ve genişlik için kullanıcı girdisi alır ve bunları 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.
  4. calculate_area fonksiyonunu çağırır, boyutları iletir ve döndürülen değeri rectangle_area değişkeninde saklar.
  5. Son olarak, alanı yazdırır.

Daha Fazla Kontrol Akışı Aracı

Python, program akışını kontrol etmek için başka araçlar da sağlar.

Döngülerde 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.
  • Döngü 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 İfadesi

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

Veri Yapıları

Python, verileri düzenlemek için yerleşik veri yapılarına sahiptir.

  • Listeler: Sıralı, değiştirilebilir (değiştirilebilir) diziler.
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)
  • Demetler (Tuple): Sıralı, değiştirilemez diziler.
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])
  • Kümeler (Set): Benzersiz elemanların sırasız koleksiyonları.
my_set = {1, 2, 3, 3, 4, 5}  # Yinelenenler otomatik olarak kaldırılır
print(my_set)  # Çıktı: {1, 2, 3, 4, 5}
  • Sözlükler (Dictionary): Anahtar-değer çiftleri. Anahtarlar değiştirilemez olmalıdır (dizeler, sayılar veya demetler gibi).
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)
  • Liste Üreteçleri (List Comprehension): Listeler oluşturmak için özlü sözdizimi.
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

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ı Tanımlama: İleri Teknikler

Varsayılan Argüman Değerleri

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 Argümanları

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

İsteğe Bağlı Argüman Listeleri

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.

İsteğe Bağlı Anahtar Kelime Argümanları

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 İfadeleri

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

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.

Yineleyiciler (Iterators)

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 (Generators)

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

İlgili Haberler

İlgili makaleler