完全寫出我為何想要學 Python 的原因。
如果你經常在電腦上工作,最終總能發現有些工作你會想要自動化。舉例來說,你會想在很多文字檔案裡做相同的搜尋取代,或者是用個複雜的規則重新命名或整理一群照片。也有可能你想寫個自己的小資料庫,一個專門的 GUI 應用程式,或一個小遊戲。
如果你是一個職業軟體開發者,你可能要操作數個 C/C++/Java 程式庫,卻覺得平常寫程式碼、編譯、測試、再編譯的流程太慢;有可能你正為了一個程式庫撰寫一套測試集,但發現寫測試單調乏味;也有可能你正在開發一個能使用某一語言擴充的程式,但並不想要為了這程式特別設計一個全新的擴充語言。
在上述的例子中,Python 正是你合適的語言。
也許你可以為了某些任務而寫個 Unix shell 腳本或者 Windows 批次檔來處理,但 shell 腳本最適合於搬動檔案或更動文字內容,而不適於圖形應用程式或遊戲。你可以為此寫個 C/C++/Java 程式,但僅僅是完成個草稿也需要很長的開發時間。相較而言,Python 更易於使用,並能在 Windows、macOS、Unix 作業系統上執行,且能更快速地幫助你完成工作。
我對學習 Python 開始有了起心動念,原因如下:
三年前我因為擔任社群志工的原因,需要整理歷年年會購票名單,我只會使用 Excel 功能和人力和眼力整理歷年購票資料,結果一位認識的 Python 工程師,只用了十分鐘就幫我把手動至少 1 小時的資料都整理好了,當時備受震撼,也才明白使用 Python 有助於對於多筆資料甚至是大量資料的查找、比對、轉換等等自動化更省力的方法。
懂多種程式設計語言的朋友也表示,Python 是新手入門友善的語言,有英文程度的人大多就能懂 Python 語法。
Python 即便易用也是個貨真價實的程式語言。它提供比 shell 腳本、批次檔更多樣的程式架構與更多的支援。另一方面,Python 提供比 C 更豐富的錯語檢查。相較於 C,Python 作為一個「非常高階的程式語言」,它內建了高階的資料型別如彈性的數列與字典。因為這些多用途的資料型別,Python 適用解決比 Awk(甚至是 Perl)能處理的更多問題上。至少在許多事情中,使用 Python 處理起來跟其他語言是同樣容易的。
Python 允許你把程式切割成許多模組 (module) 並將他們重覆運用至其他 Python 程式中。Python 自帶了一個很大集合的標準模組,它們能做為你程式的基礎——或把它們當作一開始學寫 Python 程式的範例。有些模組提供了如檔案 I/O、系統呼叫、socket 的功能,甚至提供了 Tk 等圖形介面工具庫 (GUI toolkit) 的介面。
Python 讓程式寫得精簡並易讀。用 Python 實作的程式長度往往遠比用 C、C++、Java 實作的短。這有以下幾個原因:
Python 高階的資料型別能在一陳述式 (statement) 中表達很複雜的操作;
陳述式的段落以縮排為區隔而非括號;
不需要宣告變數和引數。
Python 是可擴充的:如果你會寫 C 程式,那麼要加個新的內建函式或模組到直譯器中是很容易的。無論是為了用最快速的執行速度完成一些關鍵的操作,或是讓 Python 連結到一些僅以二進位形式 (binary form) 釋出的程式庫(例如特定供應商的繪圖程式庫)。如果你想更多這樣的結合,你其實也可以把 Python 直譯器連結到用 C 寫的應用程式,並在該應用程式中使用 Python 寫擴充或者作為下達指令的語言。
Python 是個直譯式語言,因為不需要編譯與連結,能為你在開發過程中省下可觀的時間。它的直譯器能互動地使用,因此能很方便地實驗每個語言的功能、寫些用完即丟的程式、幫助測試一些從細部開始開發的函式。它也是個好用的計算機。
因為我不明白什麼是直譯式語言,所以查詢到一篇適合我理解的文章 編譯語言 VS 直譯語言
https://totoroliu.medium.com/%E7%B7%A8%E8%AD%AF%E8%AA%9E%E8%A8%80-vs-%E7%9B%B4%E8%AD%AF%E8%AA%9E%E8%A8%80-5f34e6bae051
編譯語言 (Compiled language)
一種程式語言的類型,編譯語言在程式執行前會先透過編譯器(compiler)將程式碼編譯(Compile)成計算機所看的懂的機器碼(machine language),最後再執行。編譯式語言多半會是靜態語言(static language),它們會事先定義的型別、型別檢查 (type check) 與擁有高效能的執行速度等特性。
編譯語言— C、C++、bjective-C、Visual Basic等等。
直譯語言 (Interpreted language)
一種程式語言的類型,不同於編譯語言,直譯語言在執行時會一行一行的動態將程式碼直譯(interpret)為機器碼,並執行。直譯語言多半以動態語言(dynamic language)為主,具有靈活的型別處理,動態生成與程式彈性,但速度會比編譯式語言要慢一些。
直譯語言 — JavaScript、Python、Ruby等等。
差異
一般而言,在相同的邏輯下,執行期的執行速度,使用編譯語言的速度會比使用直譯語言來得快,其原因在於編譯語言已經先預先編譯過了,因此在執行時期相較於直譯語言少了一道step-by-step的直譯程式碼的時間。然而這也造成了編譯語言的缺點,編譯語言的程式開發、除錯速度會較編譯語言來的慢,因為編譯語言無法像直譯語言一樣,在開發完一段程式碼就可以馬上執行並且除錯,且直譯語言也給予軟體開發者更有彈性以及快速的開發流程。
順帶一提,這個語言是以 BBC 的戲劇《Monty Python's Flying Circus》命名,與爬蟲類完全沒有關係。在說明文件中引用他們的喜劇不但沒問題,這甚至是個被鼓勵的行為!
我觀察了一下,雖然此語言跟蛇這樣的爬蟲類沒關係,但 Python Software Foundation 官方 logo 設計成黃藍雙色的蛇,請詳下圖所示。
一般我們說的 Python是 CPython,全球中最廣範使用,CPython 是指用 C 開發的 Python 解釋器,而另一個流派 Anaconda 是 Python 和 R 語言寫成。
Python 中文是蛇,Anaconda 中文是森蚺,一種非常肥大的蟒蛇,Anaconda 當作是 Python 更進階。
Anaconda = python + 常用的資料分析、機器學習、視覺化的套件(NumPy、SciPy 等常用第三方函式庫)+ IDE
而我擔任志工的 PyConTW 也是以此意象來設計.
順便工商一下:
PyConTW 2024
日期:2024/9/21-22
地點:國立科學工藝博物館(南館) - 高雄市三民區九如一路797號
詳情可見 https://tw.pycon.org/2024/zh-hant/registration/tickets
如果你現在已經躍躍欲試,你會想了解 Python 更多細節,而學習語言的最好方式就是直接使用它。接下來這個教學就將帶領你,一邊閱讀,一邊將所學用在 Python 直譯器中玩耍。
在下個章節中,將會解說如何使用該直譯器。這也許只是個普通的資訊,但你必須試著操作接下來呈現的範例。
接下來的教學裡,將會透過許多範例介紹 Python 語言與其系統的諸多特色。一開始是簡單的運算式 (expression)、陳述式 (statement) 和資料型別 (data type);接著是函式 (function) 與模組 (module);最後會接觸一些較進階的主題如例外 (exception) 與使用者自定義類別 (class)。