零基礎學python Import 模組

2021-06-28 01:19:12 字數 4261 閱讀 3695

對於模組,在前面的一些舉例中,已經涉及到了,比如曾經有過:import random (獲取隨機數模組)。為了能夠對模組有乙個清晰的了解,首先要看看什麼模組,這裡選取官方文件中對它的定義:

都是洋碼子,翻譯一下不?不!還是只說要點:

那麼,那個import random的檔案在**呢?

用曾經講過的那個法寶:help()函式看看:

>>> help(random)
然後就出現:

name

random - random variable generators.

file

/usr/local/lib/python2.7/random.py

module docs

description

...

這裡非常明顯的告訴我們,random模組的檔案就是: /usr/local/lib/python2.7/random.py(注意:這個位址是我的計算機中的位址,可能跟看官的不一樣,特別是如果看官用的是windows,肯定跟我這個不一樣了。)

看官這時候可能有疑問了,import是怎麼找到那個檔案的?類似檔案怎麼寫?不用著急,這些我都會一一道來。

看了前面的random這個例子,看官可能立刻想到乙個問題:是不是已經有人把很多常用的功能都寫成模組了?然後使用者只需要用類似方法呼叫即可。的確是,比如上面顯示的,就不是某個程式設計師在使用的時候自己編寫的,而是在安裝python的時候,就被安裝在了計算機裡面。觀察那個檔案儲存位址,就知道了。

我根據上面得到的位址,列出/usr/local/lib/python2.7/裡面的檔案,這些檔案就是類似random的模組,由於是python安裝就有的,算是標配吧,給它們乙個名字「標準模組庫」,簡稱「標準庫」。

這張圖列出了很少一部分存在這個目錄中的模組檔案。

python的標準庫(standard library)是python的乙個組成部分,也是python為的利器,可以讓程式設計事半功倍。

如果看官有時間,請經常訪問:這裡列出了所有標準庫的使用方法。

有一點,請看官特別注意,對於標準庫而言,由於內容太多,恐怕是記不住的。也不用可以的去記憶,只需要知道有這麼乙個東西。如果在編寫程式的時候,一定要想到,對於某個東西,是不是會有標準庫支援呢?然後就到google或者上面給出的位址上搜尋。

舉例:

>>> import sys  #匯入了標準庫sys

>>> dir(sys) #如果不到網頁上看,用這種方法可以檢視這個標準庫提供的各種方法(函式)

>>> sys.platform #比如這個

'linux2'

>>> sys.version #還有這個

'2.7.6 (default, nov 13 2013, 19:24:16) \n[gcc 4.6.3]'

>>> help(sys.stdin) #這是檢視某個模組方法具體內容的方式

標準庫,在程式設計中經常用到。這裡不贅述。只要看官能夠知道在**找、如何找所需要的標準庫即可。

看官可能比較喜歡「自己動手,豐衣足食」(雖然真的不一定是豐衣足食),在某些必要的時候,還真得自己動手寫一些模組。那麼怎麼編寫模組呢?

前面已經交代,模組就是.py檔案,所以,只要將某些語句寫到乙個.py檔案中,它就是乙個模組了。沒有什麼太多的秘密。

在某個目錄下面建立了乙個檔案,名稱是:mmmm.py,如下圖所示,然後編輯這個檔案內容。編輯好後儲存。

**是檔案內容:

#!/usr/bin/env python

#coding:utf-8

web = ""

def my_name(name):

print name

class pythoner:

def __init__(self,lang):

self.lang = lang

def programmer(self):

print "python programmer language is: ",self.lang

圖示是檔案所在目錄,並且在該目錄下開啟了python的互動模式(我這是在ubuntu下,看官是別的作業系統的化,注意路徑,如果遇到問題,可以暫時擱置,看下文)。

從圖中可以看出,當前目錄中有這個檔案:mmmm.py

在互動模式下,仿照對標準庫模組的操作方式:

>>> import mmmm

>>> dir(mmmm)

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'my_name', 'pythoner', 'web']

>>> mmmm.__doc__ #這個是空的,正是,因為我未曾寫過任何文件說明

>>> mmmm.__name__ #名字

'mmmm'

>>> mmmm.__file__ #檔案

'mmmm.py'

再看後面的:my_name,pythoner,web,都是我在內容中自己寫的。

>>> mmmm.web

''

web是模組mmmm中的乙個通過賦值語句建立的變數,在這裡,它程式設計了mmmm的屬性,能夠通過點號運算訪問,其實不僅僅是這型別的賦值,其它通過def,class等,都能做為mmmm模組的屬性。

>>> mmmm.my_name

>>> mmmm.pythoner

當然,跟操作標準庫一樣,一樣能夠使用help()來看看這些屬性的具體內容:

>>> help(mmmm.my_name)

help on function my_name in module mmmm:

my_name(name)

>>> help(mmmm.pythoner)

help on class pythoner in module mmmm:

class pythoner

| methods defined here:

| | __init__(self, lang)

| | programmer(self)

怎麼呼叫呢?這樣即可:

>>> mmmm.my_name("qiwsir")

qiwsir

當呼叫模組中的函式的時候,用模組的名稱(import mmmm)+點號+函式(注意,函式後面要有括號,如果有引數,括號裡面跟引數),即 module_name.funciton(*args)

>>> py = mmmm.pythoner("c++")   

>>> py.programmer()

python programmer language is: c++

上面兩行,則是演示用繫結的方法呼叫模組中的類以及類的例項方法。跟以往的相比較,似乎都是在前面多了乙個mmmm.

如果感覺這個mmmm比較麻煩,可以用from,具體是這樣的:

>>> from mmmm import *

>>> my_name('qiwsir')

qiwsir

>>> web

''>>> py = pythoner("c++")

>>> py.programmer()

python programmer language is: c++

這次不用總寫那麼mmmm了。兩種方式,哪個更好呢?沒有定論。看官在以後的實踐中體會,什麼時候用什麼方式。

上面用from mmmm import ,其中符號,表示將所有的都import進來,用這個方法,也可以只import一部分,如同:

>>> from mmmm import my_name    #如果看官前面執行了上述操作,需要關閉互動模式,

#再重啟,才能看到下面過程

>>> my_name("qiwsir")

qiwsir

>>> web #沒有import這個,所以報錯。

traceback (most recent call last):

file "", line 1, in nameerror: name 'web' is not defined

這就是基本的import模組方法。看官的疑問,還要存著。且聽下回分解。

零基礎學Python

零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...

零基礎學C C

零基礎學c c 零基礎學c c 199 孿生素數 題目描述 在素數的大家庭中,大小相差為2的兩個素數稱之為一對 孿生素數 如3和5 17和19等。請你程式設計統計出不大於自然數n的素數中,孿生素數的對數。輸入一行乙個正整數n 1 n 10000 輸出若干行,每行2個整數,之間用乙個空格隔開,從小到大...

零基礎學python 一

每次學習語言總是要了解其背景python也不例外。首先python的創始人為 guido van rossum 1989年聖誕節期間,在 阿姆斯特丹 guido為了打發聖誕節的無趣,決心開發乙個新的指令碼 解釋程式 做為abc 語言的一種繼承。看看人家外鬼子程式設計師 哎不得不佩服。他在業餘時間開發...