Python 模塊

1模塊

1.1Python中的模塊介紹和使用

有過C語言編程經驗的朋友都知道在C語言中如果要引用sqrt函數,必須用語句#include 引入math.h這個頭文件,否則是無法正常進行調用的。

那么在Python中,如果要引用一些其他的函數,該怎么處理呢?

在Python中有一個概念叫做模塊(module),這個和C語言中的頭文件以及Java中的包很類似,比如在Python中要調用sqrt函數,必須用import關鍵字引入math這個模塊,下面就來了解一下Python中的模塊。

說的通俗點:模塊就好比是工具包,要想使用這個工具包中的工具(就好比函數),就需要導入這個模塊

1.1.1import

在Python中用關鍵字import來引入某個模塊,比如要引用模塊math,就可以在文件最開始的地方用import math來引入。

形如:

import module1,mudule2

當解釋器遇到import語句,如果模塊在當前的搜索路徑就會被導入。

在調用math模塊中的函數時,必須這樣引用:

模塊名.函數名

因為可能存在這樣一種情況:在多個模塊中含有相同名稱的函數,此時如果只是通過函數名來調用,解釋器無法知道到底要調用哪個函數。所以如果像上述這樣引入模塊的時候,調用函數必須加上模塊名


有時候我們只需要用到模塊中的某個函數,只需要引入該函數即可,此時可以用下面方法實現:

? ?from ?模塊名 ?import ?函數名1,函數名2....

不僅可以引入函數,還可以引入一些全局變量、類等

注意:

o通過這種方式引入的時候,調用函數時只能給出函數名,不能給出模塊名,但是當兩個模塊中含有相同名稱函數的時候,后面一次引入會覆蓋前一次引入。也就是說假如模塊A中有函數function( ),在模塊B中也有函數function( ),如果引入A中的function在先、B中的function在后,那么當調用function函數的時候,是去執行模塊B中的function函數。

如果想一次性引入math中所有的東西,還可以通過from math import *來實現

1.1.1from…import

Python的from語句讓你從模塊中導入一個指定的部分到當前命名空間中

語法如下:

? ? ? ?from ? modname ? import ? name1[, name2[, ... nameN]]

例如,要導入模塊fib的fibonacci函數,使用如下語句:

注意

·不會把整個fib模塊導入到當前的命名空間中,它只會將fib里的fibonacci單個引入

1.1.1from … import *

把一個模塊的所有內容全都導入到當前的命名空間也是可行的,只需使用如下聲明:

注意

這提供了一個簡單的方法來導入一個模塊中的所有項目。然而這種聲明不該被過多地使用。

1.1.1as


1.1.1定位模塊

當你導入一個模塊,Python解析器對模塊位置的搜索順序是:

1.當前目錄

2.如果不在當前目錄,Python則搜索在shell變量PYTHONPATH下的每個目錄。

3.如果都找不到,Python會察看默認路徑。UNIX下,默認路徑一般為/usr/local/lib/python/

模塊搜索路徑存儲在system模塊的sys.path變量中。變量里包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。

1.1模塊制作

1.1.1定義自己的模塊

在Python中,每個Python文件都可以作為一個模塊,模塊的名字就是文件的名字。

比如有這樣一個文件test.py,在test.py中定義了函數add

test.py

1.1.1調用自己定義的模塊

那么在其他文件中就可以先import test,然后通過test.add(a,b)來調用了,當然也可以通過from test import add來引入

main.py

1.1.1測試模塊

在實際開中,當一個開發人員編寫完一個模塊后,為了讓模塊能夠在項目中達到想要的效果,這個開發人員會自行在py文件中添加一些測試信息


python在執行一個文件時有個變量__name__

總結:

·可以根據__name__變量的結果能夠判斷出,是直接執行的python腳本還是被引入執行的,從而能夠有選擇性的執行測試代碼

·__name__如果寫在被直接運行的主文件中,是”__main__”

·如果寫在被導入的文件中,運行主文件的時候,導入文件中的__name__是”模塊的名字”

1.1模塊中的__all__

·如果一個文件中有__all__變量,那么也就意味著這個變量中的元素,不會被from xxx import *時導入


1.1python中的包

1.1.1引入包

有2個模塊功能有些聯系

所以將其放到同一個文件夾下

使用import文件.模塊 的方式導入

使用from文件夾import模塊 的方式導入

在msg文件夾下創建__init__.py文件

在__init__.py文件中寫入

重新使用from文件夾import模塊 的方式導入

總結:

·包將有聯系的模塊組織在一起,即放到同一個文件夾下,并且在這個文件夾創建一個名字為__init__.py文件,那么這個文件夾就稱之為包

有效避免模塊名稱沖突問題,讓應用組織結構更加清晰

1.1.1__init__.py文件有什么用

__init__.py控制著包的導入行為

1.1.1.1__init__.py為空

僅僅是把這個包導入,不會導入包中的模塊

1.1.1.1__all__

在__init__.py文件中,定義一個__all__變量,它控制著from包名import *時導入的模塊

1.1模塊發布

1.mymodule目錄結構體如下:

2.編輯setup.py文件

py_modules需指明所需包含的py文件

3.構建模塊

python setup.py build

構建后目錄結構


4.生成發布壓縮包

python setup.py sdist

打包后,生成最終發布壓縮包yongGe-1.0.tar.gz ,目錄結構

1.1模塊安裝、使用

1.1.1.1安裝的方式

1.找到模塊的壓縮包

2.解壓

3.進入文件夾

4.執行命令python setup.py install

注意:

·如果在install的時候,執行目錄安裝,可以使用python setup.py install --prefix=安裝路徑

1.1.1.1模塊的引入

在程序中,使用from import即可完成對安裝的模塊使用

from模塊名import模塊名或者*

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1模塊 1.1Python中的模塊介紹和使用 有過C語言編程經驗的朋友都知道在C語言中如果要引用sqrt函數,必須...
    西多的大叔閱讀 1,835評論 0 0
  • 模塊簡介 在軟件開發過程中,隨著代碼的不斷增加,在一個問價里代碼就會越來越長,不容易維護。為了編寫可維護的代碼,我...
    齊天大圣李圣杰閱讀 816評論 0 0
  • 課程概要:1、認識Python 模塊2、字節編譯3、from … import 詳解4、認識 name 屬性5、自...
    LuCh1Monster閱讀 775評論 0 7
  • 《Python 源碼剖析》筆記 import 在交互環境下,使用不帶參數的dir()可以打印當前local命名空間...
    超net閱讀 3,041評論 1 6
  • 居于華南,時已十一月,襯衫薄裙尤嫌熱,有感于四時無序,填詞一首,請諸君賜教。 近來時令多顛倒, 寒日春朝。 可恨天...
    有兔煢煢閱讀 294評論 14 3