Tutorial pengen...login
Tutorial pengenalan asas Python
pengarang:php.cn  masa kemas kini:2022-04-18 16:14:50

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.

def print_func( par ):
print "Hello : ", par
return


penyata import

Untuk menggunakan fail sumber Python, hanya laksanakan pernyataan import dalam fail sumber lain Sintaksnya adalah seperti berikut:

import modul1[, module2[,... moduleN]
<. 🎜>
Apabila jurubahasa menemui pernyataan import, modul akan diimport jika ia berada dalam laluan carian semasa.

Laluan carian ialah senarai semua direktori yang akan dicari oleh jurubahasa dahulu. Jika anda ingin mengimport modul hello.py, anda perlu meletakkan arahan di bahagian atas skrip:

#!/usr/bin/python
# -*- pengekodan: UTF-8 -*-

# Modul import
sokongan import

# Kini anda boleh memanggil fungsi yang terkandung dalam modul
support.print_func("Zara")
Hasil keluaran contoh di atas:

Helo : Zara
Sesuatu modul hanya akan diimport sekali, tidak kira berapa kali anda melaksanakan import. Ini menghalang modul yang diimport daripada dilaksanakan berulang kali.



From…import statement

Python’s from statement membolehkan anda mengimport bahagian tertentu daripada modul ke dalam ruang nama semasa. Sintaks adalah seperti berikut:

daripada modname import name1[, name2[, ... nameN]]
Contohnya, untuk mengimport fungsi fibonacci modul fib , gunakan pernyataan berikut:

dari fib import fibonacci
Pengisytiharan ini tidak akan mengimport keseluruhan modul fib ke dalam ruang nama semasa, ia hanya akan memperkenalkan satu fibonacci dalam fib into the execution Jadual simbol global modul yang diisytiharkan ini.



Dari...import* pernyataan

Ia juga mungkin untuk mengimport semua kandungan modul ke dalam ruang nama semasa, hanya gunakan pernyataan berikut:

dari import nama mod *

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:

set PYTHONPATH=c:python20lib;

Dalam sistem UNIX, PYTHONPATH biasa ialah seperti berikut:

tetapkan PYTHONPATH=/usr/local/lib/python


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.

#!/usr/bin/python
# -*- 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:

#!/usr/bin/python
# -*- pengekodan: UTF-8 -*-

# Import terbina dalam modul matematik
import matematik

kandungan = dir(matematik)

cetak kandungan;

Hasil keluaran contoh di atas:

[' __doc__', '__file__', '__name__', 'acos', 'asin', 'atan',
'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:

muat semula(nama_module)

Di sini, nama_modul hendaklah terus meletakkan nama modul dan bukannya bentuk rentetan. Contohnya, jika anda ingin memuatkan semula modul hello, seperti berikut:

muat semula(hello)


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:

#!/usr/bin/python
# -*- 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 Periuk import Periuk
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.

#!/usr/bin/python
# -*- pengekodan: UTF-8 -*-

# Pakej Import Telefon
import Telefon

Phone.Pots()
Phone.Isdn()
Phone.G3()

Contoh hasil output di atas:

I' m Pots Phone
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.