Çözüldü Python "import module" ve "from module import *" arasındaki fark nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Çözüm
"import module" ile yazarken fonksiyonun başında kütüphaneyi belirtirsiniz. Aşağıdaki örnekte gördüğünüz gibi "datetime.now" fonksiyonundan önce datetime olarak belirtiliyor.

Python:
import datetime
date = datetime.datetime.now()
print(date)

Fakat iş "from module import *" kısmına geldiğinde bu ifade modülü direkt dosyamıza boşaltır. Bu da kötü sonuçlar ortaya çıkarabilir. Çünkü sizin kendi yazdığınız fonksiyonlarınızdan biride modüldeki fonksiyonlardan biriyle aynı isme sahip olabilir.

İlk olarak kodu böyle yazdığımızda sorunsuz çalışacaktır.

Python:
from time import *
sleep(5)
print("\ntest")

Fakat aşağıdaki kodu çalıştırdığımızda diğer görseldeki hatayı alırız. Çünkü ikiside aynı isme sahipler ve bu nedenle çakışıyorlar. Modülü veya fonksiyonu sildiğimizde kodumuz sorunsuz çalışacaktır.

Python:
from time import *
def sleep():
  print("Hello World")
sleep(5)
print("test")

1660473725526.png


Modülü veya fonksiyonu sildiğimizde kodumuz sorunsuz çalışacaktır. O yüzden "from time import *" çok tercih edilmemelidir.
Hayır hocam o anlamda değil, modülün bir parçasını çekmek istediğimizde modülün çekmek istediğimiz parçasının adını yazarız. Burada benim kastettiğim direk olarak bu kod satırı, yani "import *" yazdığımız zaman hepsini çekiyor diye biliyorum. Yani from module import function dediğimiz zaman istediğimiz fonksiyonu çekeriz, ama from module import * dediğimiz zaman tamamını çekiyoruz modülün.
 
Bildiğim kadarıyla:
Python:
import math
x = 9
print(math.sqrt(x))

Python:
from module import math
x = 9
print(sqrt(x))

Birinde modülün fonksiyonu kullanırken başında modülün adını yazman gerekiyor.
Hocam ben bunu kastetmiyorum, yukarıdaki arkadaş da yanlış anladı. Benim çektiğim bir fonksiyon yok. Ben, direk olarak kod içinde from module import * yazıyorum. Yani yıldız işareti yerine bir şey koymuyorum, direk yıldız işaretini kullanıyorum.
1660473350318.png

Bu şekilde kullanmayı kastediyorum.
 
"import module" ile yazarken fonksiyonun başında kütüphaneyi belirtirsiniz. Aşağıdaki örnekte gördüğünüz gibi "datetime.now" fonksiyonundan önce datetime olarak belirtiliyor.

Python:
import datetime
date = datetime.datetime.now()
print(date)

Fakat iş "from module import *" kısmına geldiğinde bu ifade modülü direkt dosyamıza boşaltır. Bu da kötü sonuçlar ortaya çıkarabilir. Çünkü sizin kendi yazdığınız fonksiyonlarınızdan biride modüldeki fonksiyonlardan biriyle aynı isme sahip olabilir.

İlk olarak kodu böyle yazdığımızda sorunsuz çalışacaktır.

Python:
from time import *
sleep(5)
print("\ntest")

Fakat aşağıdaki kodu çalıştırdığımızda diğer görseldeki hatayı alırız. Çünkü ikiside aynı isme sahipler ve bu nedenle çakışıyorlar. Modülü veya fonksiyonu sildiğimizde kodumuz sorunsuz çalışacaktır.

Python:
from time import *
def sleep():
  print("Hello World")
sleep(5)
print("test")

1660473725526.png


Modülü veya fonksiyonu sildiğimizde kodumuz sorunsuz çalışacaktır. O yüzden "from time import *" çok tercih edilmemelidir.
 
Çözüm
"import module" ile yazarken fonksiyonun başında kütüphaneyi belirtirsiniz. Aşağıdaki örnekte gördüğünüz gibi "datetime.now" fonksiyonundan önce datetime olarak belirtiliyor.

Python:
import datetime
date = datetime.datetime.now()
print(date)

Fakat iş "from module import *" kısmına geldiğinde bu ifade modülü direkt dosyamıza boşaltır. Bu da kötü sonuçlar ortaya çıkarabilir. Çünkü sizin kendi yazdığınız fonksiyonlarınızdan biride modüldeki fonksiyonlardan biriyle aynı isme sahip olabilir.

İlk olarak kodu böyle yazdığımızda sorunsuz çalışacaktır.

Python:
from time import *
sleep(5)
print("\ntest")

Fakat aşağıdaki kodu çalıştırdığımızda diğer görseldeki hatayı alırız. Çünkü ikiside aynı isme sahipler ve bu nedenle çakışıyorlar. Modülü veya fonksiyonu sildiğimizde kodumuz sorunsuz çalışacaktır.

Python:
from time import *
def sleep():
  print("Hello World")
sleep(5)
sleep()

Modülü veya fonksiyonu sildiğimizde kodumuz sorunsuz çalışacaktır. O yüzden "from time import *" çok tercih edilmemelidir.
Tamamdır, tam olarak bunu soruyordum. Çok teşekkür ederim.
 
Hocam ben bunu kastetmiyorum, yukarıdaki arkadaş da yanlış anladı. Benim çektiğim bir fonksiyon yok. Ben, direk olarak kod içinde from module import * yazıyorum. Yani yıldız işareti yerine bir şey koymuyorum, direk yıldız işaretini kullanıyorum.
Eki Görüntüle 1485341
Bu şekilde kullanmayı kastediyorum.
Hocam ben o yıldızı "herhangi bir modül" olarak yazdığınızı zannetmiştim.
 

Technopat Haberler

Yeni mesajlar

Geri
Yukarı