1. Python Modülü nedir?

Alan Shovic, John Shovic tarafından

Python modülleriyle ilgili tüm çemberler için bir modül aslında oldukça basit bir şeydir. Aslında, bir Python modülü sadece .py uzantılı Python kodu içeren bir dosyadır. Bu kadar. Python kodunu her yazıp bir .py dosyasına kaydettiğinizde, temelde bir modül oluşturmuş olursunuz.

Bu kodu her zaman bir modül olarak kullanmanız gerektiği anlamına gelmez. Kesinlikle bağımsız bir uygulama olarak ele alınabilir. Ancak, kendi işinizde sıklıkla ihtiyaç duyduğunuz kodla kendi Python modülünüzü oluşturmak istiyorsanız, kesinlikle bunu yapabilirsiniz.

Python modüllerini programlama

Python modülü de yalnızca .py dosya adı uzantısına sahip bir dosyadır. Modülün adı dosya adıyla aynıdır (.py olmadan). Herhangi bir .py dosyası gibi, modül de Python kodu içerir. Çalışan bir örnek olarak, tarih ve para birimi değerlerini biçimlendirmeyi basitleştirmek için üç işleve sahip olmak istediğinizi varsayalım. Her işlev için istediğiniz adı oluşturabilirsiniz. Çalışan örneğimiz için şu üç adı kullanacağız:

  • to_date (any_str): Herhangi bir dize (any_str) tarihini aa / gg / yy veya aa / gg / yyyy biçiminde iletmenizi ve tarih hesaplamaları için kullanabileceğiniz bir Python datetime.date dosyasını geri göndermenizi sağlar. mdy (any_date): Herhangi bir Python tarihini veya tarih saatini geçirmenizi sağlar ve ekranda görüntülemek için aa / gg / yyyy biçiminde biçimlendirilmiş bir dize tarihi döndürür. to_curr (any_num, len): Herhangi bir Python şamandıra veya tamsayı numarasından geçmenizi sağlar ve önde gelen dolar işareti, binlerce yerde virgül ve pennies için iki basamak içeren bir dize döndürür. Len uzunluk için isteğe bağlı bir sayıdır. Sağlanırsa, dönüş değeri belirtilen uzunlukla eşleşecek şekilde boşluklarla solda doldurulur

İşte bunun için tüm kod:

# Tarihler ve para birimi değerleri için özel işlevler içerir.
tarih saatini dt olarak içe aktar
def to_date (herhangi bir_str):
"" "Aa / gg / yy veya aa / gg / yyyy dizesini datetime.date dosyasına veya geçersiz tarihse Yok olarak dönüştürün." ""
Deneyin:
len (any_str) == 10 ise:
the_date = dt.datetime.strptime (herhangi bir_str, '% m /% d /% Y'). tarih ()
Başka:
the_date = dt.datetime.strptime (herhangi bir_str, '% m /% d /% y'). tarih ()
hariç (ValueError, TypeError):
the_date = Yok
tarihini döndür
def mdy (herhangi bir_tarihi):
"" "Bir dize tarihini aa / gg / yyyy biçiminde döndürür. Python tarihini veya dize tarihini aa / gg / yyyy biçiminde iletir" ""
if type (any_date) == str:
any_date = to_date (herhangi bir tarih)
# Yönlendirildiğinden emin olun
isinstance ise (any_date, dt.date):
s_date = f "{herhangi bir_tarih: '% m /% d /% Y'}"
Başka:
s_date = "Geçersiz tarih"
s_date döndür
def to_curr (anynum, len = 0):
"" "Bir sayıyı $ ve virgüllerle dize olarak döndürür. Uzunluk isteğe bağlıdır" ""
s = "Geçersiz tutar"
Deneyin:
x = şamandıra (anynum)
ValueError hariç:
x = Yok
eğer isinstance (x, float):
s = '$' + f "{x:,. 2f}"
len> 0 ise:
s = s.rjust (len)
İadeler

Aynı dosyayı kendiniz oluşturabilir ve takip etmek istiyorsanız myfunctions.py olarak adlandırabilirsiniz. Dosyanın yalnızca işlevler içerdiğine dikkat edin. Eğer çalıştırırsanız, ekranda hiçbir şey yapmaz çünkü orada bu fonksiyonlardan herhangi birini çağıran kod yoktur.

Bu işlevleri yazdığınız herhangi bir Python uygulamasında veya programda kullanmak için, önce bu myfunc.py dosyasını yazdığınız Python kodunun geri kalanıyla aynı klasöre kopyaladığınızdan emin olun. Ardından, yeni bir sayfa oluşturduğunuzda, myfunc'u tıpkı başka biri tarafından oluşturulan diğer tüm modüllerde olduğu gibi bir modül olarak içe aktarabilirsiniz. Sadece kullan

myfunc'u içe aktar

Modül adını, o modülden çağırdığınız herhangi bir fonksiyonun önünde kullanmanız gerekecektir. Bu nedenle, kodu biraz daha okunabilir hale getirmek istiyorsanız, bunun yerine kullanabilirsiniz:

myfunc'umu benim olarak al

Bu, açılış hattınız olarak, özel Python modülünüzdeki herhangi bir işleve my. önek olarak. Örneğin, to_date işlevini çağırmak için my.to_date (). İşte modülü içe aktaran ve sözdizimimi kullanarak üç işlevi de test eden bir sayfa:

# Myfunc.py'daki tüm kodu my olarak al.
myfunc'umu benim olarak al
# Bu koddaki tarihlere ihtiyacınız var
datetime ithalatından datetime dt olarak
# Bazı basit test verileri.
string_date = "2019/12/31"
# Dize tarihini datetime.date biçimine dönüştür
Baskı (my.to_date (string_date))
bugün = dt.today ()
# Bugünün tarihini aa / gg / yyyy biçiminde göster.
Baskı (my.mdy (bugün))
dollar_amt = 12345.678
# Bu büyük sayıyı para birimi biçiminde göster.
Baskı (my.to_curr (dollar_amt))

Öğeleri ada göre içe aktarırsanız öneki kullanmayı da atlayabilirsiniz. Bu durumda bu, my kullanmadan to_date () ve mdy () ve to_curr () öğelerini çağırabileceğiniz anlamına gelir. önek. İlk kod satırının

myfunc import to_date, mdy, to_curr

Kodun geri kalanı önceki örneğindeki ile aynı olacaktır, ancak benimkini bırakabilirsiniz. aşağıdaki koddaki gibi önekler:

# Myfunc.py dosyasındaki tüm kodu isme göre içe aktar.
myfunc import to_date, mdy, to_curr
# Bu koddaki tarihlere ihtiyacınız var
datetime ithalatından datetime dt olarak
# Bazı basit test verileri.
string_date = "2019/12/31"
# Dize tarihini datetime.date biçimine dönüştür
Baskı (to_date (string_date))
bugün = dt.today ()
# Bugünün tarihini aa / gg / yyyy biçiminde göster.
Baskı (pzt (bugün))
dollar_amt = 12345.678
# Bu büyük sayıyı para birimi biçiminde göster.
Baskı (to_curr (dollar_amt))

Daha fazla bilgi için bu 10 şaşırtıcı Python programlama kaynağına göz atın.