cari

Rumah  >  Soal Jawab  >  teks badan

[Python Newbie] Tanya soalan tentang mengimport pakej bersarang

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?

phpcn_u1582phpcn_u15822707 hari yang lalu777

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理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.

    balas
    0
  • 某草草

    某草草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!

    balas
    0
  • Batalbalas