在寫python時,有時候寫的一個python文件可能需要被其他python文件所用,那么可以用導入包 import 的 方式:
1.自己寫的包放到哪里?
>>> import sys >>> sys.path ['', '/usr/lib64/python34.zip', '/usr/lib64/python3.4', '/usr/lib64/python3.4/plat-linux', '/usr/lib64/python3.4/lib-dynload', '/usr/lib64/python3.4/site-packages', '/usr/lib/python3.4/site-packages']
可以看到上面列舉了一些文件夾地址,那么自己寫的包理論上都可以放到上述地址中,但有一些如”/usr/lib64/python3.4“並不推薦,比較推薦的是:“” , “'/usr/lib/python3.4/site-packages'”, “'/usr/lib64/python3.4/site-packages'”
2.如何導入自己寫的包?
比如“/usr/lib/python3.4/site-packages”,如果我寫了 一個 exp.py 文件放在這個文件下,那么我在自己的系統寫的 python3 文件都可以采用 import exp 導入。
還可以看到還有一個是“”,及當前文件夾,假如 存在如此的 一個 文件 結構:
parent/
one/
__init__.py
exp.py
exp2.py
exp3.py
exp.py和exp2.py都在one目錄下,那么在exp2.py中可以通過 import exp 導入exp.py
而exp3.py和one都處在parent目錄下,那么在exp3.py中可以通過 import one.exp 導入exp.py
3.__init__.py的作用
偶爾可以看到有些人寫的包下面還會有一個__init__.py,它的作用是在導入包時首先執行的。
假設在 exp3.py 中寫入 import one.exp ,那么會首先執行 __init__.py 文件,接着會執行exp.py文件
如果不需要,__init__.py可以為空,也可以干脆不加入__init__.py
4.if __name__ == "__main__"
也有時候會看到 .if __name__ == "__main__" 語句,它的作用就是當此文件沒有被作為導入的文件使用時執行 if 語句塊里的程序。
假如 exp.py 中加入了 if __name__ == "__main__" ,然后 python3 exp.py,就會執行這個語句塊里的內容
而 如果 if __name__ == "exp",時則是被 其他文件 以 "import exp"導入時執行的部分
有如果是 if __name__ == "one.exp",時則是被 其他文件 以 "import one.exp"導入時執行的部分
注意 在 "import exp"時是不會執行 if __name__ == "one.exp"中的內容的!同樣: "import one.exp“是不會執行 if __name__ == "exp"中的內容的
