Rumah > Soal Jawab > teks badan
Pertama lihat struktur direktori pakej saya:
Nama pakej paling luar ialah Msgnew, yang mengandungi fail init Terdapat modul yang dipanggil get dan sub-pakej yang dipanggil Msg 2 modul di dalamnya , satu dipanggil Sendmsg, dan satu lagi dipanggil modul Receivemsg
Saya kini ingin mengimport modul Sendmsg dalam sub-pakej dan menggunakan salah satu fungsinya
Sebenarnya, izinkan saya memperkenalkan modul Sendmsg, yang sebenarnya mempunyai tiga fungsi, seperti yang ditunjukkan dalam rajah:
Kod untuk proses import adalah seperti berikut:
# -*- coding:gb2312 -*-
# 代码1
from Msgnew import Msg
Msg.Sendmsg.test1()
# 代码2
#from Msgnew.Msg import Sendmsg
#Sendmsg.test1()
Berikut ialah kod 1 dan kod 2
Hasil pelaksanaan kod 1 adalah seperti berikut:
Kemudian komen keluar kod 1 dan kemudian jalankan kod 2. Hasilnya adalah seperti berikut:
Saya tidak faham sangat ini,
Adakah dua keping kod dalam kotak merah tidak setara?
Pada pendapat saya, kedua-dua ini sepatutnya membawa maksud yang sama. Kenapa satu salah dan satu lagi betul?
大家讲道理2017-06-30 09:56:57
Walaupun kesemuanya adalah sub-modul, logik pelaksanaannya sebenarnya berbeza, yang membawa kepada fakta bahawa import akhir mestilah Python
文件,而并非一个模块目录,所以代码二中import Sendmsg
部分才是真正的引入了这个Python文件,而前面的from Msgnew.Msg
yang memberitahu penghurai di mana untuk mencari fail Sendmsg.
某草草2017-06-30 09:56:57
Saya tahu di mana terletaknya masalah yang saya hadapi.
Apabila mengimport bukan modul tetapi pakej, jika anda ingin mengimport terus modul di dalam bersama-sama, anda mesti menulis dalam fail init pakej:
__all__ = ["Sendmsg","Receivemsg"]
from . import Sendmsg
from . import Receivemsg
Seperti yang ditunjukkan dalam gambar:
Kali seterusnya anda melaksanakannya, ia akan berjaya!