程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 模塊

編輯:Python


簡述

前面,我們分享的所有示例程序幾乎都是在 Python 的交互式 shell 中完成的。倘若從 shell 中退出,則之前所做的一切都會丟失。因此,如果要編寫較長的程序,最好是利用文本編輯器,將程序保存在文件中,然後將該文件作為解釋器的輸入來運行,這個過程被稱為創建腳本。

隨著程序的發展,功能會越來越多,通常需要將其拆分成好多個文件,以便使結構清晰、易於維護。除此之外,還可能想在多個程序中使用已編寫過的一些函數,而無需將其定義復制到每個程序中… 為此,可以將定義放在一個文件中,並在解釋器的交互模式下或者腳本中使用它,這樣的文件被稱為模塊。

| 版權聲明:一去、二三裡,未經博主允許不得轉載。

Python 中的模塊

模塊是一個包含 Python 代碼的 ​​.py​​ 文件

模塊既可以被導入到 Python 的交互式解釋器中,也可以被導入到其他模塊中,除此之外,模塊還可以作為獨立的腳本來執行。

導入模塊的動作由 ​​import​​​ 語句完成,通常(非必需)將所有的 ​​import​​ 語句放在一個模塊(或腳本)的開頭處,被導入的模塊名被放置在導入模塊的全局符號表中。

一個模塊可以包含可執行語句和函數定義,這些語句用於初始化模塊,它們僅在 ​​import​​ 語句中第一次遇到模塊名時執行(如果文件作為腳本執行,它們也會運行)。

Python 本身提供了大量的標准模塊(例如:​​math​​​、​​os​​​),完整的列表可以在 ​ ​Python Module Index​​ 中找到,這些文件位於 Python 安裝位置的 Lib 目錄中。

注意:標准模塊的導入方式與用戶自定義模塊的導入方式相同

import 語句

可以使用 ​​import​​​ 語句導入一個模塊,並使用點(​​.​​)運算符訪問其中的名稱(定義)。

例如,我們編寫了一個 ​​script.py​​​ 模塊,來訪問標准模塊 ​​math​​:

import math


print('pi:', math.pi)
print('fabs:', math.fabs(-2))
  • 1.
  • 2.
  • 3.
  • 4.

其中,​​pi​​​ 是 ​​math​​​ 的屬性,也就是數學中的圓周率 - ​​π​​​。而 ​​fabs()​​ 是其中的函數,用於取絕對值。

執行腳本:

$ python script.py

pi: 3.141592653589793
fabs: 2.0
  • 1.
  • 2.
  • 3.

如果要導入多個模塊,可以使用多個 ​​import​​ 語句:

import math

import os
  • 1.
  • 2.

也可以將其合並為一個,模塊名之間用逗號(​​,​​)進行分隔:

import math, os

  • 1.

推薦使用第一種方式,可讀性更好。雖然操作起來麻煩一些,但便於理解。

import ... as ... 語句

一旦模塊名稱過長,便可以在導入時進行重命名,幫助記憶。

例如,將 ​​math​​​ 重命名為 ​​m​​:

import math as m


print('pi:', m.pi)
print('fabs:', m.fabs(-2))

# 無效,引發 NameError
#print('pi:', math.pi)
#print('fabs:', math.fabs(-2))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

這裡,可以將 ​​m​​​ 看做是 ​​math​​​ 的一個別名,用 ​​m.pi​​ 的形式來訪問。

注意: 在這種情況下,名稱 ​​math​​ 不會被識別,它是無效的。

from ... import ... 語句

可以從模塊導入特定的名稱,而無需導入整個模塊。

例如,從 ​​math​​​ 模塊僅導入屬性 ​​pi​​:

from math import pi


print('pi:', pi)

# 無效,引發 NameError
#print('pi:', math.pi)
#print('fabs:', fabs(-2))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

這時,要訪問 ​​pi​​,不需要使用點運算符。

注意: 在這種情況下,由於只導入了 ​​pi​​​ 而沒有導入其他名稱,所以無法訪問 ​​fabs()​​。

from ... import * 語句

可以使用星號(​​*​​)從模塊中導入所有的名稱。

from math import *


print('pi:', pi)
print('fabs:', fabs(-2))
  • 1.
  • 2.
  • 3.
  • 4.

這樣,math 模塊中的所有定義都會被導入,這使得除了以下劃線(​​_​​)開始的所有名字在范圍內都是可見的。

注意: 這種用法並不好,因為會引入一組未知的名稱,而且有可能導致標識符的重復定義,可讀性很差,所以不建議使用。



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved