python中module_Python中的模块(Module)
與在控制臺輸入python程序,執(zhí)行命令相比。當(dāng)我們的程序變得越來越長的時候,我們希望可以在文本編輯器(如sublime text, notepad++)中編寫python程序,因為這樣的話,我們的程序可以保存為python腳本。但是隨著程序的復(fù)雜度不斷上升,我們希望可以把一個python腳本根據(jù)一定的功能分割成多個不同的python module。這樣做的好處主要有兩個:
程序看起來結(jié)構(gòu)更加清晰,易于維護,因為不同的文件可以同時由不同的程序員同時維護,分工合作。
如果某個module或者整個package具有較強的復(fù)用性,其他的腳本甚至其他的project可以直接引用,避免了重復(fù)造輪子。
這樣,我們就引出了python中module和package的概念,可以說python當(dāng)今十分流行的原因之一就是極為豐富的第三方模塊,可以讓我在完成很多任務(wù)的時候,避免了一切從零開始。當(dāng)然,python本身也提供了十分強大全面的標(biāo)準(zhǔn)庫 - Python Standard Library
類似于c++中的include, PHP中的require。在python中導(dǎo)入模塊有兩種方式import和from ... import ...,下面我們通過test.py和example.py來舉例說明。
test.py
a = "Hello"
b = "World"
def Hello():
print("Hello, World")
當(dāng)兩個文件在同一個子目錄下
-- project
|-- test.py
`-- example.py
如果我想要在example.py中使用test模塊,有下面三種方法:
第一種方法
import test
test.Hello() # "Hello, World"
print(test.a) # "Hello"
使用時必須遵守module_name.xxx的格式,此方法將整個文件都包括進來
第二種方法
from test import *
Hello() # "Hello, World"
print(a) # "Hello"
使用第二種方法時,不再需要遵守第一種的格式,*表示import everything(但這種方式不會導(dǎo)入以下劃線開頭的名稱),通常導(dǎo)致代碼非常難讀,不贊成使用。相應(yīng)的應(yīng)對方法就是通過使用__all__變量來限制。比如更改 test.py
__all__ = ["a", "b"]
a = "Hello"
b = "World"
def Hello():
print("Hello, World")
這樣的話,import *將不能引入Hello方法
第三種方法
在import的時候就聲明具體要引入的內(nèi)容
from test import Hello
Hello() # "Hello, World"
當(dāng)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
-- project
|-- module
| `--test.py
`-- example.py
如果要在example.py中使用test模塊
from module.test import *
或者
import module.test
但要注意必須在module文件夾中添加__init__.py文件,文件可以為空。
總結(jié)
以上是生活随笔為你收集整理的python中module_Python中的模块(Module)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 命名空间不能直接包含_C++程序中可以命
- 下一篇: jvm类加载机制_面试:对于JVM类加载