9 - Modüller ve Paketler
2024
from math import pi
print(pi) # Çıktı: 3.141592653589793
from math import sqrt
print(sqrt(25)) # Çıktı: 5.0Soru
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)) # Ahmetdatetime 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ı
pippip, 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\activateDevre 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