python精要(78)-模块与包组织(1)-绝对导入
生活随笔
收集整理的這篇文章主要介紹了
python精要(78)-模块与包组织(1)-绝对导入
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、每個(gè)目錄下需要建立一個(gè)__iniit__.py的文件,空文件也可以,這樣才可以引入該目錄下的模塊。
2、__init__.py 文件定義了包的屬性和方法。其實(shí)它可以什么也不定義;可以只是一個(gè)空文件,但是必須存在
3、目錄名就是包名
4、__all__在from ... import *的情況下使用
目錄組織如下:
包下的__init__.py文件內(nèi)容為空,導(dǎo)入包是無(wú)法使用的
>>> from m1 import * >>> m1.test1.test1() Traceback (most recent call last):File "<stdin>", line 1, in <module> AttributeError: module 'm1' has no attribute 'test1' >>>下面來(lái)為_(kāi)_init__.py寫(xiě)內(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
接著,修改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)-绝对导入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MyBatis JdbcType介绍
- 下一篇: RSA 非对称加密原理