首頁  >  文章  >  後端開發  >  什麼是模組? Python模組中模組module的介紹

什麼是模組? Python模組中模組module的介紹

不言
不言原創
2018-09-19 16:32:527832瀏覽

這篇文章帶給大家的內容是關於什麼是模組? Python中模組module的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一、什麼是模組

Python中,一個.py檔就稱之為一個模組。
那麼使用模組有什麼好處呢?

(1)提高了程式碼的可維護性。

(2)程式碼不必從零開始,當一個模組寫完畢後,就可以被其他地方應用。

(3)可以避免函數名稱和變數名稱衝突,相同的函數名稱和變數可以存放在不同的模組中,但是要注意盡量不要與內建函數名字衝突。
  Python所有的內建函數:https://docs.python.org/3/lib...

為避免模組名衝突,python又引入了按目錄來阻止模組衝突的方法,稱為包(python package)。
一個abc.py的檔案就是一個名字為abc的模組,一個xyz.py的檔案就是一個名字為xyz的模組。假如abc和xyz這兩個模組名字與其他模組衝突了,於是我們可以透過不同的套件來組織模組,避免模組衝突。
則可為:

↓ mycompany      # 按目录存放
     _init_.py   # 模块名:mycompany
     abc.py      # 模块名:mycompany.abc
     xyz.py      # 模块名:mycompany.xyz

引入了套件以後,只要頂層的套件名稱不與別人衝突,那麼所有模組都不會與別人衝突。
每一個套件目錄下都會有一個_init_.py的文件,這個文件是必須存在的,否則python就把這個目錄當成普通目錄,而不是一個包。
_init_.py可以是空文件,也可以有python程式碼,因為_init_.py本身就是一個模組。

二、使用Python自帶模組

Python內建了許多非常有用的模組,只要安裝完畢,這些模組就可以透過import立刻導入使用。
例如下列小程式:以自建的sys模組,寫一個hello的模組hello.py 。

# !/usr/bin/env python    # -1-
# -*-coding:utf-8 -*-     # -2- 
_author_ = 'xionglp'      # 使用_author_变量把作者写进去

import sys   

def test(): 
    args = sys.argv  
    if len(args) == 1: 
        print ('hello,world!') 
    elif len(args) ==2: 
        print('hello,%s !'% args[1]) 
    else: 
        print('too many arguments!') 
if __name__ == '__main__':
    test()

說明:

註解# -1- :讓該.py檔案直接在unix/linux/mac上執行

註解# -2- :.py文件使用標準UTF-8 編碼

import sys:導入sys模組。之後便可以利用sys這個變量,存取sys模組的所有功能。
sys模組有一個argv變量,用list儲存了命令列的所有參數。 argv至少有一個元素,因為第一個參數永遠是該.py檔的名稱。

當在命令列執行hello.py檔時,python解釋器就把一個特殊變數__name__置為__main__。如果在其他地方匯入模組時,if判斷將會失敗,即if僅在此模組單獨執行時生效。因此這種if測試可以讓一個模組透過命令列運行時執行一些額外的程式碼,最常見的就是執行測試。

在互動式環境(cmd)中導入該模組:

>>> import hello                         
>>> hello.test()                   
hello, world!

三、安裝使用第三方模組

除了Python自己的套件,也可以安裝安裝第三方模組。第三方包安裝是透過套件管理工具pip完成的。
一般來說,第三方函式庫都會在Python官方的pypi.python.org網站註冊。所以要安裝第三方函式庫,必須先知道該函式庫的名稱,可以在官網或pypi上搜尋。例如Pillow的名稱叫做Pillow,因此,安裝Pillow的指令就是:pip install Pillow

步驟1:找到安裝Python路徑中的easy_install.exe,例如:D:PythonScripts

#步驟2 :開啟cmd,輸入安裝指令:easy_install.exe pip (pip安裝成功)

#步驟3:在cmd下執行pip,輸入指令:pip install pillow

#如下:

什麼是模組? Python模組中模組module的介紹

安裝成功後便可以使用Pillow了。其他常用的第三方函式庫還有:MySQL的驅動程式、用於科學計算的NumPy函式庫等等。

pip升級:

在使用pip進行安裝時,有時候會提示pip的版本太低,需要upgrade。提示會給予要執行的語句,依照提示執行就行。
執行指令:python –m pip install –upgrade pip

四、模組搜尋路徑

我們也可以匯入自己寫入的模組。當我們試圖載入一個模組時,Python會在指定的路徑下搜尋對應的.py文件,如果找不到,就會報錯,例如:

什麼是模組? Python模組中模組module的介紹

預設情況下,Python解釋器會搜尋目前目錄、所有已安裝的內建模組和第三方模組,搜尋路徑存放在sys模組的path變數中:

>>>import sys
>>>sys.path

如果我們要新增自己的搜尋目錄,有兩種方法:

法一:直接修改sys.path,加入要搜尋的目錄,這個方法是在執行時修改,執行結束後失效。

>>> import sys
>>> sys.path.append('/Users/xionglp/my_py_scripts')

法二:设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

【补充点能量】if __name__ =="__main__":

__name__:为系统变量,有两个取值。当模块是被调用执行时,取值为模块的名字;当模块是直接执行时,则该变量取值为__name__。

if __name__ == "__main__"实现的功能:可以让模块既可以导入到别的模块中用,也可以自己执行。

英文解释说:make a script both importable and executeable

例如:新建模块atest.py

# !/usr/bin/env python3
# -*- coding:utf-8 -*-
'a test module'
def addFunc(a, b):
    return a + b
print('a_test_module\'s result is ', addFunc(1, 1))

新建模块anothertest.py

# !/usr/bin/env python3
# -*- coding :utf-8 -*-
'another test module'
import  atest
print('调用another test module模块执行的结果时:',atest.addFunc(12,23))

运行:

D:\Python_project>python atest.py
a_test_module's result is  2
D:\Python_project>python anothertest.py
a_test_module's result is  2
调用another test module模块执行的结果时: 35

说明:当运行anothertest.py的时候,先运行了atest.py,再运行anothertest.py。
若不希望出现atest的内容,python提供了一个系统变量:__name__。可以把被调用的测试代码写在if语句里,当调用该module时,此时的__name__取值为该模块的名字,所以if判断为假,不执行后续代码如下:

if __name__ == '__main__':`
       print ('atest的计算结果:',addFunc(1,1))

则运行结果为:

D:\Python_project>python anothertest.py
调用another test module模块执行的结果时: 35

此时我们就得到了预期结果,不输出多余的结果。

以上是什麼是模組? Python模組中模組module的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn