模塊

在計算機程序開發過程中,隨着程序代碼越來越多,在一個文件裏的代碼越來越多,越來越不容易維護

爲了編寫可以維護的代碼,我們把很多模塊分組,分別放在不同的文件裏,這樣每個文件裏面包含的代碼就相對的少

在Python中,每個.py就是一個模塊(module)

優點

  1. 提高了代碼的可維護性
  2. 每個模塊都是可重用的
  3. 避免函數名和變量名衝突

模塊分爲三類

  1. 內置模塊
  2. 第三方模塊
  3. 自定義模塊

導入模塊

#導入xxx模塊
import xxx

#從xxx導入xx
from xxx import xx

#起別名x
from xxx import xx as x

#將xxx模塊全部導入,調用時不需要xxx.了(不推薦使用)
from xxx import * 

安裝第三方模塊

pip install xxx

卸載第三方模塊

pip uninstall xxx

默認會使用python官方服務器下載,速度比較慢,可以改用國內的源

(從豆瓣安裝並將該網址信任)

pip install -i http://pypi.douban.com/simple xxx --trusted-host pypi.douban.com

 

 

當你的模塊越來越多,就需要對模塊進行劃分,根據不同的功能分爲多個目錄,一個目錄管理多個模塊文件,這個目錄稱爲包

包裏面應該有一個__init__.py文件,用於告訴python解析器這是一個包,

示例

#文件路徑

imports
    ---text
        ---__init__.py
        ---text1.py
    ---proj
        ---__init__.py
        ---proj1.py
    ---模塊.py

 

在模塊.py中導入text1.py文件

from text import text1

在text1.py中導入proj.py文件

import sys
print(sys.path).   #打印python的環境變量,第一個''是當前目錄

sys.path.append('/Users/sunlizhao/PycharmProjects/imports')    #將目錄路徑寫入到環境變量中(當前文件有效)

print(sys.path)

現在就可以在text1.py中導入proj.py文件了

from proj import proj1.py

但是這樣就把路徑給寫死,如果項目更換平臺就會報錯

獲取當前文件路徑

print(__file__)
#/Users/sunlizhao/PycharmProjects/imports/text/text1.py

但是我們只想獲取到imports目錄這一層

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print(BASE_DIR)

#/Users/sunlizhao/PycharmProjects/imports

發現這樣就向上了兩層目錄

然後將目錄添加到環境變量

sys.path.append(BASE_DIR)
print(sys.path)

這樣在pycharm中成功了,但是在終端中很可能會失敗,找了一下原因__file__還不是絕對路徑

import sys,os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

from proj import proj1 

 

 

相對路徑(路徑關係比較嚴格,不常用)

相對路徑往上翻不能到程序的目錄,在這個例子中,就是不能到imports目錄

這樣就需要重新更改一下目錄結構

imports
    ---tete
        ---text
            ---__init__.py
            ---text1.py
        ---proj
            ---__init__.py
            ---proj1.py
    ---模塊.py

在text1.py中導入proj1.py文件

from ..proj import proj1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章