python的模塊的導入(python中模塊的導入)

  • 1、Python怎麼導入gm.api模塊
  • 2、python導入模塊的方法有哪些
  • 3、python導入模塊的「最佳實踐」是什麼?
  • 4、如何將模板文檔導入python並創建
  • 5、如何導入python中的模塊

1.將依賴包目錄放置到*:\Python*\Lib\site-packages\中,即python的安裝目錄中。 首先確定API目錄下是否有__init__.py文件,如果沒有,請新建一個。

2.打開API主運行文件,查看裡面的類名稱。此處為main.py文件,類為class dcVerCode。

3.此處以導入main中的類dcVerCode為例。 打開__init__.py,輸入: from main import dcVerCode 這樣就完成了依賴包的指定。

4. 運行環境:Python 2.6 – 2.7 依賴:無任何依賴。安裝:pip install sinaweibopy

方法一

import modname

模塊是指一個可以交互使用,或者從另一Python 程序訪問的代碼段。只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。模塊可以通過這種方法來使用其它模塊的功能。

用import語句導入模塊,就在當前的名稱空間(namespace)建立了一個到該模塊的引用.這種引用必須使用全稱,也就是說,當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用 funcname,而應該使用 modname.funcname

方法二

from modname import funcname

from modname import fa, fb, fc

或者

from modname import *

與第1種方法的區別:funcname 被直接導入到本地名字空間去了,所以它可以直接使用,而不需要加上模塊名的限定* 表示,該模塊的所有公共對象(public objects)都被導入到 當前的名稱空間,也就是任何只要不是以」_」開始的東西都會被導入。

modname沒有被定義,所以modname.funcname這種方式不起作用。並且,如果funcname如果已經被定義,它會被新版本(該導入模塊中的版本)所替代。如果funcname被改成指向其他對象,modname不能不會覺察到。

建議:

1)如果你要經常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用 from module import

2)如果你想要有選擇地導入某些屬性和方法,而不想要其它的,使用 from module import

3)如果模塊包含的屬性和方法與你的某個模塊同名,你必須使用import module來避免名字衝突

4)盡量少用 from module import * ,因為判定一個特殊的函數或屬性是從哪來的有些困難,並且會造成調試和重構都更困難。

方法三

內建函數__import__()

除了前面兩種使用import關鍵字的方法以外,我們還可以使用內建函數 __import__() 來導入 module。兩者的區別是,import 後面跟的必須是一個類型(type),而__import__() 的參數是一個字元串,這個字元串可能來自配置文件,也可能是某個表達式計算結果。例如:

mymodule = __import__ (』module_name』)

附註:

1)模塊的內容都放在一個模塊文件中,如 mymodule 的內容應該放在PYTHONPATH 目錄下的一個mymodule.py中,C實現的除外

2)包可以將幾個模塊名稱空間組織起來, 如A.b 就表示在包A中的一個子模塊b

可以單獨導入某一個子模塊,如Python文檔中給出的例子

import sound.effects.echo

這樣必須使用全稱對裡面的對象進行引用,如

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

還可以使用下面的語句來載入echo子模塊

from Sound.Effects import echo

它在沒有包前綴的情況下也可以使用, 所以它可以如下方式調用:

echo.echofilter(input, output, delay=0.7, atten=4)

不主張從一個包或模塊中用import * 導入所有模塊,因為這樣的通常會導致可讀性很差。

from Package import specific_submodule的用法並沒有錯,實際上這還是推薦的用法,除非導入的模塊需要使用其它包中的同名子模塊(the importing module needs to use submodules with the same name from different packages).

綜上所述,一般情況應該使用import , 但有幾個例外

1)module文檔告訴你要用from-import的

2)導入一個包組件。需要一個包裡面的某個子模塊,一般用from A.b import c比import A.b.c 更方便 且不會冒混淆的危險.

通常,不要使用from modulename import *。這樣做會使導入器的命名空間變得混亂,並且使得連接器更難以檢測未定義的名稱。

在文件的頂部導入模塊。這樣做可以清楚地了解代碼所需的其他模塊,並避免了模塊名稱是否在範圍內的問題。每行導入一個模塊可以輕鬆添加和刪除導入的模塊,但每行導入多個模塊會佔用更少的屏幕空間。

如果按以下順序導入模塊,這是一種很好的做法:

1.標準庫模塊 — 例如:sys,os,getopt,re

2.第三方庫模塊(安裝在Python的site-packages目錄中的任何內容) — 例如mx.DateTime,ZODB,PIL.Image等

3.本地開發的模塊

有時需要將模塊導入語句移動到函數或類裡面,以避免循環導入問題。Gordon McMillan 說:

當兩個模塊都使用 “import module” 的導入形式時,循環導入就可以了。但是當第 2 個模塊想從第 1 個模塊中獲取一個名稱 (“from module import name”) 並且導入位於頂層時,就會出錯。 這是因為第 1 個模塊中的名稱還不可用,因為第 1 個模塊正在忙著導入第 2 個模塊。

在這種情況下,如果第二個模塊僅用於一個函數,則可以輕鬆地將模塊導入語句移動到該函數中。調用導入時,第一個模塊將完成初始化,第二個模塊可以進行導入。

如果某些模塊是特定於平台的,則可能還需要將模塊導入語句移出頂級代碼。在這種情況下,甚至可能無法導入文件頂部的所有模塊。在這種情況下,在相應的特定於平台的代碼中導入正確的模塊是一個很好的選擇。

只有當需要解決諸如避免循環導入或試圖減少模塊初始化時間的問題時,才可以將導入移動到本地範圍,例如在函數定義中。如果根據程序的執行方式,許多導入是不必要的,這種技術尤其有用。如果僅在某個函數中使用模塊,您還可能希望將導入移到該函數中。請注意,第一次載入模塊可能會因為模塊的一次初始化而代價高昂,但多次載入模塊實際上是免費的,只需進行幾次字典查找。即使模塊名稱超出了作用域,模塊也可能在 sys.modules 中可用。

模板文檔導入python並創建的方法如下:

1.1 需要導入的模板在同一文件夾中

比如admin.py調用test.py模板,可以在admin.py中直接執行

因為python解釋器查找模塊時會找同一文件夾,所以不用導入路徑名。

1.2 需要導入的模板在當前文件夾的子文件夾中

比如 manage.py調用setting.py模板,可以在manage.py中直接執行

無需加其他路徑說明,因為 crm 也是一個模塊(模塊的集合)。

1.3 需要導入的模板在父文件夾中

比如admin.py想調用surround.py模板(在admin.py父文件夾project下),因為解釋器找模塊只會去本文件夾及本文件夾的子文件夾去找,不會去父文件夾找,為什麼?試試看,先在admin.py中執行

當一個的模塊被導入的時候,解釋器首先尋找具有該名稱的內置模塊。如果沒有找到,然後解釋器從 sys.path 變數給出的目錄列表裡尋找該模板。所以輸出結果可以看到是一個路徑列表,其它路徑不需要看,只看第一項

說明解釋器就是從 pro文件夾開始往下找,而surround.py是在 project/crm文件夾下,顯然是找不到的。解決方法,在admin.py中執行手動把相應的路徑添加到 sys.path 中就可以了,這樣導入就相當於可以從添加的相應路徑開始往下找模塊了。可以找到,結果也不會報錯。

定義模塊,只要使用文本編輯器,把一些python代碼輸入到文本中,然後以.py為後綴名進行保存,任何此類文件都會被認為是python模塊。

比如說,下面的代碼輸入到一個文件中,就可以看作是一個模塊:

def

printme(var):

print

varif

__name__

==

‘__main__’:

printme(1)

假設說輸入到a.py中,那麼import

a就可以把這個模塊導入。

然後可執行a.printme(3),屏幕即可列印出3:

a.printme(3)3

一個模塊頂層定義的變數,會自動變成模塊的屬性。例如:

data=[1,2,3]def

printme(var):

print

varif

__name__

==

‘__main__’:

printme(1)

data變數就是模塊的一個屬性。其實printme也是一個屬性,只不過是一個函數罷了。

引入模塊示例如下:(假定此時data=[1,2,3]未定義)

import

a

a.data

Traceback

(most

recent

call

last):

File

“pyshell#1”,

line

1,

in

module

a.dataAttributeError:

‘module’

object

has

no

attribute

‘data’

reload(a)module

‘a’

from

‘C:/py\a.pyc’

a.data

Traceback

(most

recent

call

last):

File

“pyshell#3”,

line

1,

in

module

a.dataAttributeError:

‘module’

object

has

no

attribute

‘data’

從上述提示可以看出data屬性未定義,此時再在a.py文件中定義data=[1,2,3],重新載入a模塊,並輸出data屬性:

reload(a)module

‘a’

from

‘C:/py\a.py’

a.data[1,

2,

3]

這裡的reload函數可以重新載入一個模塊。如果在模塊代碼中更改了,那麼需要重新載入。

上面a.data,就是訪問模塊中的屬性。

上面的例子是導入一個文件作為一個模塊。

其實python的模塊導入還有更豐富的內容。

除了模塊名之外,python也可以導入指定目錄路徑。python代碼的目錄就稱為包。因此,這類導入就稱為包導入。事實上,包導入是把計算機上的目錄變成python的一個命名空間。而屬性就是目錄中包含的子目錄或者是模塊文件。

看下面例子:

在我的桌面上有一個aa文件夾,裡面有bb文件夾,bb裡面有a.py這個文件。

那麼在aa和bb文件夾中分別放置一個__init__.py,之後,在命令行中import

aa.bb.a,就可以導入模塊a了。

原創文章,作者:W1HXK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127252.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
W1HXK的頭像W1HXK
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論