Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對(duì)象和類

Python 日期和時(shí)間

Python 高級(jí)知識(shí)

Python 參考手冊(cè)

Python 模塊

在本文中,您將學(xué)習(xí)如何用Python創(chuàng)建和導(dǎo)入自定義模塊。此外,您還將發(fā)現(xiàn)在Python中導(dǎo)入和使用定制和內(nèi)置模塊的不同技術(shù)。

Python中的模塊是什么?

模塊是指包含Python語句和定義的文件。

包含Python代碼的文件,例如:example.py,稱為模塊,其模塊名稱為example。

我們使用模塊將大型程序分解為可管理的小型文件。此外,模塊提供了代碼的可重用性。

我們可以在模塊中定義最常用的函數(shù)并將其導(dǎo)入,而不是將其定義復(fù)制到其他程序中。

讓我們創(chuàng)建一個(gè)模塊。輸入以下內(nèi)容并將其另存為example.py。

# Python模塊示例
def add(a, b):
   """這個(gè)程序兩個(gè)數(shù)字相加
       并返回相加的結(jié)果"""

   result = a + b
   return result

這里,我們?cè)谝粋€(gè)名為example的模塊中定義了一個(gè)add()函數(shù)。該函數(shù)接受兩個(gè)數(shù)字并返回它們的和。

如何在Python中導(dǎo)入模塊?

我們可以將模塊內(nèi)部的定義導(dǎo)入另一個(gè)模塊或Python中的交互式解釋器。

我們使用import關(guān)鍵字來做到這一點(diǎn)。要導(dǎo)入我們先前定義的模塊,example我們?cè)赑ython提示符下鍵入以下內(nèi)容。

>>> import example

這不會(huì)example直接在當(dāng)前符號(hào)表中輸入定義的功能名稱。它僅在example此處輸入模塊名稱。

使用模塊名稱,我們可以使用點(diǎn). 運(yùn)算符訪問函數(shù)。例如:

>>> example.add(4,5.5)
9.5

Python有大量可用的標(biāo)準(zhǔn)模塊。

您可以查看Python標(biāo)準(zhǔn)模塊的完整列表及其  用途。這些文件位于Python安裝位置內(nèi)的Lib目錄中。

可以像導(dǎo)入用戶定義的模塊一樣導(dǎo)入標(biāo)準(zhǔn)模塊。

有多種導(dǎo)入模塊的方法。它們列出如下。

Python導(dǎo)入語句

我們可以使用import語句導(dǎo)入模塊,并如上所述使用點(diǎn)運(yùn)算符訪問其內(nèi)部的定義。這是一個(gè)實(shí)例。

# 導(dǎo)入語句示例
# 導(dǎo)入標(biāo)準(zhǔn)模塊數(shù)學(xué)

import math
print("π的值", math.pi)

運(yùn)行該程序時(shí),輸出為:

π的值 3.141592653589793

重命名導(dǎo)入

我們可以通過如下重命名導(dǎo)入模塊。

# 通過重命名導(dǎo)入模塊

import math as m
print("π的值", m.pi)

我們已將math模塊重命名為m。在某些情況下,這可以節(jié)省我們的書寫時(shí)間。

請(qǐng)注意,該名稱math在我們的范圍內(nèi)無法識(shí)別。因此,math.pi無效的,而m.pi是正確的使用方式。

Python from ... import語句

我們可以從模塊導(dǎo)入特定名稱,而無需整體導(dǎo)入模塊。這是一個(gè)實(shí)例。

# 從數(shù)學(xué)模塊僅導(dǎo)入pi

from math import pi
print("π的值", pi)

我們僅從模塊導(dǎo)入屬性pi。

在這種情況下,我們不使用點(diǎn)運(yùn)算符。我們可以如下導(dǎo)入多個(gè)屬性。

>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045

導(dǎo)入所有名稱

我們可以使用以下構(gòu)造從模塊導(dǎo)入所有名稱(定義)。

# 從標(biāo)準(zhǔn)模塊math中導(dǎo)入所有名稱

from math import *
print("pi的值", pi)

我們從數(shù)學(xué)模塊中導(dǎo)入了所有定義。這使得除帶下劃線的beginnig之外的所有名稱在我們的范圍內(nèi)可見。

導(dǎo)入帶有星號(hào)(*)符號(hào)的所有內(nèi)容都不是一種好的編程習(xí)慣。這可能導(dǎo)致標(biāo)識(shí)符重復(fù)定義。這也會(huì)影響我們代碼的可讀性。

Python模塊搜索路徑

導(dǎo)入模塊時(shí),Python會(huì)在多個(gè)位置進(jìn)行檢查。解釋器首先尋找一個(gè)內(nèi)置模塊,然后(如果找不到)進(jìn)入定義的目錄列表sys.path。搜索按此順序進(jìn)行。

  • 當(dāng)前目錄。

  • PYTHONPATH (帶有目錄列表的環(huán)境變量)。

  • 與安裝有關(guān)的默認(rèn)目錄。

>>> import sys
>>> sys.path
['',
'C:\\Python33\\Lib\\idlelib',
'C:\\Windows\\system32\\python33.zip',
'C:\\Python33\\DLLs',
'C:\\Python33\\lib',
'C:\\Python33',
'C:\\Python33\\lib\\site-packages']

我們可以添加修改此列表以添加我們自己的路徑。

重新加載模塊

Python解釋器在會(huì)話期間僅導(dǎo)入一次模塊。這使事情更有效率。這是一個(gè)示例,說明其工作原理。

假設(shè)在名為的模塊中有以下代碼my_module。

# 該模塊顯示了
# 多個(gè)導(dǎo)入并重新加

print("這段代碼被執(zhí)行了")

現(xiàn)在我們看到了多次導(dǎo)入的效果。

>>> import my_module
這段代碼被執(zhí)行了
>>> import my_module
>>> import my_module

我們可以看到我們的代碼只執(zhí)行了一次。這說明我們的模塊僅導(dǎo)入了一次。

現(xiàn)在,如果我們的模塊在程序執(zhí)行過程中發(fā)生了變化,我們將不得不重新加載它。一種方法是重啟解釋器。但這并沒有太大幫助。

Python提供了一種簡(jiǎn)潔的方法。我們可以使用模塊reload()內(nèi)部的函數(shù)imp來重新加載模塊。這是怎么做的。

>>> import imp
>>> import my_module
這段代碼被執(zhí)行了
>>> import my_module
>>> imp.reload(my_module)
這段代碼被執(zhí)行了
<module 'my_module' from '.\\my_module.py'>

dir()內(nèi)置函數(shù)

我們可以使用dir()函數(shù)找出在模塊內(nèi)部定義的名稱。

例如,我們?cè)陂_始的模塊example中定義了一個(gè)add()函數(shù)。

>>> dir(example)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add']

在這里,我們可以看到一個(gè)已排序的名稱列表(以及add)。以下劃線開頭的所有其他名稱都是與模塊關(guān)聯(lián)的默認(rèn)Python屬性(我們自己沒有定義它們)。

例如,__name__屬性包含模塊的名稱。

>>> import example
>>> example.__name__
'example'

可以使用不帶任何參數(shù)的dir()函數(shù)找出當(dāng)前名稱空間中定義的所有名稱。

>>> a = 1
>>> b = "hello"
>>> import math
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']

                                                                                                                                                                                                   

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清