Modul Python
Modul
membolehkan anda menyusun coretan kod Python anda secara logik.
Menetapkan kod berkaitan kepada modul boleh menjadikan kod anda lebih boleh digunakan dan lebih mudah difahami.
Modul juga merupakan objek Python dengan atribut nama rawak untuk pengikatan atau rujukan.
Ringkasnya, modul ialah fail yang menyimpan kod Python. Modul boleh menentukan fungsi, kelas dan pembolehubah. Modul juga boleh mengandungi kod boleh laku.
Contoh
Kod Python dalam modul yang dipanggil aname biasanya boleh ditemui dalam fail bernama aname.py. Contoh berikut ialah support.py modul ringkas.
print "Hello : ", par
return
penyata import
Untuk menggunakan fail sumber Python, hanya laksanakan pernyataan import dalam fail sumber lain Sintaksnya adalah seperti berikut:
# Modul import
sokongan import
# Kini anda boleh memanggil fungsi yang terkandung dalam modul
support.print_func("Zara")
From…import statement Python’s from statement membolehkan anda mengimport bahagian tertentu daripada modul ke dalam ruang nama semasa. Sintaks adalah seperti berikut:
Dari...import* pernyataan Ia juga mungkin untuk mengimport semua kandungan modul ke dalam ruang nama semasa, hanya gunakan pernyataan berikut:
Ini menyediakan cara mudah untuk mengimport semua projek dalam modul. Walau bagaimanapun, kenyataan ini tidak boleh digunakan secara berlebihan.
Mencari modul
Apabila anda mengimport modul, urutan carian penghurai Python untuk lokasi modul ialah:
Direktori Semasa
Jika ia tiada dalam direktori semasa, Python mencari setiap direktori di bawah pembolehubah shell PYTHONPATH.
Jika kedua-duanya tidak dijumpai, Python akan menyemak laluan lalai. Di bawah UNIX, laluan lalai biasanya /usr/local/lib/python/.
Laluan carian modul disimpan dalam pembolehubah sys.path modul sistem. Pembolehubah mengandungi direktori semasa, PYTHONPATH dan direktori lalai yang ditentukan oleh proses pemasangan.
Pembolehubah PYTHONPATH
Sebagai pembolehubah persekitaran, PYTHONPATH terdiri daripada banyak direktori yang dipasang dalam senarai. Sintaks PYTHONPATH adalah sama dengan sintaks pembolehubah shell PATH.
Dalam sistem Windows, PYTHONPATH biasa adalah seperti berikut:
Dalam sistem UNIX, PYTHONPATH biasa ialah seperti berikut:
Ruang nama dan skop
Pembolehubah mempunyai padanan nama objek (pengecam). Ruang nama ialah kamus yang mengandungi nama pembolehubah (kunci) dan objek yang sepadan (nilai).
Ungkapan Python boleh mengakses pembolehubah dalam ruang nama tempatan dan ruang nama global. Jika pembolehubah tempatan mempunyai nama yang sama dengan pembolehubah global, pembolehubah tempatan mengatasi pembolehubah global.
Setiap fungsi mempunyai ruang nama tersendiri. Peraturan skop untuk kaedah kelas adalah sama seperti untuk fungsi biasa.
Python akan meneka dengan bijak sama ada pembolehubah adalah tempatan atau global, dengan mengandaikan bahawa sebarang pembolehubah yang ditetapkan dalam fungsi adalah setempat.
Oleh itu, jika anda ingin menetapkan nilai kepada pembolehubah global dalam fungsi, anda mesti menggunakan pernyataan global. Ungkapan
global VarName memberitahu Python bahawa VarName ialah pembolehubah global, supaya Python tidak akan mencari pembolehubah ini dalam ruang nama tempatan.
Sebagai contoh, kami mentakrifkan wang boleh ubah dalam ruang nama global. Kami kemudian memberikan nilai kepada wang pembolehubah dalam fungsi, dan kemudian Python akan menganggap bahawa wang ialah pembolehubah tempatan. Walau bagaimanapun, kami tidak mengisytiharkan wang pembolehubah tempatan sebelum mengaksesnya, dan hasilnya ialah UnboundLocalError. Tidak mengulas kenyataan global boleh menyelesaikan masalah ini.
# -*- pengekodan: UTF-8 -*-
Wang = 2000
def AddMoney():
# Jika anda ingin membetulkan kod, nyahkomen perkara berikut:
# Wang global
Wang = Wang + 1
cetak Wang
Tambah Wang()
cetak Wang
fungsi dir()
fungsi dir() ialah senarai rentetan yang diisih, kandungannya ialah nama yang ditakrifkan dalam modul.
Senarai yang dikembalikan mengandungi semua modul, pembolehubah dan fungsi yang ditakrifkan dalam modul. Berikut ialah contoh mudah:
# -*- pengekodan: UTF-8 -*-
# Import terbina dalam modul matematik
import matematik
kandungan = dir(matematik)
cetak kandungan;
Hasil keluaran contoh di atas:
'atan2', 'ceil', 'cos', 'cosh', 'darjah ', 'e', 'exp',
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf ', 'pi', 'pow', 'radians', 'sin', 'sinh',
'sqrt', 'tan', 'tanh']
Di sini, yang istimewa pembolehubah rentetan __name__ Menunjuk pada nama modul, dan __file__ menunjuk pada nama fail import modul.
fungsi globals() dan locals()
Bergantung pada tempat ia dipanggil, fungsi globals() dan locals() boleh digunakan untuk mengembalikan global dan tempatan nama ruang nama dalam.
Jika locals() dipanggil di dalam fungsi, semua nama yang boleh diakses dalam fungsi itu akan dikembalikan.
Jika globals() dipanggil di dalam fungsi, semua nama global yang boleh diakses dalam fungsi itu akan dikembalikan.
Jenis pemulangan kedua-dua fungsi ialah kamus. Jadi nama boleh diekstrak menggunakan fungsi keys().
fungsi muat semula()
Apabila modul diimport ke dalam skrip, kod di bahagian peringkat atas modul hanya akan dilaksanakan sekali.
Oleh itu, jika anda ingin melaksanakan semula kod peringkat teratas dalam modul, anda boleh menggunakan fungsi reload(). Fungsi ini mengimport semula modul yang diimport sebelum ini. Sintaksnya adalah seperti berikut:
Di sini, nama_modul hendaklah terus meletakkan nama modul dan bukannya bentuk rentetan. Contohnya, jika anda ingin memuatkan semula modul hello, seperti berikut:
Pakej dalam Python
ialah struktur direktori fail hierarki A, yang mentakrifkan persekitaran aplikasi Python yang terdiri daripada modul dan subpakej, dan subpakej di bawah subpakej.
Pertimbangkan fail pots.py dalam direktori Telefon. Fail ini mempunyai kod sumber berikut:
# -*- pengekodan: UTF-8 -*-
def Pots() :
cetak "Saya Telefon Periuk"
Begitu juga, kami mempunyai dua fail lain yang memegang fungsi berbeza:
Telefon/Isdn.py mengandungi fungsi Isdn()
Phone/G3.py mengandungi fungsi G3()
Sekarang, cipta fail __init__.py dalam direktori Telefon:
Phone/ __init__. py
Apabila anda mengimport Telefon, untuk menggunakan semua fungsi, anda perlu menggunakan pernyataan import eksplisit dalam __init__.py, seperti berikut:
dari Isdn import Isdn
dari G3 import G3
Apabila anda menambahkan kod ini pada __init__.py, import kelas ini ke dalam pakej Telefon Semuanya tersedia.
# -*- pengekodan: UTF-8 -*-
# Pakej Import Telefon
import Telefon
Phone.Pots()
Phone.Isdn()
Phone.G3()
Contoh hasil output di atas:
Saya Telefon 3G
Saya Telefon ISDN
Seperti di atas, sebagai contoh, kami hanya meletakkan satu fungsi dalam setiap fail, tetapi sebenarnya anda boleh letak banyak fungsi. Anda juga boleh menentukan kelas Python dalam fail ini dan kemudian membina pakej untuk kelas ini.