image0

今年 PyCon APAC 是在台灣舉辦,活動的規模也擴增到了三天,感謝 Rick 的協助,讓我順利用早鳥票報名 PyCon APAC 啦!

這次聽到有趣的 library 和 framework 比較少,大多在於如何利用 Python 去實踐一些想法,或是利用在不同領域的研究,其中有不少贊助廠商的分享也還不錯。

三天的演講內容摘要可以參考 hackpad 的共筆。

最後還是要記錄一下今年活動覺得有趣或有用的 library。

hackpad

目前當紅的共筆服務,不論在操作和反應上都比 google doc 來的更加即時好用,相當推薦。

readthedocs

也是目前當紅的文件托管服務,已經有相當多的 open source 將它們的文件轉移到 readthedocs。

urllib2 & pycurl & selenium

分析網頁的三套工具,分別是 python 內建的 urllib2 library,或是模擬 linux curl 功能的 pycurl library,以及用來模擬瀏覽器動作的 selenium library,透過這三套工具來分析網頁,應該能解決絕大多數的問題。

gevent

隨著時代的進步,撰寫同步與非同步服務的建議不再是使用 twisted,而多半建議採用的是 gevent,這是更加輕量好用的網路協作 library,而且在程式設計上提供更容易理解的架構與方法。

celery & luigi

這兩套 library 都是用來做 task manager 的,可惜的是不論是聽講者講的內容,或是我自己當下看了文件,都還是不太能理解這些套件的用途,只好先記錄下來,待以後有機會用到再仔細學習。

pytest

除了 python 內建的 unittest 之外,強大的 pytest 不但可以減少測試程式的複雜度,還可以強化測試結果的輸出。

ansible

簡單說就是一套以 python 撰寫的 deployment 工具,最大特色是採用 ssh 做溝通,所以不用安裝 client tool, ansible 也是採用 roles/playbook/config 的架構做管理。

因為我沒親身使用過,所以無法評論與最多人用的 Puppet 或是 Chef 和 Salt 之間的優劣與差異,但是據我所知,每一套 deployment 工具都有它設計上的特色,建議是根據實際需求來做挑選。

type hints

Python 在變數宣告上採用的是 dynamic typing,也就是在宣告變數的時候並不需要指定其型態,而是當程式執行它的時候,才會去檢查其變數的形態與邏輯。

不過,雖然 Python 採用 dynamic typing,它同時也是強型別的,所以 Python 仍然禁止任何沒有明確定義的操作,比如數字加字串。而 dynamic typing 雖然替程式開發者帶來了更大的彈性,但缺點就是產生較差的效能,因為所有的檢查都會在執行的時候才做處理。

此次 keynote 透過分享 PEP 0484 Type Hints 這個章節,讓程式開發者可以透過 typing 這個 module 來預先替變數指定型態,增加 Python 在執行上的效能。