欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析python中的絕對導入和相對導入

 更新時間:2023年09月04日 10:44:38   作者:python收藏家  
這篇文章主要是想和大家簡單聊聊python中絕對導入和相對導入的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考下

在本文中,我們將看到Python中的絕對和相對導入。

Python中導入的工作

Python中的import類似于C/C++中的#include header_file。Python模塊可以通過使用import導入文件/函數(shù)來訪問其他模塊的代碼。import語句是調(diào)用import機制的最常見方式,但它不是唯一的方式。

import語句涉及兩個操作,它搜索模塊,并將搜索結(jié)果綁定到本地作用域中的名稱。當導入模塊時,Python會運行模塊文件中的所有代碼,并使其可用于導入器文件。當一個模塊被導入時,解釋器首先在sys.modules中搜索它,sys. modules是所有先前導入的模塊。如果沒有找到它,那么它將搜索所有具有該名稱的內(nèi)置模塊,如果找到它,那么解釋器將運行所有代碼并使其對文件可用。如果找不到模塊,它將在變量sys. path給出的目錄列表中搜索同名文件。path是一個變量,包含一個路徑列表,其中包含python庫、包和包含輸入腳本的目錄。

例如,導入一個名為math的模塊,然后解釋器在內(nèi)置模塊中搜索它,如果沒有找到,則在sys. path給出的目錄列表中搜索名為math.py的文件。

import math
print(math.pi)

import語句的語法

用戶可以導入包和模塊。注意導入一個包實際上是將包的__init__.py文件作為一個模塊導入。用戶還可以從包或模塊導入特定對象。通常有兩種類型的導入語法。當您使用第一個時,您直接導入資源。

import gxg

gxg可以是封裝或模塊。當用戶使用第二種語法時,則用戶從另一個包或模塊導入資源。

from gxg import geek

geek可以是模塊、子包或?qū)ο?,例如類或函?shù)。

導入語句的樣式

PEP 8是python的官方風格指南,它有一套規(guī)則來指導如何制定python代碼以最大限度地提高其可讀性。對于編寫import語句,有以下幾點:

1.導入應該總是寫在文件的頂部,就在任何模塊注釋和文檔字符串之后。

2.導入通常應該用空格分隔。

3.導入應按以下順序分組。

標準庫導入(Python的內(nèi)置模塊)

相關第三方庫

本地應用程序/庫特定導入

import math
import os
# Third party imports
from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
# Local application imports
from local_module import local_class
from local_package import local_function

Python中的絕對導入vs相對導入

絕對導入涉及完整路徑,即,從項目的根文件夾復制到所需的模塊。絕對導入狀態(tài),即資源將使用其完整路徑從項目的根文件夾導入。

語法和實例:

讓我們看看下面的目錄結(jié)構(gòu):

這里有一個名為project的目錄,下面有兩個子目錄,即pkg1、pkg2。pkg1有兩個模塊,module1和module2。pkg2包含三個模塊,module3、module4、init.py,以及一個子包名subpkg1,其中包含module5.py。讓我們假設以下情況:

  • pkg 1/module1.py包含一個函數(shù)fun 1
  • pkg 2/module3.py包含一個函數(shù)fun 2
  • pkg 2/subpkg 1/module5.py包含一個函數(shù)fun 3
# importing a fun1 from pkg1/module1
from pkg1.import module1 import fun1
from pkg1 import module2
# importing a fun2 from pkg2/module3
from pkg2 import module3 import fun2
# importing a fun3 from pkg2/subpkg1/module5
from pkg2.subpkg1.module5 import fun3

絕對導入的優(yōu)點和缺點

優(yōu)點:

絕對導入非常有用,因為它們是明確和直接的。

絕對導入很容易從導入的資源的位置準確地判斷出來,只需查看語句即可。

即使import語句的當前位置發(fā)生更改,絕對導入仍保持有效。

缺點:

如果目錄結(jié)構(gòu)非常大,則使用絕對導入沒有意義。在這種情況下,使用相對導入效果很好。

from pkg1.subpkg2.subpkg3.subpkg4.module5 import fun6

Python中的相對導入

相對導入指定從其當前位置導入的對象或模塊,該位置是import語句駐留的位置。有兩種類型的相對導入:

隱式相對導入-Python(3.x)中不允許隱式相對導入。

顯式相對導入-顯式相對導入已經(jīng)在Python(3.x)中獲得批準。

語法和實例:

相對導入的語法取決于當前位置以及要導入的模塊或?qū)ο蟮奈恢?。相對導入使用點(.)符號來指定位置。一個點表示模塊在當前目錄中,兩個點表示模塊在當前位置的父目錄中,三個點表示模塊在祖目錄中,依此類推。讓我們看看下面的目錄結(jié)構(gòu):

讓我們假設以下情況:

  • pkg 1/module1.py包含一個函數(shù)fun 1
  • pkg 2/module3.py包含一個函數(shù)fun 2
  • pkg 2/subpkg 1/module5.py包含一個函數(shù)fun 3
# importing fun1 into pkg1/module1.py
from .module1 import fun1
# importing fun2 and fun3 into pkg2/module3.py
from .module3 import fun2
from .subpackage1.module5 import fun3

相對導入的優(yōu)點和缺點

優(yōu)點:

使用相對導入簡潔明了。

基于當前位置,它降低了import語句的復雜性。

缺點:

相對導入不像絕對導入那樣易讀。

使用相對導入并不容易,因為很難告訴模塊的位置。

以上就是淺析python中的絕對導入和相對導入的詳細內(nèi)容,更多關于python導入的資料請關注腳本之家其它相關文章!

相關文章

  • pandas計算相關系數(shù)corr返回空的問題解決

    pandas計算相關系數(shù)corr返回空的問題解決

    本文主要介紹了pandas計算相關系數(shù)corr返回空的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • python中協(xié)程實現(xiàn)TCP連接的實例分析

    python中協(xié)程實現(xiàn)TCP連接的實例分析

    在本篇文章中我們給大家分享了python中協(xié)程實現(xiàn)TCP連接的代碼示例內(nèi)容,有需要的朋友們可以跟著學習下。
    2018-10-10
  • Python使用try except處理程序異常的三種常用方法分析

    Python使用try except處理程序異常的三種常用方法分析

    這篇文章主要介紹了Python使用try except處理程序異常的三種常用方法,結(jié)合實例形式分析了Python基于try except語句針對異常的捕獲、查看、回溯等相關操作技巧,需要的朋友可以參考下
    2018-09-09
  • 在Python中使用__slots__方法的詳細教程

    在Python中使用__slots__方法的詳細教程

    這篇文章主要介紹了在Python中使用__slots__方法的詳細教程,__slots__方法是Python的一個重要內(nèi)置類方法,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python如何將圖像音視頻等資源文件隱藏在代碼中(小技巧)

    Python如何將圖像音視頻等資源文件隱藏在代碼中(小技巧)

    有朋友問小編使用pyinstaller打包源碼時,因為代碼中使用了圖像、音頻、視頻等資源文件,無法將程序打包成單一的可執(zhí)行文件,怎么處理呢,下面小編通過代碼給大家介紹Python如何將圖像音視頻等資源文件隱藏在代碼中,感興趣的朋友一起看看吧
    2020-02-02
  • Python Django請求和響應對象詳解

    Python Django請求和響應對象詳解

    這篇文章主要給大家介紹了關于django的請求和響應對象,文中通過示例代碼介紹的非常詳細,對大家學習或者使用django具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • Python中關鍵字is與==的區(qū)別簡述

    Python中關鍵字is與==的區(qū)別簡述

    這篇文章主要介紹了Python中關鍵字is與==的區(qū)別,對于Python初學者有一定的借鑒學習價值,需要的朋友可以參考下
    2014-07-07
  • Python3+cgroupspy安裝使用簡介

    Python3+cgroupspy安裝使用簡介

    cgroups是Control groups的簡稱,是Linux內(nèi)核提供的一種限制進程使用和種系統(tǒng)資源的特性,這篇文章主要介紹了Python3+cgroupspy安裝使用教程,需要的朋友可以參考下
    2023-04-04
  • 關于Python作用域自學總結(jié)

    關于Python作用域自學總結(jié)

    在本文里我們給大家整理了關于python自學作用域的相關知識點以及實例代碼,需要的朋友們跟著學習下。
    2019-06-06
  • Python編寫Windows Service服務程序

    Python編寫Windows Service服務程序

    這篇文章主要為大家詳細介紹了Python編寫Windows Service服務程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論