9 - Modüller ve Paketler
2024
from math import pi
print(pi) # Çıktı: 3.141592653589793
from math import sqrt
print(sqrt(25)) # Çıktı: 5.0
Soru
Sizce bu kullanım şeklinin nasıl bir avantajı olabilir?
math
Modülü: Matematiksel İşlemlerrandom
Modülü: Rastgele Sayı Üretimirandom.choice(dizi)
: Verilen diziden (liste, demet, string vb.) rastgele bir eleman seçer.random.shuffle(dizi)
: Verilen diziyi (liste) yerinde rastgele karıştırır.random
modülündeki seed()
fonksiyonuseed()
fonksiyonu, rastgele sayı üretecini başlatmak için kullanılır.seed()
fonksiyonuna bir değer verilmezse, rastgele sayı üreteci işletim sisteminden aldığı rastgele bir değerle başlatılır.import random
liste = ["Ali", "Veli", 49, "Ahmet", 57, 9, True]
random.seed(10) # seed değerini 10 olarak ayarlar.
print(random.choice(liste)) # Ali
random.seed(10) # seed değerini tekrar 10 olarak ayarlar.
print(random.choice(liste)) # Ali
random.seed(20)
print(random.choice(liste)) # 9
random.seed(25)
print(random.choice(liste)) # Ahmet
datetime
Modülü: Tarih ve Saat İşlemleriimport datetime
bugun = datetime.date.today()
print(bugun) # Çıktı: 2024-04-03 (Bugünün tarihi)
su_an = datetime.datetime.now()
print(su_an) # Çıktı: 2024-04-03 18:15:30.123456 (Şu anki tarih ve saat)
dogum_gunu = datetime.date(1990, 1, 1)
print(dogum_gunu) # Çıktı: 1990-01-01
# Tarih formatlama
tarih_str = bugun.strftime("%d/%m/%Y") # 03/04/2024
print(tarih_str)
zaman_str = su_an.strftime("%H:%M:%S") # 18:15:30
print(zaman_str)
os
Modülü: İşletim Sistemi İşlemleriimport os
print(os.getcwd()) # Çıktı: /home/kullanici/proje (Geçerli çalışma dizini)
os.chdir("/home/kullanici/Belgeler") # Geçerli dizini değiştirir.
print(os.getcwd()) # Çıktı: /home/kullanici/Belgeler
print(os.listdir(".")) # Çıktı: ['dosya1.txt', 'dosya2.txt', 'dizin1'] (Geçerli dizindeki dosya ve dizinler)
os.mkdir("yeni_dizin") # yeni_dizin adında bir dizin oluşturur
os.rename("eski.txt", "yeni.txt") # Dosya adını değiştirir
print(os.path.exists("dosya.txt")) # Çıktı: True (Dosya varsa) / False
print(os.path.isfile("dosya.txt")) # Çıktı: True (Dosya ise) / False
print(os.path.isdir("dizin")) # Çıktı: True (Dizin ise) / False
print(os.path.getsize("dosya.txt")) # Çıktı: 1024 (Dosya boyutu, bayt cinsinden)
os
modülü, ortam değişkenlerine erişmek için de kullanılabilir.os.environ
: Ortam değişkenlerini içeren bir sözlük.os.getenv(isim, varsayılan_değer)
: Belirtilen isimdeki ortam değişkeninin değerini döndürür. Değişken yoksa, varsayılan_değer
’i döndürür.import os
# Tüm ortam değişkenlerini yazdır
print(os.environ)
# USER ortam değişkeninin değerini al
kullanici_adi = os.getenv("USER") # Linux/macOS için
#kullanici_adi = os.getenv("USERNAME") # Windows için
print(f"Kullanıcı adı: {kullanici_adi}")
# TEMP ortam değişkeninin değerini al, yoksa varsayılan değeri kullan
temp_dizin = os.getenv("TEMP", "/tmp")
print(f"Geçici dizin: {temp_dizin}")
modul_adi.py
gibi olmalıdır.import modul_adi
şeklinde içe aktarabilirsiniz.modul_ornegi.py
dosyasına aşağıdaki kodları yazın:
Başka bir Python dosyasında (örneğin, ana_program.py
) bu modülü içe aktarın ve fonksiyonları kullanın:
__name__
Değişkeni ve Önemi__name__
değişkeni vardır.__name__
değişkeninin değeri "__main__"
olur.__name__
değişkeninin değeri modülün adı olur.# dosya_adi.py
def fonksiyon():
print("Fonksiyon çalıştı.")
if __name__ == "__main__":
print("Dosya doğrudan çalıştırıldı.")
fonksiyon()
Dosya doğrudan çalıştırıldı.
Fonksiyon çalıştı.
Başka bir dosyadan içe aktarıldığında:
dosya_adi
dir()
Fonksiyonuimport math
print(dir(math)) # math modülündeki tüm nitelikleri ve metotları listeler. Örnek çıktı: ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
liste = [1, 2, 3]
print(dir(liste)) # liste nesnesinin tüm niteliklerini ve metotlarını listeler. Örnek çıktı: ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
oyun
paketi altında toplayabilirsiniz. oyun
paketi içinde, grafik
, ses
, oynanis
ve yapay_zeka
gibi alt paketler olabilir.__init__.py
adında boş bir dosya koyun.Örnek paket yapısı
geometri/
├── __init__.py
├── daire.py
└── dikdortgen.py
Örnek paket yapısı
pip
pip
, Python paketlerini yüklemek, yönetmek ve kaldırmak için kullanılan bir araçtır.requirements.txt
dosyasına yazıp, bu dosyayı kullanarak paketleri topluca kurabilirsiniz:Requirements.txt örneği
Django==3.2.9
requests==2.26.0
numpy>=1.21.0
Flask>=2.0,<3.0
pandas==1.3.3
gunicorn==20.1.0
Oluşturma:
Aktifleştirme:
source .venv/bin/activate
.venv\Scripts\activate
Devre Dışı Bırakma:
requests
KütüphanesiKurulum:
requests
Kütüphanesi Kullanımıimport requests
response = requests.get("https://www.example.com")
print(response.status_code) # Çıktı: 200 (Başarılı istek)
print(response.text) # Çıktının uzunluğuna göre değişir. Web sitesinin kaynak kodunu döndürür.
response = requests.get("https://jsonplaceholder.typicode.com/todos/1")
print(response.json()) # {'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False}
math
, random
, datetime
, os
), paketleri, her Python dosyasının bir modül olarak kullanılabileceğini, __name__
değişkenini, paket yönetimini (pip
), sanal ortamları, requests
kütüphanesini ve dir()
fonksiyonunu inceledik.Dosya işlemleri