⚠️ Bu içerik, Anadolu Üniversitesi AÖF Bilgisayar Programcılığı programındaki ilgili ders için kendi ders çalışma sürecimde hazırladığım, sınav odaklı kişisel ders notlarımdan oluşmaktadır. Sınava hazırlanan öğrencilere ek bir çalışma kaynağı sunmak amacıyla paylaşılmaktadır.
BAŞLARKEN
Python programlama dili, Guido van Rossum tarafından 1990 yılında tasarlanmaya başlanmıştır. Dil, ismini sanılanın aksine bir yılandan değil; İngiliz komedi grubu Monty Python’ın sergilediği “Monty Python’s Flying Circus” adlı gösteriden almıştır.
Python’un 1.0 sürümü Ocak 1994’te, 2.0 sürümü Ekim 2000’de, 3.0 sürümü ise Aralık 2008’de yayımlanmıştır. Günümüzdeki geliştirme faaliyetleri, 2001 yılında kurulan ve kâr amacı gütmeyen Python Yazılım Vakfı (Python Software Foundation) bünyesinde yürütülmektedir. Python kaynak kodu GNU Genel Kamu Lisansı (GPL) altında dağıtılmaktadır.
Python Özellikleri
- Yorumlanan (Interpreted) Dil: Kodlar ayrı bir derleme (compilation) adımından geçmeden çalışma zamanında satır satır işlenir. Bu çalışma yapısıyla PERL ve PHP gibi script dillerine benzemektedir.
- Satır Bazlı Çalışma: Diğer pek çok dildeki gibi satır sonlarındaki noktalı virgül (
;) işaretlerini dikkate alarak çalışmaz; kodlar satır bazlı derlenerek yürütülür. - Çoklu Programlama Paradigması: Sadece Nesne Yönelimli Programlamayı (OOP) değil, aynı zamanda fonksiyonel ve prosedür tabanlı programlama metotlarını da destekler.
- Platform Bağımsızlık ve Taşınabilirlik: Windows, Linux ve macOS gibi farklı işletim sistemlerinde aynı arabirim ile sorunsuz çalışır (Linux ve macOS’ta çoğunlukla önceden yüklü gelir).
- Otomatik Bellek Yönetimi: Bellek temizliği çöp toplama (Garbage Collector) mekanizması tarafından otomatik olarak yönetilir.
- Dinamik Tip Kontrolü: Yüksek seviyeli dinamik veri tiplerini sağlar; değişken türleri çalışma anında belirlenir.
- Geniş Entegrasyon: Java, C, C++, CORBA, ActiveX ve COM sistemleriyle kolayca entegre edilebilir.
- Ölçeklenebilirlik ve Kapsam: Büyük programlar için ölçeklenebilir bir yapı sunar. Tüm ticari veritabanı uygulamalarını destekler ve taşınabilir GUI (Kullanıcı Arayüzü) oluşturulmasını sağlar.
- Uygulama Alanları: Yapay zeka, makine öğrenmesi, veri analizi, oyun, blockchain ve görüntü işleme gibi geniş bir yelpazede kullanılır.
Programlama Ortamının Kurulması
İşletim sisteminde Python’un kurulu olup olmadığını ve geçerli sürümünü denetlemek için terminal/komut istemine python yazılır. Karşımıza >>> şeklinde bir girdi istemi geliyorsa Python derleyicisi/yorumlayıcısı açılmış demektir. Bu interaktif çalışma ortamına immediate mode adı verilir. yani anında Python kodu yazıp enter tuşuna basarak çalıştırabileceğiniz bir kod editörüdür denilebilir. Python kaynak kodları .py dosya uzantısına sahiptir.
# merhaba_dunya.py dosyasının komut satırından çalıştırılması
print("Merhaba Dünya")
# Ekran Çıktısı:
# Merhaba Dünya
(Komut satırından python merhaba_dunya.py komutuyla yürütülür.)
Unix ve Linux Kurulumu
Linux dağıtımlarının neredeyse tamamında Python önceden kurulu olarak gelir. Ubuntu sistemlerde paket güncelleme ve kurulum komut satırından şu şekilde yapılır:
$ sudo apt-get update
$ sudo apt-get install python3.10.2
Sistemde iki farklı sürüm bulunabileceğinden terminal komutlarına dikkat edilmelidir:
pythonkomutu: Python 2 yorumlayıcısını başlatır.python3komutu: Her zaman Python 3 yorumlayıcısını başlatır.
Windows Kurulumu
Windows işletim sistemlerinde Python kurulu olarak gelmez. Resmi indirme sayfası üzerinden exe uzantılı yükleyici indirilerek kurulur. Varsayılan ayarlarla yükleme yapıldığında Python, %LOCALAPPDATA%\Programs\Python dizinine kurulur. İsteğe bağlı olarak “Customize Installation” seçeneğiyle kurulum dizini özelleştirilebilir.
MacOS Kurulumu
macOS işletim sisteminde terminal, Launchpad içerisindeki Diğer (Other) klasöründe bulunan Terminal ikonuyla açılabilir. Python resmi sitesinden indirilen .pkg uzantılı kurulum paketi çalıştırılarak kurulum tamamlanır.
Kod Yazma Ortamları – Editör
Python kodlarını geliştirmek için IDE (Integrated Development Environment – Tümleşik Geliştirme Ortamı) kullanılır. IDE; kod ipuçları, söz dizimi denetimi, renklendirme ve hata ayıklama özellikleri sunar. Netbeans, Komodo, Wing, Eclipse, Sublime Text, IDLE ve Thonny bu ortamlara örnektir. Ders kaynağında, Python sürümüyle paketlenmiş (bundled) olarak gelmesi ve basit arayüzü nedeniyle Thonny IDE temel alınmıştır. Thonny üzerinde yazılan kodlar F5 tuşu ile çalıştırılır.
🎯 Sınavlık Hap Bilgiler:
- Python yorumlanan bir dildir; derleme adımı yoktur, satır satır çalışır.
- Satır sonlarında noktalı virgül (
;) kullanımı zorunlu değildir.- Çalışma zamanında (runtime) yorumlayıcı tarafından işlenme özelliğiyle PERL ve PHP dillerine benzer.
- Sadece Nesne Yönelimli (OOP) değildir; fonksiyonel ve prosedürel yaklaşımları da barındırır.
- Java, C, C++, CORBA, ActiveX ve COM ile kolay bir şekilde entegre edilebilir.
- Terminalde
>>>şeklinde açılan etkileşimli kabuğa immediate mode denir.- Linux terminalinde
pythonkomutu Python 2’yi,python3komutu ise Python 3 yorumlayıcısını çağırır.- Windows öntanımlı kurulum dizini
%LOCALAPPDATA%\Programs\Pythonşeklindedir.- Bellek yönetimi otomatik çöp toplayıcı (Garbage Collector) ile sağlanır.
TEMEL KAVRAMLAR
Anahtar Kelimeler ve Tanımlayıcılar
Python’da anahtar kelimeler (reserved keywords); dilin söz dizimini ve yapısını tanımlamak için ayrılmış özel sözcüklerdir. Bu kelimeler değişken, fonksiyon, sınıf veya metot ismi olarak asla kullanılamaz.
- Python 3.7 sürümünde 33 adet anahtar kelime bulunmaktadır.
- Anahtar kelimeler büyük/küçük harfe duyarlıdır.
- True, False ve None dışındaki tüm anahtar kelimeler tamamen küçük harflidir.
| False | await | else | import | pass |
| None | break | except | in | raise |
| True | class | finally | is | return |
| and | continue | for | lambda | try |
| as | def | from | nonlocal | while |
| assert | del | global | not | with |
| async | elif | if | or | yield |
📌 Ek Bilgi: Python 3.7 Anahtar Kelime Adetleri Karmaşası.
Ders kitabındaki “Tablo 1.1 Python Programlama Dili Anahtar Kelimeleri” tablosunda 35 adet anahtar kelime sunulmuş fakat yine ders kitabında kelime adeti; “Python 3.7’de 33 anahtar kelime vardır.” cümlesi ile aktarılmıştır. Bu nedenle sorulması durumunda 33 adet olarak cevaplamak doğru olacaktır. Aslen Python 3.6’da 33 anahtar kelime bulunmaktadır. (
asyncveawaitkullanılabilir ancak henüz resmi listeye (kwlist) dahil edilmemiş durumdadır.) Python 3.7 ileasyncveawaitkelimeleri listeye kalıcı olarak eklenmiş ve anahtar kelime adeti 35 olmuştur.
Python Tanımlayıcıları
Sınıf, fonksiyon, değişken veya modüllere verilen adlara tanımlayıcı (identifier) denir.
- Tanımlayıcılar küçük harf (a-z), büyük harf (A-Z), rakam (0-9) ve alt çizgi (
_) kombinasyonlarından oluşabilir. - Bir tanımlayıcı kesinlikle rakamla başlayamaz (
1sayigeçersiz,sayi1geçerlidir). - Tanımlayıcı adında
!,@,#,$,%,-,+,*,/,?,.veya boşluk gibi özel karakterler kullanılamaz; kullanıldığındaSyntaxError: invalid syntaxhatası üretir. - Python 3 sürümünden itibaren Unicode (UTF-8) desteği geldiği için değişken isimlerinde Türkçe karakterler kullanılabilir.
- Tanımlayıcıların karakter uzunluğunda herhangi bir sınır yoktur.
- Anahtar kelimeler tanımlayıcı olarak kullanılamaz. Kullanıldığında kod yorumlanırken geçersiz sözdizimi hatası verecektir.
- Python, büyük ve küçük harflere karşı kesinlikle duyarlı bir dildir. Yani
Sayiilesayiifadeleri bellekte tamamen farklı iki tanımlayıcı olarak değerlendirilir. Ayrıca zorunlu bir kural olmamakla birlikte, kodun okunabilirliği açısındans = 10gibi anlamsız kısaltmalar yerine,sayac = 10gibi açıklayıcı tanımlayıcı isimleri kullanılması tavsiye edilir.
# Anahtar kelimelerin değişken olarak atanması hatası
global = 1
# Ekran Çıktısı:
# SyntaxError: invalid syntax
# Tanımlayıcıda özel karakter kullanımı hatası
a@ = 0
# Ekran Çıktısı:
# SyntaxError: invalid syntax
# BÜYÜK/küçük har duyarlılığı
Sayi = 10
sayi = 20
print(Sayi)
# Ekran Çıktısı:
# 10
# (Sayi ve sayi tamamen farklı iki değişkendir)
Deyimler, Girintileme ve Yorumlar
Python yorumlayıcısının işleyebileceği en küçük yürütülebilir talimat birimine deyim (statement) denir. Örneğin a = 1 bir atama deyimidir.
Çok Satırlı İfade
Python’da, bir ifadenin sonu yeni satır karakteri ile işaretlenir. Ancak satır devam karakteri ters bölü (\) ile birden çok satıra yayılan bir ifade yapılabilir.
# Ters bölü ile satır devamı
toplam = 1 + 2 + 3 + \
4 + 5 + 6
print(toplam)
# Ekran Çıktısı:
# 21
Parantez (), köşeli ayraç [] ve süslü ayraç {} kullanıldığında ters bölü karakterine gerek duyulmadan çok satırlı ifadeler yazılabilir.
a = (1 + 2 + 3 +
4 + 5 + 6 +
7 + 8 + 9)
Ayrıca birden fazla deyim tek satıra aralarına noktalı virgül (;) konularak yazılabilir:
a = 1; b = 2; c = 3
print(a + b + c)
# Ekran Çıktısı:
# 6
Kod Girintileme, Sekmeler
C, C++ ve Java dillerinde bloklar süslü parantez {} ile sınırlandırılırken; Python’da blok yapısı tamamen girinti (indentation) ile oluşturulur.
- Bir kod bloğu girinti ile başlar ve ilk girintisiz satırla sona erer.
- Standart olarak her girinti için dört boşluk veya bir sekme (tab) tuşu kullanılır.
- Hatalı veya tutarsız girintileme yapıldığında yorumlayıcı
IndentationErrorhatası verir.
# Tek satırda yazılmış koşul deyimi
if True: print('Hello'); a = 5
# Ekran Çıktısı:
# Hello
Tek Satırlık Yorumlar
Kod içinde açıklama eklemek için hash (#) sembolü kullanılır. # işaretinden satır sonuna kadar olan metinler Python yorumlayıcısı tarafından tamamen yok sayılır.
# Bu bir yorum/açıklama satırıdır
print('Merhaba')
# Ekran Çıktısı:
# Merhaba
Çok Satırlı Yorumlar
Birden fazla satıra yayılan açıklamalar her satırın başına # getirilerek yapılabileceği gibi, üçlü tek tırnak (''') veya üçlü çift tırnak (""") blokları arasına alınarak da oluşturulabilir. Bu bloklar bir fonksiyonun veya sınıfın ilk satırında yer almadığı müddetçe (dokümantasyon dizesi (Docstring) olmadığı sürece) yürütülebilir kod üretmez.
"""
Bu metin çok satırlı
bir yorum örneğidir.
"""
print("Python")
# Ekran Çıktısı:
# Python
Kod Dokümantasyonu (Docstrings)
Bir fonksiyon, metot, sınıf veya modül tanımının hemen ilk satırında üçlü tırnakla yazılan açıklamalara Docstring (belge dizesi) denir. Bu açıklamalara ilgili nesnenin __doc__ özniteliği üzerinden doğrudan erişilebilir.
def double(num):
"""double değer hesaplayan fonksiyon"""
return 2 * num
print(double.__doc__)
# Ekran Çıktısı:
# double değer hesaplayan fonksiyon
Değişkenler
Değişkenler, bellekte değer depolamak amacıyla ayrılan alanların isimlendirilmiş halleridir. Python’da değişken bildirimi yapılırken tür belirtilmez; atanan değerin türüne göre bellek referansı otomatik bağlanır. Değer ataması için eşittir (=) operatörü kullanılır.
deger = 222 # int türünde
print(type(deger))
deger = "Anadolu" # str türüne dönüştü
print(type(deger))
# Ekran Çıktısı:
# <class 'int'>
# <class 'str'>
Değişken Adlandırma Kuralları
- Kısa (
x) veya açıklayıcı uzun (sayac_toplami) olabilir. - Kesinlikle sayı ile başlayamaz; harf veya alt çizgi (
_) ile başlamalıdır. - Büyük/küçük harf duyarlıdır (
Anadoluileanadoluiki ayrı değişkendir). - İsim içinde matematiksel işlem simgeleri (
+,-,*,/) ve boşluk kullanılamaz.
sayi = 26222
noktali_sayi = 26.22
metin = "Programlama öğreniyorum"
Çoklu Değer Atama
Tek satırda birden fazla değişkene aynı değer atanabilir:
degisken1 = degisken2 = degisken3 = 20
Aynı satırda birden fazla değişkene sıralı olarak farklı değerler de atanabilir:
sayi1, sayi2, metin1 = 56, 11, "Eskişehir"
print(sayi1, sayi2, metin1)
# Ekran Çıktısı:
# 56 11 Eskişehir
Sabitler
Program boyunca değeri değiştirilemeyen yapılara sabit (constant) denir. Python dilinde dil seviyesinde zorunlu kılınan bir sabit mekanizması yoktur. Sabit olduğu belirtilmek istenen değerler, teamül olarak TAMAMI_BÜYÜK_HARFLERLE ve alt çizgi kullanılarak tanımlanır. Genellikle ayrı bir modülde tanımlanarak ana dosyaya import edilir.
# sabit_degerler.py içeriği
YER_CEKIMI = 9.80665
PI = 3.14159
# main.py içeriği
import sabit_degerler
print(sabit_degerler.PI)
# Ekran Çıktısı:
# 3.14159
Veri Tipleri
Python’da tanımlanan her değişken bir nesnedir. Değişkenlerin çalışma zamanındaki veri tipini tespit etmek amacıyla type() fonksiyonu kullanılır.
Python dilinde 5 adet standart veri türü mevcuttur:
- Numbers (Sayılar)
- String (Karakter Dizisi)
- List (Liste)
- Tuple (Demet)
- Dictionary (Sözlük)
sayi = 26
liste =
print(type(sayi))
print(type(liste))
# Ekran Çıktısı:
# <class 'int'>
# <class 'list'>
Numbers (Sayılar)
Sayısal değerleri tutan nesnelerdir.
del İfadesi ile Değişken Referansını Silme: Python’da del anahtar kelimesi, bir veya birden fazla değişkene (nesneye) ait bellek referansını tamamen silmek için kullanılır. Silinecek değişkenler aralarına virgül konularak tek satırda da belirtilebilir:
hiz = 120
mesafe = 450
sure = 4
# Tekli nesne referansını silme
del hiz
# Çoklu nesne referanslarını aynı satırda virgülle ayırarak silme
del mesafe, sure
# Bellekten silinmiş bir değişkeni yazdırmaya (çağırmaya) çalışmak
print(hiz)
# Ekran Çıktısı:
# NameError: name 'hiz' is not defined
''' Ek Bilgi: Dokümantasyon Söz Dizimi (Syntax) Okuma
Ders kitabında geçen "del var1[,var2[....,varN]]]]" gösterimindeki köşeli parantezler "[ ]"
Python listelerini ifade etmez.
Bu, genel yazılım dokümantasyon kurallarına göre isteğe bağlı (opsiyonel)
parametreleri belirtmek için kullanılır.
Yani bu kalıp bize şunu söyler:
"En az bir değişken (var1) belirtmek zorundasın;
ancak istersen aralarına virgül koyarak sınırsız sayıda (varN kadar)
değişkeni de aynı anda silebilirsin." '''
Python tarafından desteklenen dört temel sayısal tür şunlardır:
- int: İşaretli tam sayılar (
26,-925,0x69). - long: Uzun tam sayılar, sekizli ve onaltılı olarak da gösterilebilir;
1rakamıyla karışmaması adına sonuna büyükLharfi konulması önerilir (20344211L, -0x571630, 0xDEFABCECBDAEC). - float: Kayan noktalı gerçel sayılar (
67.34,27.3+e18). - complex: Karmaşık sayılar;
x + yjformatında tanımlanır (jsanal birimdir, örn:3.14j).
💡 EK BİLGİ (Kritik Detay – Python long veri tipi):
İçeriğin hazırlandığı AÖF ders kitabında
longveri tipi ve sayının sonuna konulanLharfi anlatılmıştır. Aslında bu Python 2‘ye ait eski bir kuraldır. Python 3’telongtipi tamamen kaldırılmış ve normalinttipi sınırsız büyüklükte sayılar alabilecek şekilde güncellenmiştir (artık sonuna L koyulmaz). Python 3 ortamında sayının sonunaLkoyulursa kod hata (SyntaxError) verecektir. Ancak sınavda kitaptaki müfredat geçerli olduğu için güncel AÖF kaynağınızdan long tipinin ve L takısının nasıl aktarıldığını kesinlikle kontrol etmeniz gerekmektedir.
String (Metin Dizisi)
Tırnak işaretleri (tek veya çift) içerisine yazılan karakter dizileridir. İndeksleme baştan 0, sondan ise -1 değeriyle başlar. Dilimleme operatörü [ ] ve [:] ile belirli aralıklar çekilebilir. Metin dizilerinde artı (+) birleştirme, yıldız (*) tekrarlama operatörü olarak çalışır.
⚠️ String veri tipi hafızada değiştirilemez (immutable) bir yapıya sahiptir; tanımlandıktan sonra dizi üzerinde eleman ekleme, silme veya değiştirme yapılamaz.
metin = 'Merhaba Dünya!' # Örnek Karakter Dizisini tanımlar.
print(metin) # Karakter dizisinin tamamını yazar.
print(metin[0]) # Karakter dizisinin 0. (ilk) karakterini yazar.
print(metin[-1]) # Karakter dizisinin sonuncu karakterini yazar.
print(metin[2:5]) # Karakter dizisinin 2., 3. ve 4. indekslerindeki karakterlerini yazar.
print(metin * 2) # Karakter dizisinin tamamını 2 kez yazar.
print(metin + " " + "TamWeblik.") # Karakter dizisinin sonuna bir boşluk ve "TamWeblik." karakter dizisini ekleyerek yazar.
# Ekran Çıktısı:
# Merhaba Dünya!
# M
# !
# rha
# Merhaba Dünya!Merhaba Dünya!
# Merhaba Dünya! TamWeblik.
List (Liste)
Köşeli ayraç [] içine virgülle ayrılarak yazılan sıralı öğeler dizisidir. Farklı veri türlerini bir arada barındırabilir. Değiştirilebilir (mutable) bir tiptir; çalışma zamanında eleman ekleme, çıkarma ve güncellemeye olanak tanır.
asallar = [2, 3, 5, 7, 11, 13, 17, 19]
print(asallar)
print(asallar[0:3])
# Ekran Çıktısı:
# [2, 3, 5, 7, 11, 13, 17, 19]
# [2, 3, 5]
Tuple (Demet)
Normal parantez () içinde tanımlanan sıralı öğeler dizisidir. Listelerden en temel farkı değiştirilemez (immutable) olmasıdır. Bir kez tanımlandıktan sonra elemanları değiştirilemez, eklenemez veya silinemez. Dinamik olarak değiştirilemediklerinden dolayı listelere kıyasla daha hızlı çalışırlar ve veriyi yazmaya karşı korurlar.
demet = (20.26, 'Anadolu', 26+4j)
print(demet[1])
demet[0] = "Eskişehir"
# Ekran Çıktısı:
# Anadolu
# TypeError: 'tuple' object does not support item assignment
Dictionary (Sözlük)
Süslü parantez {} içinde tanımlanan anahtar:değer (key:value) çiftlerinden oluşan sırasız bir veri tipidir. Değiştirilebilir (mutable) yapıdadır. Değer (value) kısmı her türlü veri tipini alabilirken; anahtar (key) kısmı yalnızca int ve str gibi değişmez türlerden oluşabilir. Olmayan bir anahtara erişilmeye çalışıldığında yorumlayıcı KeyError hatası verir.
sozluk = {'key1':'valueOfKey1', 'key2':'valueOfKey2', 3:3.1}
print(type(sozluk))
print(sozluk)
print(sozluk['key1'])
print(sozluk['key2'])
print(sozluk[3])
print(sozluk[0])
# Ekran Çıktısı:
# <class 'dict'>
# {'key1': 'valueOfKey1', 'key2': 'valueOfKey2', 3: 3.1}
# valueOfKey1
# valueOfKey2
# 3.1
# KeyError: 0
# NOT: Hatanın nedeni, sözlük değişkeninde anahtar değeri “0” olan bir atama bulunmamasıdır.
Tür Dönüşümü
Farklı türdeki verilerin birbirlerine çevrilmesidir. int(), float(), str() gibi dahili fonksiyonlar kullanılır. İki şekilde gerçekleşir: Örtülü (Implicit) ve Açık (Explicit).
Örtülü Tür Dönüşümü (Implicit)
Python yorumlayıcısının kullanıcı müdahalesi olmadan veri türünü otomatik olarak dönüştürmesidir. Veri kaybını engellemek amacıyla Python, küçük veri tipini (örneğin int) otomatik olarak daha büyük veri tipine (örneğin float) genişletir.
sayi_int = 123
sayi_flo = 1.23
toplam = sayi_int + sayi_flo
print(toplam)
print(type(toplam))
# Ekran Çıktısı:
# 124.23
# <class 'float'>
⚠️ Ek Bilgi: Python,
intilestrveri tipleri arasında örtülü tür dönüşümü yapamaz. İki tür toplanmaya çalışıldığında doğrudan hata oluşur.
a = 123
b = "456"
print(a + b)
# Ekran Çıktısı:
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
Açık Tür Dönüşüm (Explicit)
Kullanıcının önceden tanımlanmış fonksiyonları (int(), float(), str() vb.) doğrudan kod içerisinde kullanarak yaptığı dönüşümdür.
sayi_int = 321
sayi_str = "987"
sayi_str = int(sayi_str)
print(sayi_int + sayi_str)
# Ekran Çıktısı:
# 1308
| Tür Dönüşüm Fonksiyonu | Tanımı | Kullanım Örneği ➔ Çıktı |
|---|---|---|
int(x [,base]) | x değerini bir tam sayıya dönüştürür. “base” kısmı isteğe bağlı olarak, taban dönüşümü için kullanılan bir parametredir. base parametresi 2 olarak kullanıldığında, 2 tabındaki sayının 10’luk tabanındaki karşılığı bulunur. | int("1010", 2) ➔ 10 |
chr(x) | Bir sayıyı karaktere dönüştürür. | chr(65) ➔ 'A' |
str(x) | x değerini string değere dönüştürür. | str(26.5) ➔ '26.5' |
repr(x) | x değerini bir ifade string’e dönüştürür. | repr("A\nB") ➔ "'A\\nB'" |
eval(str) | Bir string’i değerlendirir ve bir nesne döndürür. | eval("5 + 3") ➔ 8 |
complex(real [,imag]) | Kompleks bir sayı üretir. | complex(2, 3) ➔ (2+3j) |
float(x) | x değerini float bir sayıya dönüştürür. | float(26) ➔ 26.0 |
list(x) | x değerini list’e dönüştürür. | list("AÖF") ➔ ['A', 'Ö', 'F'] |
dict(d) | d (key, value) ilişkisi barındıran veriden bir sözlük oluşturur. | dict([(1, 'A'), (2, 'B')]) ➔ {1: 'A', 2: 'B'} |
tuple(x) | x değerini tuple’ye dönüştürür. | tuple([1, 2, 3]) ➔ (1, 2, 3) |
set(x) | x değerini bir set’e dönüştürür. | set([1, 1, 2, 2]) ➔ {1, 2} |
frozenset(x) | x değerini bir frozen set’e dönüştürür. | frozenset([1, 2]) ➔ frozenset({1, 2}) |
unichr(x) | x sayısını unicode karakterine çevirir. | unichr(287) ➔ u'ğ' (Sadece Py 2) |
ord(x) | Verilen bir karakterin unicode sayısal değerini döndürür. | ord('A') ➔ 65 |
hex(x) | Bir sayının onaltılı düzendeki (hexadecimal) karşılığına (string) çevirir. | hex(26) ➔ '0x1a' |
oct(x) | Bir sayıyı sekizli düzendeki (oktal) karşılığına (string) çevirir. | oct(26) ➔ '0o32' |
💡 Söz Dizimi (Syntax) İpucu: Tablodaki
int(x [,base])vecomplex(real [,imag])gösterimlerinde yer alan köşeli parantezler[ ]Python koduna yazılmaz. Yazılım dokümantasyonunda[ ]sembolü, o parametrenin girilmesinin isteğe bağlı (opsiyonel) olduğunu ifade eder (Örn:int("1010", 2)).💡 Python Sürümü Farkı (
unichr): Tabloda yer alanunichr(x)fonksiyonu aslında Python 2’ye ait eski bir yapıdır. Python 3 sürümünde standartchr()fonksiyonu zaten Unicode desteklediği içinunichr()tamamen dilden kaldırılmıştır ve kullanılırsaNameErrorhatası verir. Ancak AÖF sınavlarında kitaptaki müfredat geçerli olduğundan, konuyu güncel kaynağınızdan kontrol etmeniz önemlidir.
🎯 Sınavlık Hap Bilgiler:
- Python anahtar kelimelerinden sadece True, False ve None büyük harfle başlar.
- Değişken isimleri rakamla başlayamaz ve
!,@,#,$,%gibi özel karakterler barındıramaz.- Kod blokları süslü parantez
{}ile değil, girinti ile başlar ve ilk girintisiz satırla biter. Girinti hatalarıIndentationErrorüretir.- String ve Tuple tipleri değiştirilemez (immutable); List ve Dictionary değiştirilebilir (mutable) yapıdadır.
- Python’da sabit mekanizması yoktur; sabitler büyük harfle yazılır.
- Olmayan bir sözlük anahtarı çağrıldığında
KeyErrorfırlatılır.intilestrtoplanırken örtülü tür dönüşümü gerçekleşmez,TypeErrorfırlatılır.
GİRİŞ/ÇIKIŞ (I/O) VE İÇE AKTARMA (IMPORT)
Çıkış İşlemleri
Standart çıktı aygıtına (ekrana) veri yazdırmak için yerleşik print() fonksiyonu kullanılır. Print metodunun parametreleri de şu şekildedir:
print(*nesneler, sep=' ', end='\n', file=sys.stdout, flush=False)
sep(Separator): Yazdırılan birden fazla nesne arasına konulacak karakterdir; varsayılan değeri bir adet boşluktur (' ').end: Tüm nesneler yazdırıldıktan sonra satırın sonuna eklenecek karakterdir; varsayılan değeri alt satıra geçme karakteridir ('\n').file: Çıktının yönlendirileceği yerdir; varsayılan olaraksys.stdout(ekran) kullanılır.flush:Truegirildiğinde arabelleğin zorla boşaltılıp verinin anında hedefe iletilmesini sağlar. Varsayılan değeriFalse.
print(1, 2, 3, 4, sep='*')
print(1, 2, 3, 4, sep='|', end='&')
# Ekran Çıktısı:
# 1*2*3*4
# 1|2|3|4&
Çıktı Formatlama
Metin çıktısını biçimlendirmek için str.format() metodu veya % operatörü kullanılır.
Küme parantezleri {} yer tutucu olarak işlev görür. İndeks numaraları verilerek değerlerin sırası değiştirilebilir:
print('{1} ve {0} dersleri'.format('Java', 'Python'))
print('{0} ve {1} dersleri'.format('Java', 'Python'))
# Ekran Çıktısı:
# Python ve Java dersleri
# Java ve Python dersleri
Biçimlendirmede % operatörü kullanılırken kayan noktalı sayılarda virgülden sonra gösterilecek basamak sayısı %.nf kalıbıyla belirlenir ve sayı yuvarlanır:
%a.nfkalıbı için:%: Biçimlendirme operatörüdür.a: Sayının (eksi işareti, tam kısım, nokta ve ondalık kısım dahil) ekranda kaplayacağı minimum toplam karakter sayısıdır. Eğer sayının kendi uzunluğu “a” değerinden kısa kalırsa, eksik kalan kısmı doldurmak için sayının başına (soluna) boşluklar eklenir. (Ancak sayının kendi uzunluğu “a”dan büyükse sayı kırpılmaz, kural esnetilip tamamı yazılır)..n: Noktadan sonra yazdırılacak ondalık basamak sayısıdır. Kritik Detay: Python bu işlemi yaparken sadece kesip atmaz, aynı zamanda matematiksel yuvarlama (rounding) yapar.f: Verinin ondalıklı sayı (float) olduğunu belirten tip sembolüdür.
x = 123.456789
# n = 4 (a değerinin yarattığı değişimi gözlemek için hepsinde aynı alınmıştır)
# a = 0. Genişlik istenmemiş. Sayı 8 karakter olduğu için direkt yazılır.
print('x değeri: %0.4f' % x)
# Çıktı: x değeri: 123.4568
# a = 10. Sayı 8 karakter. Toplamı 10'a tamamlamak için başa 2 boşluk eklenir.
print('x değeri: %10.4f' % x)
# Çıktı: x değeri: 123.4568
# a = 20. Sayı 8 karakter. Toplamı 20'ye tamamlamak için başa 12 boşluk eklenir.
print('x değeri: %20.4f' % x)
# Çıktı: x değeri: 123.4568
Giriş İşlemleri
Kullanıcıdan çalışma anında veri almak için input() metodu kullanılır.
input([mesaj])
⚠️ EK BİLGİ:
input()fonksiyonu kullanıcı ne tür veri girerse girsin (sayı dahi girilse) veriyi bellekte daimastr(karakter dizisi) tipinde saklar. Sayısal işlem yapılacaksa mutlakaint()veyafloat()ile açık tür dönüşümü yapılmalıdır.
veri = input('Bir sayı giriniz: ') # Kullanıcı 123 girdi varsayalım
print(type(veri))
veri = int(veri)
print(type(veri))
print('girilen sayı: {}'.format(veri))
# Ekran Çıktısı:
# <class 'str'>
# <class 'int'>
# girilen sayı: 123
İçe Aktarma (Import)
Büyüyen projelerde kodların yönetilebilir parçalara bölünmesiyle modüller oluşturulur. Modüller .py uzantılı Python dosyalarıdır. Bir modüldeki tanımlamaları çalıştığımız dosyaya dahil etmek için import anahtar sözcüğü kullanılır.
Modülün tamamı içe aktarılırsa fonksiyon ve değişkenlere modul_adi.oge şeklinde erişilir:
import math
print(math.pi)
# Ekran Çıktısı:
# 3.141592653589793
Modül içinden yalnızca belirli bir öge alınmak istendiğinde from kalıbı kullanılır ve modül öneki yazılmadan doğrudan öge adı kullanılır:
from math import pi
print(pi)
# Ekran Çıktısı:
# 3.141592653589793
🎯 Sınavlık Hap Bilgiler:
input()ile okunan tüm girdiler daima<class 'str'>tipindedir.print()fonksiyonunda varsayılan ayırıcısep=' '(boşluk), varsayılan satır sonlandırıcıend='\n'dir.print()içerisindeend=''kullanılırsa alt satıra geçiş engellenir.- Modül dosyalarının uzantısı
.pyolmak zorundadır.from modul import ogeşeklinde yapılan içe aktarmalarda çağrı sırasında modül ismi kullanılmaz.
OPERATÖRLER
Operatörler, değişkenler ve değerler üzerinde hesaplama veya mantıksal sınama gerçekleştiren özel sembollerdir. Operatörün işlem uyguladığı değerlere işlenen (operand) adı verilir. Örneğin 22 + 5 ifadesinde + operatör, 22 ve 5 işlenenlerdir.
Aritmetik Operatörler
| Operatör | Anlamı | Örnek | Sonuç Türü / Not |
|---|---|---|---|
+ | Toplama | x + y | Sayısal toplam |
- | Çıkarma | x - y | Sayısal fark |
* | Çarpma | x * y | Sayısal çarpım |
/ | Bölme | x / y | Her zaman float sonuç döndürür! |
% | Mod alma (kalan) | x % y | x’in y’ye bölümünden kalan tam sayı |
// | Kat bölümü (taban bölme) | x // y | Bölümün tam sayı kısmı |
** | Üs alma | x ** y | x üzeri y |
x = 14
y = 4
print('Bölme:', x / y)
print('Kat Bölümü:', x // y)
print('Mod:', x % y)
# Ekran Çıktısı:
# Bölme: 3.5
# Kat Bölümü: 3
# Mod: 2
Karşılaştırma Operatörleri
İki değeri karşılaştırır ve durumun doğruluğuna göre mantıksal True veya False değeri döndürür.
| Operatör | Anlamı | Örnek |
|---|---|---|
> | Büyüktür | x > y |
< | Küçüktür | x < y |
== | Eşittir | x == y |
!= | Eşit değildir | x != y |
>= | Büyük veya eşittir | x >= y |
<= | Küçük veya eşittir | x <= y |
x = 34
y = 26
print(x == y)
print(x != y)
# Ekran Çıktısı:
# False
# True
Mantıksal Operatörler
Koşulları birleştirmek veya tersini almak için kullanılır.
| Operatör | Mantıksal Karşılığı | Kural |
|---|---|---|
and | VE | Her iki işlenen de doğruysa True, aksi halde False döner. |
or | VEYA | İşlenenlerden en az biri doğruysa True döner. |
not | DEĞİL | İşlenenin mantıksal tersini alır (True -> False, False -> True). |
x = True
y = False
print(x and y)
print(x or y)
print(not x)
# Ekran Çıktısı:
# False
# True
# False
Bitsel (Bitwise) Operatörler
Verilerin ikilik tabandaki (bit düzeyinde: 0 ve 1) değerleri üzerinde doğrudan işlem yapar.
Tablodaki a ve b değerleri: a = 60 (8-bit binary 0011 1100), b = 13 (8-bit binary 0000 1101).
# Bitsel Operatörler Tablosu Örnekleri
# a = 60 -> 0011 1100
# b = 13 -> 0000 1101
# ---------
# a & b (AND) 0000 1100 -> 12
# a | b (OR) 0011 1101 -> 61
# a ^ b (XOR) 0011 0001 -> 49
# ~a (NOT) -011 1101 -> -61
# b << 3 (sola) 0110 1000 -> 104
# a >> 2 (sağa) 0000 1111 -> 15
| Operatör | Adı | Açıklaması | Örnek |
|---|---|---|---|
& | AND | Her iki bitte de 1 varsa sonuç 1 olur. | a & b ➔ 12 (00001100) |
| | OR | Bitlerden en az biri 1 ise sonuç 1 olur. | a | b ➔ 61 (00111101) |
^ | XOR | Bitler birbirinden farklıysa 1, aynıysa 0 döner. | a ^ b ➔ 49 (00110001) |
~ | Tersini Alma (NOT) | Bitleri tersine çevirir. | ~a ➔ -61 (-(a+1)) |
<< | Sola Kaydırma | Bitleri belirtilen sayı kadar sola kaydırır. | b << 3 ➔ 104 (b*2**3) |
>> | Sağa Kaydırma | Bitleri belirtilen sayı kadar sağa kaydırır. | a >> 2 ➔ 15 (a//2**2) |
Atama Operatörleri
Değişkenlere ilk değer atamak veya var olan değeri matematiksel işleme tabi tutarak güncellemek için kullanılır.
| Operatör | Kullanım | Eşdeğeri |
|---|---|---|
= | x = 5 | x = 5 |
+= | x += 5 | x = x + 5 |
-= | x -= 5 | x = x - 5 |
*= | x *= 5 | x = x * 5 |
/= | x /= 5 | x = x / 5 |
%= | x %= 5 | x = x % 5 |
//= | x //= 5 | x = x // 5 |
**= | x **= 5 | x = x ** 5 |
&= | x &= 5 | x = x & 5 |
\|= | `x | | |
^= | x ^= 5 | x = x ^ 5 |
>>= | x >>= 5 | x = x >> 5 |
<<= | x <<= 5 | x = x << 5 |
⚠️ Tablo Notu: Tablodaki = sembolü matematikteki ‘eşittir’ anlamına gelmez, ‘atama (içine yazma)’ sembolüdür. x = x + 5 ifadesi matematiksel bir denklem değildir; ‘x’in mevcut değerine 5 ekle ve çıkan yeni sonucu tekrar x’in içine kaydet’ demektir. Programlamada = (atama) işlemi daima SAĞDAN SOLA çalışır. Atama operatörünün sağ tarafı hesaplanır ve çıkan sonuç sol taraftaki değişkenin içine (bir kutuya koyar gibi) yerleştirilir.
Özel Operatörler
Python, nesnelerin bellek kimliklerini veya koleksiyon üyeliklerini denetlemek üzere özel operatörler barındırır.
Kimlik Operatörleri
is ve is not kimlik operatörleridir. İki değişkenin değerlerinin eşitliğini değil, bellekte aynı bellek adresini (aynı nesneyi) işaret edip etmediğini kontrol eder.
==operatörü değer eşitliğini denetler.isoperatörü bellek referansı (kimlik) aynılığını denetler.
x1 = 25
y1 = 25
x2 = 'Merhaba'
y2 = "Merhaba"
x3 = [10,20,30]
y3 = [10,20,30]
print(x1 is not y1)
print(x2 is y2)
print(x3 is y3)
# Ekran Çıktısı:
# False
# True
# False
(x ve y listeleri aynı elemanlara sahip olsalar bile, listeler değiştirilebilir olduğundan (mutable) bellekte ayrı konumlarda oluşturulurlar ve bu nedenle de is karşılaştırması False verir.)
💡 İleri Seviye Bilgi:
intvestriçinisKullanım Tuzağı: Python’daintvestrdeğerlerini karşılaştırırkenis(kimlik) operatörüne güvenmek tehlikelidir. Python, performans ve bellek optimizasyonları kapsamında küçük tam sayıları (-5 ile 256 arası, CPython uygulamasında) önbelleğe alır. Ayrıca bazı metinleri string interning yöntemiyle ortaklaştırabilir. Bu durumlarda, değerleri aynı olan değişkenler aynı nesneyi gösterebilir veisoperatörüTruedöndürebilir. Ancak önbellek veya ortaklaştırma kapsamı dışındaki değerlerde, içerikleri aynı olsa bile farklı nesneler oluşabilir ve sonuçFalseçıkabilir. Üstelik derleyici optimizasyonları nedeniyle bu davranış her zaman kesin olarak tahmin edilemez. Bu belirsizlikten kaçınmak için, değerlerin eşitliğini kontrol ederken her zaman==operatörü kullanılmalıdır.
Üyelik Operatörleri
in ve not in operatörleridir. Bir değerin dizi veya koleksiyon (str, list, tuple, set, dict) içinde yer alıp almadığını kontrol eder.
⚠️ Dikkat: Sözlük (
dict) veri yapısındainoperatörü yalnızca anahtar (key) kontrolü yapar; değerleri (values) kontrol etmez.
x = 'Python öğreniyorum'
y = {1: 'O', 2: 'N', 3: 'A'}
print('p' in x) # Küçük harf 'p' olmadığı için False (Büyük/küçük harf duyarlı)
print(1 in y) # 1 bir anahtardır (Key) -> True
print('A' in y) # 'A' değerdir (Value), anahtar değildir -> False!
# Ekran Çıktısı:
# False
# True
# False
🎯 Sınavlık Hap Bilgiler:
- Standart bölme operatörü (
/) her zaman float sonuç üretir; tam bölme için//kullanılır.==değeri kontrol eder,isise nesnenin bellekteki fiziksel referansını kontrol eder. İki ayrı liste aynı değerlere sahip olsa bilex is ysonucu False olur.- Sözlüklerde
inoperatörü sadece anahtarları (keys) sorgular; değerleri sorgulamaz.- String veri tipi büyük/küçük harfe duyarlı olduğu için
'p' in 'Python'ifadesi False üretir.~bitsel tersini alma formülü:~x = -(x + 1)dir (Örn:~60sonucu-61olur).
🎯 Sınavlarda Sorulma Olasılığı Yüksek Hap Bilgiler❗ (Genel Ünite Tekrarı)
- Değişken İsimlendirme Sınırları: Değişken ve tanımlayıcı isimleri kesinlikle rakamla başlayamaz (örneğin
1sayigeçersiz,sayi1geçerlidir); adlandırmada!,@,#,$,%gibi özel simgeler ve boşluk kullanılamaz.- Yorum Satırı Belirteci: Python’da tek satırlık yorumlar # (hash) karakteri ile başlatılır ve yorumlayıcı tarafından çalıştırılmaz.
- Çok Satırlı Deyim Devamı: Uzun bir kod satırını alt satırda devam ettirmek için kullanılan satır devam sembolü ** (ters eğik çizgi / backslash)** karakteridir.
- Kullanıcı Veri Girişi: Konsoldan çalışma anında girdi almak için input() kullanılır; bu metot girilen veriyi sayı dahi olsa her zaman str tipinde saklar.
- Üs Alma Operatörü: Python’da üslü hesaplama matematiksel çarpma simgesi olan
*yerine çift yıldız ** operatörü ile gerçekleştirilir.- Değişken Değer Ataması: Değişkenlere değer bağlama işlemi diğer bazı dillerdeki ok (
←) veya walrus (:=) yerine doğrudan temel atama operatörü olan = simgesiyle yapılır.- Anahtar-Değer Eşleşmeli Veri Yapısı: İki noktalı
anahtar: değer(key: value) çiftleri barındıran ve süslü parantez{ }kullanılarak tanımlanan standart veri tipi Dictionary (Sözlük) yapısıdır.- Ondalıklı Sayı Türü: Python sayısal veri türleri arasında ondalıklı (kayan noktalı) sayıları temsil eden sınıf float olarak adlandırılır.
- Modül Dosya Formatı: Python yorumlayıcısının çalıştırabildiği ve modül olarak içe aktarılabilen kaynak kod dosyalarının uzantısı daima .py biçimindedir.
- Modül Dahil Etme: Harici modülleri ve kütüphaneleri mevcut çalışma dosyasına bağlamak için ayrılmış temel anahtar kelime import ifadesidir.
- Değişebilirlik (Mutability) Ayrımı: Python temel koleksiyonlarından List (liste) sonradan değiştirilebilir (mutable) iken; Tuple (demet) ve String elemanları sonradan değiştirilemez (immutable) özelliktedir.
📚 Kaynakça ve Kaynak Güncelliği: Bu ders notu, Anadolu Üniversitesi Açıköğretim Fakültesi Yayınları’na ait Programlama II ders kitabının Mayıs 2022 Baskısı, (AÖF Yayın No: 3049, E-ISBN: 978-975-06-4315-6) temel alınarak kendi ifadelerimle hazırlanmıştır. Konu bütünlüğünü korumak amacıyla temel kavram ve tanımların anlamı ana kaynağa bağlı kalınarak aktarılmış olup, içerik sınav odaklı kişisel ders notları biçiminde düzenlenmiştir. Bu notlar belirtilen baskıyı esas almakta olup kitabın daha sonraki baskılarını, Anadolum e-Kampüs üzerinden yapılan güncellemeleri veya müfredat değişikliklerini yansıtmayabilir. Sınava hazırlanırken Anadolu Üniversitesi tarafından sunulan güncel ders materyalini kontrol etmeniz önerilir. Kitabın basılı sürümüne Anadolu Üniversitesi Kitap Satış Sistemi, güncel dijital ders materyallerine ise Anadolum e-Kampüs üzerinden ulaşabilirsiniz. Ayrıca bu içerik, Anadolu Üniversitesi tarafından hazırlanmış veya onaylanmış resmî bir ders materyali değildir; kişisel çalışma notları niteliğindedir.





