高見龍

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

Python簡介

What is Python?

Python的老爸是,Guido van Rossum,聽說是他在1989年的時候的某個聖誕節無聊,然後就設計出這套程式語言,1991年放出來給大家用,到目前已經有將近20年的歷史了。

目前主流的版本是2.x跟3.x系列,最新的版本目前分別是2.7.2版及3.2.2版,但2.x跟3.x有不少地方是不相容的,各位在使用時還請多留意。

設計哲學

the Zen of Python裡提到了Python的設計哲學:

There should be one-- and preferably only one --obvious way to do it.

這與其它程式語言例如Perl的"There is more than one way to do it"是完全不同的。

What can Python do?

Python是一種物件導向的語言,雖然它被歸類到scripting language一族,但它能做的事情跟一般的程式語言一樣,從數學運算、系統管理到網站開發,它都做得來的,而且都還做得不錯。

有人會覺得嫌Python很慢,老實說,我是不覺得慢到哪裡去。當然拿它跟編譯型的程式語言比當然不公平,不過也就是因為它不用編譯,而且語法很好學好寫,開發速度相對的會比編譯型的語言要來得高。

Who is using Python?

  • Google
  • Youtube
  • NASA
  • ..and ME!

Why Python?

每種程式語言都有它的優缺點,以下是我個人覺得我喜歡Python的一些特點:

程式碼強制縮排

在Python寫程式,程式碼強制一定要縮排,長得像這樣:

say hello
1
2
3
def say_hello():
  print "Hello Python"
  print "Hello again!"

像這樣,不管你是要用tab或空白(space)都可以,要縮2格或4格都ok,只要對齊就行了。只要程式碼沒有對齊,在執行的時候就會直接出現IndentationError的錯誤訊息而無法繼續執行。

也許有些人不喜歡這種被強制規定的感覺,不過我個人還滿喜歡的。在別的程式語言,有的人喜歡把大括號放在最後面,有人喜歡把大括號放下一行,像這樣:

大括號的位置
1
2
3
4
5
6
7
8
function type1(){
  // 把大括號放最後面
}

function type2()
{
  // 把大括號放下一行
}

這沒有誰好誰壞的問題,不過這個在Python就比較不會有這樣的困擾,也因為如此,即使你是接手別人的案子,基本上程式碼的長相也不會差太多。

而且我真的遇過程式碼不縮排或亂縮排的工程師..

支援多個平台

目前幾乎所有比較主流的平台上面都有支援了,也就是說你在Linux底下寫的程式,搬到Windows上也能執行。(當然前提是沒有用到一些系統特定的模組或method)

免費取得

不僅不用錢,而且連Python的原始碼都可以讓你帶回家研究。

開發工具易取得

其實寫Python不用什麼特別的開發工具,基本上只要是一般的文字編輯器就可以了。也有一些像PyDev這種為Python量身打造的IDE(Integrated Development Environment)也不錯用,不過我個人偏好純文字編輯器,例如Vi,至少開啟速度快,而且搭配一些好用的外掛,該有的功能都差不多該有了。

其它

電腦程式語言幾乎都是外國人的世界,你有想過用中文可以寫程式嗎? 有個叫做周蟒的專案做到了。這是用中文寫出來的Python程式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env zhpy
# 檔名: if.py
數字 = 23
猜測 = 整數(輸入('輸入一個數字: '))
如果 猜測 == 數字:
    印出 '恭喜, 你猜對了.' # 一個新區塊的開始
    印出 '(但沒有獎品喔!)' # 新區塊的結束
假使 猜測 < 數字:
    印出 '錯了, 數字再大一點.' # 另一個區塊
    # 你可以在區塊中做任何想做的事 ...
否則:
    印出 '錯了, 數字再小一點.'
    # 只有在猜測 > 數字 的情況下才會跑到這個區塊來
印出 '結束'
# 最後一行語句和"如果..假使..否則"語句是無關的,
# 因為最後的'印出'這行在主區塊中出現,所以這行永遠會被執行.

好寫嗎? 這見人見智了,不過挺有趣的,有興趣的朋友可以玩看看 :)

Comments