一、模塊是一個包含全部你定義的函數和變量的文件,其後綴名是.py。python
模塊能夠被別的程序引入,以使用該模塊中的函數等功能。這也是使用 python 標準庫的方法。app
例子:sys.argv 是一個包含命令行參數的列表函數
import sys print('命令行參數以下:') for i in sys.argv: print(i) print('\n\nPython 路徑爲:', sys.path, '\n')
二、導入本身寫的模塊importui
定義test.pyspa
def method(): print("method...")
定義hello.py.net
import test test.method()
test.py和hello.py在同一目錄下,執行python .\hello.py,報錯 ModuleNotFoundError: No module named 'test'命令行
import導入模塊時的搜索路徑code
打印sys.path結果:blog
- Python 路徑爲: ['D:\\DevTools\\python-3.7.4-embed-amd64\\python37.zip', 'D:\\DevTools\\python-3.7.4-embed-amd64']ip
- sys.path 輸出是一個列表,第一項是空串,表明當前目錄;我本地安裝的Python的sys.path第一項不是空串
瞭解了搜索路徑的概念,就能夠在腳本中修改sys.path來引入一些不在搜索路徑中的模塊:sys.path(環境變量)
修改hello.py
import sys sys.path.append("D:\python\demo") import test test.method()
三、from … import 語句
from modulename import name1, name2...
from modulename import *
四、__name__屬性
__name__: 每一個模塊都有一個__name__屬性,當其值是'__main__'時,代表該模塊自身在運行,不然是被引入。
五、dir()函數
內置的函數 dir() 能夠找到模塊內定義的全部名稱。以一個字符串列表的形式返回:
print(dir(test))結果:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'method']
六、包
hello.py
import sys sys.path.append("D:\python\demo") import a.b.test a.b.test.method()
test.py
def method(): print("method...")
經過import a.b.test這樣導入模塊,使用的使用也要帶包。可使用as關鍵字將導入的模塊從新命名,好比
import sys sys.path.append("D:\python\demo") import a.b.test as test test.method()
還有一種導入子模塊的方法是:
import sys sys.path.append("D:\python\demo") from a.b import test test.method()
還有一種變化就是直接導入一個函數或者變量:
import sys sys.path.append("D:\python\demo") from a.b.test import method method()
七、__all__
從一個包中導入* ,被導入的模塊最好使用__all__來指定導入的內容(好比函數或變量)。
test.py
__all__ = ["method", "method2"] def method(): print("method...") def method2(): print("method2...") def main(): method() method2() if __name__ == '__main__': main()
hello.py
import sys sys.path.append("D:\python\demo") from a.b.test import * method() method2()
八、__init__.py和__all__的使用
__init__.py
__all__ = ["test"] from . import test
test.py
__all__ = ["method", "method2"] def method(): print("method...") def method2(): print("method2...") def main(): method() method2() if __name__ == '__main__': main()
main.py
import sys sys.path.append("D:\python\demo") # import a # a.test.method() from a import * test.method()