Python'3 de Modül Nasıl İçe Aktarılır
Giriş (Introduction)
Python programlama dili çeşitli yerleşik fonksiyonlar (built-in functions) ile birlikte gelir. Bu fonksiyonlar arasında şunlar bulunur:
print()
ifadesini yazar.abs()
bir sayının mutlak değerini döndürür.int()
başka bir veri türünü tam sayıya çevirir.len()
bir dizinin veya koleksiyonun uzunluğunu döndürür.
Bu yerleşik fonksiyonlar sınırlıdır, ancak daha gelişmiş programlar yazmak için modüllerden (modules) faydalanabiliriz.
Modüller, Python kodundan oluşan .py
dosyalarıdır. Herhangi bir Python dosyası bir modül olarak referans alınabilir. Örneğin, hello.py
adlı bir Python dosyası, Python komut satırı yorumlayıcısında (Python command line interpreter) veya başka Python dosyalarında kullanılabilecek olan hello
adlı bir modül olur.
Modüller, diğer Python .py
dosyalarında veya Python komut satırı yorumlayıcısında referans alabileceğiniz fonksiyonlar, sınıflar (classes) ve değişkenler (variables) tanımlayabilir.
Python’da modüllere erişmek için import
ifadesi kullanılır. Bunu yaptığınızda, modülün kodunu çalıştırırsınız ve tanımların kapsamlarını koruyarak mevcut dosyanızda bu tanımları kullanabilirsiniz.
Python bir hello
adlı modül içe aktardığında, yorumlayıcı önce hello
adlı bir yerleşik modül arayacaktır. Eğer bir yerleşik modül bulunmazsa, Python yorumlayıcı sys.path
değişkeninden aldığı dizinler listesinde hello.py
adlı bir dosya arar.
Bu öğretici, modülleri kontrol etme ve yükleme, modül içe aktarma ve modüllere takma ad verme işlemlerini adım adım inceleyecek.
Modülleri Kontrol Etme ve Yükleme (Checking For and Installing Modules)
Python Standart Kütüphanesinde (Python Standard Library) birçok yerleşik modül bulunur; bu kütüphane sistem işlevlerine erişim sağlar veya standart çözümler sunar. Python Standart Kütüphanesi, her Python kurulumunun bir parçasıdır.
Bilgi: Bu öğreticiyi takip etmek için, python3 komutunu çalıştırarak yerel sisteminizde Python etkileşimli kabuğunu (Python interactive shell) açın. Ardından örnekleri >>>
istemcisinden sonra ekleyebilir, yapıştırabilir veya düzenleyebilirsiniz.
Bu Python modüllerinin çalışmaya hazır olup olmadığını kontrol etmek için, yerel Python 3 programlama ortamınıza veya sunucu tabanlı programlama ortamınıza girin ve komut satırında Python yorumlayıcısını başlatın:
$ python
Yorumlayıcı içinde, belirtilen modülün çağrılmaya hazır olduğundan emin olmak için import
ifadesini çalıştırabilirsiniz, örneğin:
>>> import math
math
yerleşik bir modül olduğundan, yorumlayıcı görevi herhangi bir geri bildirim olmadan tamamlayarak komut istemine dönecektir. Bu, math
modülünü kullanmaya başlamak için başka bir işlem yapmanıza gerek olmadığı anlamına gelir.
Kurulu olmayabilecek bir modülle import
ifadesini çalıştıralım, örneğin 2D çizim kütüphanesi (2D plotting library) matplotlib
:
>>> import matplotlib
Eğer matplotlib
kurulu değilse, şöyle bir hata alırsınız:
Çıktı:
ImportError: No module named 'matplotlib'
Python yorumlayıcısını CTRL + D
ile devre dışı bırakabilir ve ardından pip
ile matplotlib
yükleyebilirsiniz.
Ardından pip
kullanarak matplotlib
modülünü yükleyebiliriz:
$ pip install matplotlib
Yüklendikten sonra Python yorumlayıcısında import matplotlib
ifadesini kullanarak herhangi bir hata olmadan modülü içe aktarabilirsiniz.
Modülleri İçe Aktarma (Importing Modules)
Bir modüldeki fonksiyonları kullanmak için, import
ifadesiyle modülü içe aktarmanız gerekir.
Bir import
ifadesi, import
anahtar kelimesi (import keyword) ve modülün adından oluşur.
Python dosyasında bu ifade, herhangi bir shebang satırının veya genel açıklamaların (general comments) altında en üstte bildirilir.
Yani, my_rand_int.py
adlı Python program dosyasında, rastgele (random) sayılar oluşturmak için random
modülünü şu şekilde içe aktarırız:
import random
Bir modül içe aktardığımızda, onu mevcut programımızda ayrı bir ad alanı (namespace) olarak kullanılabilir hale getiririz. Bu, fonksiyona nokta gösterimi (dot notation) ile, [modül].[fonksiyon]
şeklinde başvurmamız gerektiği anlamına gelir.
Örnekteki random
modülü ile, bu aşağıdaki gibi bir fonksiyon çağrısı olabilir:
random.randint()
fonksiyonu, bir rastgele tam sayı döndürmek için çağrılır.random.randrange()
fonksiyonu, belirtilen aralıktan rastgele bir eleman döndürmek için çağrılır.
Bir for
döngüsü (for loop) oluşturarak random
modülünün bir fonksiyonunu my_rand_int.py
programımızda nasıl çağıracağımızı gösterelim:
import random
for i in range(10):
print(random.randint(1, 25))
Bu küçük program, ilk satırda random
modülünü içe aktarır ve ardından 10 eleman ile çalışan bir for
döngüsüne geçer. Döngü içinde, program 1 ile 25 (dahil) arasındaki rastgele bir tam sayıyı yazdıracaktır. 1 ve 25 tam sayıları, random.randint()
fonksiyonuna parametre olarak geçer.
Programı python my_rand_int.py
komutuyla çalıştırdığımızda, 10 rastgele tam sayı içeren bir çıktı alacağız. Bunlar her seferinde farklı olacaktır, ancak şöyle bir şey üretebilir:
Çıktı:
6
9
1
14
3
22
10
1
15
9
Tam sayılar 1’in altına düşmez veya 25’in üzerine çıkmaz.
Birden fazla modülden fonksiyon kullanmak isterseniz, birden fazla import
ifadesi ekleyebilirsiniz:
import random
import math
Birden fazla modülü virgülle ayırarak import random, math
şeklinde içe aktaran programlar görebilirsiniz; ancak bu, PEP 8 Stil Kılavuzu (PEP 8 Style Guide) ile tutarlı değildir.
Ekstra modülümüzü kullanmak için, programa math
modülünden pi
sabitini ekleyebiliriz ve yazdırılan rastgele tam sayı sayısını azaltabiliriz:
import random
import math
for i in range(5):
print(random.randint(1, 25))
print(math.pi)
Programı çalıştırdığımızda, pi sayısının yaklaşık değeriyle son satırda aşağıdaki gibi bir çıktı alacağız:
Çıktı:
18
10
7
13
10
3.141592653589793
import
ifadesi, bir veya daha fazla modülü Python programınıza içe aktarmanıza ve o modüllerdeki tanımları kullanmanıza olanak tanır.
from … import Kullanımı
Bir modüldeki öğelere programınızın ad alanı (namespace) içinde başvurmak için from … import
ifadesini kullanabilirsiniz. Modülleri bu şekilde içe aktardığınızda, işlevlere nokta gösterimi (dot notation) kullanmak yerine doğrudan adlarıyla başvurabilirsiniz.
Bu yapıda, hangi tanımlara doğrudan başvurmak istediğinizi belirtebilirsiniz.
Diğer programlarda, import
ifadesinin modülde tanımlanan her şeye joker karakter (*
) kullanarak başvurduğunu görebilirsiniz, ancak bu kullanım PEP 8 tarafından önerilmez.
Önce random
modülünden randint()
adlı belirli bir işlevi içe aktarmayı gözden geçirelim:
from random import randint
Burada önce from
anahtar kelimesini, ardından modül için random
ifadesini kullanıyoruz. Sonrasında import
anahtar kelimesiyle kullanmak istediğimiz belirli işlevi çağırıyoruz.
Şimdi, bu işlevi programımızda kullanırken, artık random.randint()
gibi nokta gösterimiyle yazmayacağız; bunun yerine yalnızca randint()
olarak yazacağız:
from random import randint
for i in range(10):
print(randint(1, 25))
Programı çalıştırdığınızda, daha önce aldığımız çıktıya benzer bir sonuç alırsınız.
from … import
yapısını kullanmak, bir modülün tanımlı öğelerine programımızın ad alanı içinde doğrudan başvurabilmemizi sağlar ve nokta gösteriminden kaçınmamıza olanak tanır.
Modüllere Takma Ad Verme (Aliasing Modules)
Python’da modüllerin ve işlevlerinin adlarını as
anahtar kelimesiyle değiştirebilirsiniz.
Bir adı değiştirmek isteyebilirsiniz, çünkü programınızda zaten aynı adı başka bir şey için kullanıyor olabilirsiniz, başka bir modül aynı adı kullanıyor olabilir veya sıkça kullandığınız uzun bir adı kısaltmak isteyebilirsiniz.
Bu ifadenin yapısı şu şekildedir:
import [module] as [başka_ad]
my_math.py adlı program dosyamızda math
modülünün adını değiştirelim. math
modülünün adını m
olarak kısaltacağız. Değiştirilmiş programımız şöyle görünecektir:
my_math.py
import math as m
print(m.pi)
print(m.e)
Program içinde artık pi
sabitine math.pi
yerine m.pi
olarak başvuruyoruz.
Bazı modüller için, takma ad kullanımı yaygındır. matplotlib.pyplot
modülünün resmi dokümantasyonu, plt
takma adının kullanılmasını önerir:
import matplotlib.pyplot as plt
Bu, programcıların modüldeki işlevlere daha kısa plt
ifadesini ekleyerek başvurmalarını sağlar; örneğin, plt.show()
gibi. Bu takma ad içe aktarma ifadesini.
Sonuç
Modülleri içe aktardığımızda, Python’da yerleşik olmayan işlevleri çağırabilme imkanına sahip oluruz. Bazı modüller Python ile birlikte kurulur, bazılarını ise pip
ile kurarız.
Lisa Tagliaferri tarafından yazılan How To Import Modules in Python 3 a Programming makalesinin düzenlenmiş çevirisi
Daha Fazla Oku:
- Sonraki Makale: Python 3'te Modüller Nasıl Yazılır
- Önceki Makale: Python 3'te Sözlükleri Anlamak