日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python精要(78)-模块与包组织(1)-绝对导入

發(fā)布時(shí)間:2025/3/12 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python精要(78)-模块与包组织(1)-绝对导入 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、每個(gè)目錄下需要建立一個(gè)__iniit__.py的文件,空文件也可以,這樣才可以引入該目錄下的模塊。
2、__init__.py 文件定義了包的屬性和方法。其實(shí)它可以什么也不定義;可以只是一個(gè)空文件,但是必須存在
3、目錄名就是包名
4、__all__在from ... import *的情況下使用
目錄組織如下:

m1--__init__.py--test1.py--m2--__init__py--test2.py >>> import m1.test1 >>> m1.test1.test1() m1.test1 >>> from m1.test1 import test1 >>> test1() m1.test1 >>> from m1 import test1 >>> test1.test1() m1.test1 >>> print(m1.__name__) m1>>> print(m1.test1.__name__) m1.test1>>> from m1.m2 import test2 >>> test2.test2() m1.m2.test2 >>> import m1.m2 >>> m1.m2.test2.test2() m1.m2.test2 >>> import m1.m2.test2 >>> m1.m2.test2.test2() m1.m2.test2 >>> from m1.m2.test2 import test2 >>> test2() m1.m2.test2 >>> >>> import m1.test1 as t1 >>> t1.test1() m1.test1

包下的__init__.py文件內(nèi)容為空,導(dǎo)入包是無法使用的

>>> from m1 import * >>> m1.test1.test1() Traceback (most recent call last):File "<stdin>", line 1, in <module> AttributeError: module 'm1' has no attribute 'test1' >>>

下面來為__init__.py寫內(nèi)容

(base) [myhaspl@localhost m1]$ pwd /home/myhaspl/learn/learnpy/learn2/m1 (base) [myhaspl@localhost m1]$ cat __init__.py import m1.test1 (base) [myhaspl@localhost m1]$ >>> import m1 >>> m1.test1.test1() m1.test1 (base) [myhaspl@localhost learn2]$ cat ./m1/m2/__init__.py import m1.m2.test2 (base) [myhaspl@localhost learn2]$ >>> import m1.m2 >>> m1.m2.test2 <module 'm1.m2.test2' from '/home/myhaspl/learn/learnpy/learn2/m1/m2/test2.py'> >>> m1.m2.test2.test2() m1.m2.test2

在m1目錄下再加入test11.py
然后,修改m1/__init__.py,加入__all__以及test11.py

(base) [myhaspl@localhost learn2]$ cat m1/__init__.py import m1.test1 import m1.test11 __all__ = ["test1","test11"] >>> from m1 import * >>> test1 <module 'm1.test1' from '/home/myhaspl/learn/learnpy/learn2/m1/test1.py'> >>> test11 <module 'm1.test11' from '/home/myhaspl/learn/learnpy/learn2/m1/test11.py'> >>>

接著,修改m2目錄的__init__.py文件。

(base) [myhaspl@localhost learn2]$ cat m1/m2/__init__.py import m1.m2.test2 __all__=["test2"] (base) [myhaspl@localhost learn2]$ >>> from m1.m2 import * >>> test2 <module 'm1.m2.test2' from '/home/myhaspl/learn/learnpy/learn2/m1/m2/test2.py'> >>>

總結(jié)

以上是生活随笔為你收集整理的python精要(78)-模块与包组织(1)-绝对导入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。