Python 3 Tutorial 第三堂(2)社群資源


認識一門語言,不能只是學習語言的語法,更要逐步深入瞭解語言背後的社群與文化,要瞭解語言的社群與文化,最好的方式就是從認識語言創建者開始,瞭解語言設計的理念,接著從社群網站出發,尋獲更多可以瞭解並參與社群的資源。

Python 之父 Guido van Rossum

Guido van Rossum

使用 Python 可別不認識 Python 的創建者 Guido van Rossum(也千萬別寫這種信給他),Guido 是首位享有 BDFL 封號的開放原始碼軟體創建者,BDFL 全名為 Benevolent Dictator For Life,中文常翻為「仁慈的獨裁者」,意思是擁有這類稱號的開放原始碼軟體創建者,對社群仍持續關注,在必要時會針對社群中的意見與爭議提出想法與做出最後決定,Python 3.x 得以持續推進就是一個例子,因為 Python 3.x 正是 Guido van Rossum 的最愛,沒有他的堅持,或許 Python 3.x 難以有今日的接受度。

Guido 在 2005 年至 2012 年曾受雇於 Google,大半時間在維護 Python 的開發,2013 年之後離開 Google 進入 Dropbox,可以在官方個人頁面找到他。

Python 軟體基金會

Python Software Foundation 常簡稱為 PSF,主要任務為推廣、維護與促進 Python 程式語言的發展,同時也支持協助全球各地各式各樣 Python 程式設計師與社群的成長。PSF 是符合美國國內稅收法(Internal Revenue Code, IRC)中 501(c) 條款的非營利組織,持有 Python 程式語言背後的智慧財產權。

Python 改進提案

Python Enhancement Proposals 常簡稱為 PEPs,Python 的改進大多是由 PEP 流程主導,PEP 流程會收集來自社群的意見,為將來打算加入 Python 的新特性提出文件提案,重要的 PEP 會經由社群與 Guido 審閱與評估,決定是否成為正式的 PEP 文件。

因此 PEP 文件本身說明了它對 Python 的改變,以及實作特性時應遵守的標準,在剛開始認識 Python 時,有幾個重要的 PEP 是必須認識的

  • PEP 1 - PEP 的作用與執行準則,說明了何為 PEP、PEP 的類型、提案方式等。
  • PEP 8 - Python 的程式碼風格,包括了程式碼的編排、命名、註解等風格指引。
  • PEP 20 - Python 禪學(The Zen of Python),也就是〈Python 3 Tutorial 第二堂(2)數值與字串型態〉中執行 import this 時,可以看到的話語。
  • PEP 257 - 撰寫 Docstrings 時的慣例,Docstring 是可內建於 Python 程式中的說明文件字串,稍後就會說明。

Python Conference

全世界各地都有 Python 使用者,這些使用者會在各地舉辦各式大大小小的研討會,如果想要知道各地的研討會資訊,可以從 PyCon 這個網站開始,它列出了全球各地 Python 研討會的網址、活動日期等資訊。

在這個網站上,你可以找到 “PyCon Taiwan” in Taiwan,連結至網站之後,你可以看到台灣 Python 社群關心的重要研討會訊息。

Python 使用者群

除了研討會之外,Python 使用者會舉辦週期性的聚會,你可以在 LocalUserGroups 上找到全球各地的 Python 使用者聚會資訊,以台灣來說,撰寫文章的此時擁有的週期性聚會資訊有:

Python 的文件

Python 的官方網站是 http://www.python.org,不少文件資源等,都可以在官方網站上尋得。

對於 API 的使用,實際上,Python 的 API 本身就附有文件,舉 list 來說,如果你在互動模式中鍵入 list.__doc__ 會發生什麼事呢?

>>> list.__doc__
"list() -> new empty list\nlist(iterable) -> new list initialized from iterable's items"
>>> 

這字串很奇怪?如果鍵入 help(list) 就不會覺得奇怪了:

社群資源

實際上,help 函式會取得 list.__doc__ 的字串結果並顯示出來,就類似於你執行 print(list.__doc__) 的結果:

>>> print(list.__doc__)
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
>>>

透過 list.__doc__ 取得的字串稱為 DocStrings,你可以為 API 定義自帶的文件資訊。例如,試著在互動模式中鍵入以下程式碼:

def max(a, b):
    '''max(a, b) -> value

       With two arguments, return the largest argument.'''
    return a if a > b else b

''' 包括的字串是可以換行的,如果這樣的字串出現在函式的開頭,那它會成為函式物件的 __doc__ 屬性值,因此接下來,如果你鍵入 max.__doc__help(max),將會看到以下畫面:

>>> def max(a, b):
...     '''max(a, b) -> value
... 
...        With two arguments, return the largest argument.'''
...     return a if a > b else b
... 
>>> max.__doc__
'max(a, b) -> value\n\n       With two arguments, return the largest argument.'
>>> 

社群資源

先前談到,PEP 257 中說明了撰寫 Docstrings 時的慣例,你可以在當中取得更多撰寫 Docstrings 的資訊。

談到文件,Python 官方網站的文件是列於 http://docs.python.org,連上後目前預設會顯示 Python 3 的文件,你可以於網站左上角選擇想要閱覧的 Python 版本:

社群資源

在完成本課程後,建議可以繼續閱讀網站上的 Tutorial,如果想查詢 API 文件,則可以從 Library Reference 開始。

除了連上網站查詢 API 文件之外,由於 Python 的標準 API 都有撰寫 Docstrings,你還可以使用 pydoc3.5 指令來讓你閱讀 Docstrings 時更為便利,例如,執行 pydoc3.5 -p 9999 之後,會啟動一個簡單的 pydoc 伺服器,接下來可利用瀏覽器連結本機 localhost:9999 查看文件:

社群資源

整合開發工具

真正開發程式時,你也許會想要使用整合開發工具,在 Python 的世界中,我確實花了些時間去瞭解有沒有主流的整合開發工具,不過事後覺得,在 Python 的世界中,除了團隊因素決定之外,更多時候是個人口味問題,基於課程時間,我就不逐一討論我調查過的那些工具特色為何了,以下列出一些課程前調查過的幾個:

既然除了團隊因素決定之外,更多時候是個人口味問題,如果真要在這個課程中建議或使用一款 IDE,就我個人的口味來說,就姑且建議 PyCharm ,它有提供社群版本,對於入門與基本使用來說,應該是足夠了!

練習 5:安裝 PyCharm

要在 Ubnutu 中安裝 PyCharm,必須先安裝 JDK,這個可以執行以下的指令來達成:

sudo apt-get install openjdk-8-jdk

安裝好 JDK 之後,可以連線至 PyCharm 的 Download 頁面,下載其中的 Community 版本,在撰寫這篇文件的同時,可下載到的版本為 5.0.4 版,你也可以直接連線以下鏈結來下載:

  • https://download.jetbrains.com/python/pycharm-community-5.0.4.tar.gz

你可以將檔案下載至使用者家目錄,接著使用以下的指令解開檔案:

tar zxvf pycharm-community-5.0.4.tar.gz

檔案解開後,會有個 pycharm-community-5.0.4 目錄,進入該目錄後,執行以下指令,初始啟動並設定 PyCharm:

bin/pycharm.sh

安裝過程中會看到以下的畫面,因為是初次安裝,沒有前一版 PyCharm,直接點選 OK 就可以了:

社群資源

下一步就是接受預設的一些鍵盤配置、佈景主題、編輯器字型風格等,以及是否建立 charm 指令及啟動圖示,前者是便於在終端機下鍵入 charm 就可啟動 PyCharm,後者則是便於在系統選單中按下圖示啟動 PyCharm,直接按 OK 就可以了:

社群資源

安裝到 /usr/local/bin/charm 需要超級使用者身份,因此請輸入你的密碼:

社群資源

要在系統選單中按下圖示啟動 PyCharm,可以如下:

社群資源

接下來就試著開個專案玩玩看囉!如果你有使用過其他 IDE 的經驗,操作上應該很快就可以上手,你可以試著用 PyCharm 重做〈Python 3 Tutorial 第三堂(1)函式、模組、類別與套件〉的練習 4,熟悉並看看是不是使用 IDE 會讓你感到更為方便。

瞭解了 Python 的資源之後,接下來要來介紹更多實用的 API 了,下個主題會是一些資料處理的相關函式介紹。