python導入模塊--案例

1 導入模塊

1.1 問題

本案例要求先編寫一個star模塊,主要要求以下:python

  • 創建工做目錄 ~/bin/
  • 建立模塊文件 ~/bin/star.py
  • 模塊中建立pstar函數,實現打印50個星號的功能

而後練習導入模塊,調用模塊中的函數:linux

  • 在交互解釋器中導入模塊
  • 調用模塊的函數

1.2 方案

使用vim看成文本編輯器編寫python腳本,使用RHEL6系統中自帶的python解釋器加載模塊。shell

注意,模塊及函數在後續課程中有詳細介紹,這裏只是由於常常要用到導入模塊,因此須要大體瞭解一下。vim

模塊支持從邏輯上組織python代碼。當代碼量變得至關大的時候,最好把代碼分紅一些有組織的代碼段,前提是保證它們的彼此交互。編輯器

這些代碼段是共享的,因此python容許調入一個模塊,容許使用其餘模塊的屬性來利用以前的工做成果,實現代碼重用。這個把其餘模塊中屬性附加到你的模塊中的操做叫作導入(import)。函數

給定一個模塊名以後,只可能有一個模塊被導入到python解釋器中,因此在不一樣模塊間不會出現名稱交叉現象;每一個模塊都定義了它本身的惟一的名稱空間,訪問一個模塊的屬性可使用句點表示法,比訪問star模塊中的pstar函數的寫法爲:star.pstar()。測試

1.3 步驟

實現此案例須要按照以下步驟進行。spa

步驟一:建立目錄結構regexp

Linux在執行命令時,它會到PATH環境變量定義的路徑中去查找,若是查到則執行,若是查不到則提示命令找不到。orm

爲了使得編寫的腳本在任意位置能夠直接執行,並支持按TAB鍵補齊,最好將命令放到PATH環境變量定義的路徑中。

在Linux系統中,每一個用戶的家目錄下的bin目錄,默認在PATH環境變量中,可是系統默認並無建立該目錄。

  1. [root@py01 ~]# echo $PATH
  2. /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

2)根據PATH變量內容建立bin目錄

 
  1. [root@py01 ~]# mkdir /root/bin

步驟二:建立模塊文件

1)建立模塊文件

python的模塊名就是腳本文件名去掉.py的擴展名,因此star模塊的文件名就是star.py。

在建立文件時,不要使用python已有的模塊名。由於在import模塊時,若是本身建立的模塊文件和python自帶的模塊重名,那麼,用戶本身建立的模塊將被導入,用戶也就沒法使用python自身的模塊了。

判斷python是否擁有某個模塊,最簡單的辦法就是,進入到python交互解釋器中,而後執行import命令,若是提示ImportError則表示python默認沒有該模塊。

 
  1. [root@py01 ~]# cd bin
  2. [root@py01 ~]# vim star.py

2)編寫pstar函數

像shell本同樣,python腳本文件的第一行也是解釋器。

在python中,使用def定義函數,def後面緊跟函數名,函數名後面是一對圓括號,圓括號包含可選的參數。

須要注意的是,()並非函數名的一部分,另外最後不要丟掉冒號。在python中,若是一個關鍵字後面有子語句塊,那麼該關鍵字的行尾都須要加冒號。

函數體部分(代碼組)必須縮進,通常縮進4個空格,並且全部的子語句必須縮進相同的空白。

函數定義只是說有這樣的功能,並不執行。因此該程序文件若是直接以腳本的方式執行,那麼它不會產生任何輸出。

 
  1. #!/usr/bin/env python
  2. def pstar():
  3. print '*' * 50

步驟三:導入模塊並測試

在這裏須要注意的是,須要在模塊文件所在的目錄下打開交互解釋器。由於python在導入模塊時會在固定的幾個位置去搜索模塊,若是找到則導入,不然將出錯。當前的工做目錄也是python在搜索模塊時會查找的路徑。

 
  1. [root@py01 bin]# python
  2. Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48)
  3. [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import star

解釋器須要知識執行的是哪一個模塊中的函數,因此寫法應該是:「模塊.函數」。

注意,函數名後面的圓括號不要丟掉,python調用函數使用圓括號,表示執行該函數的意思。若是沒有圓括號,只是引用,不調用,也就是不會執行該函數。

 
  1. >>> star.pstar()
  2. **************************************************
相關文章
相關標籤/搜索