高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

模組

懂得用模組,你的人生就會是彩色的..

這已經不是一人個蠻幹的時代了,在Python,Module可以說是Python的生命也不為過。其實不管是哪種程式語言,不管是內建的函式庫,或是別人寫好的程式碼,可以直接拿來用,才有機會可以早早下班回家或在上班時間打混摸魚又可以把工作準時完成!

巨人的肩膀要怎麼踩

要把module給拉進來用,用的是import語法,不過import跟斯斯一樣也有兩種寫法,直接看程式碼看看有什麼不同:

imoprt module

1
2
import decimal
print decimal.Decimal('0.1') + decimal.Decimal('0.1') + decimal.Decimal('0.1') - decimal.Decimal('0.3')

另一種from..import..的用法:

1
2
from decimal import Decimal
print Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

如何安裝別人寫好的module

懂得如何善用官方/3rd party寫好的module,可以讓你事半功倍。若想知道該電腦裡是否有安裝某個module,最簡單的方法就是當你在import該module的時候會出現ImportError

>>> import django
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
ImportError: No module named django

動手寫 Module

老是靠別人寫好的,我們也來動手練習寫看看。

module也是Python程式碼而已

我們將建立兩個檔案test.pymy_mod.pytest.py是我們的主程式,而my_mod.py則是我們的module。

my_mod.py很單純,就只放了一個簡單的method:

1
2
def happy_python():
  print "Happy Python"

為了管理方便,我建了一個叫做happy的資料夾,裡面放了一個__init__.py的空檔案,並且把my_mod.py也一起放進去,整個資料夾的結構看起來會像這樣:

image

再來,我們的test.py主程式大概就長這樣:

1
2
import happy.my_mod
happy.my_mod.happy_python()

嫌看起來有點囉嗦嗎? 你也可以改用from..import..的方式來改寫:

1
2
from happy.my_mod import happy_python
happy_python()

其實寫模組沒想像中的困難吧 :)

那個__init__.py是幹嘛的?

每個套件裡都必須存在__init__.py這個檔案,它的目的就是告訴Python說這個資料夾請把它當做模組來對待。__init__.py可以是空的,也可以放一些變數或程式在裡面。

Comments