Colab(三):Python
2021/03/09
前言:
本文簡單介紹了 Python 的由來、特性、發展。並提供想要進一步深入的參考資料。
-----
Summary:
Python 的原意是蟒蛇,但 Python 這個語言則是來自一個叫 Monty Python 的團體 [1] - [3]。Python 是直譯式、膠合、物件導向的語言,結合以上三個特性,使 Python 成為同時受初學者與專家歡迎的語言 [4] - [7]。Python 有豐富的內建與外部擴充的函式庫,可用於統計、影像處理、機器學習、深度學習等 [8] - [12]。本文另外提供一些網路上的文章與電子書作為進階的參考 [13] - [15]。
-----
https://pixabay.com/zh/photos/snake-python-serpent-scales-543243/
-----
一、Python 命名的由來。
-----
Python 在希臘神話中,是一隻被 Apollo 太陽神殺掉的巨蟒。英式發音讀為「派森」,美式發音讀為「派三」。如果你對哈利波特第一集還有印象,哈利在他的表弟生日時,到動物園參觀,就跟裡面的一隻 python 對話過。國人常用的是美式發音,但由於 Python 這一詞來自 BBC,所以應該就還是讀為「派森」比較適合。
Python 的命名,來自「Monty Python's Flying Circus」,這是一系列英國 BBC 的超現實主義電視喜劇,不是馬戲團。據說「Monty」這個名字是 Monty Python 為了諷刺二戰英雄蒙哥馬利將軍(Field Marshal Lord Montgomery)。他們想要為這個名字找聽起來比較滑稽的姓,所以選了「Python」[2]。
Python 的創始人 Guido van Rossum 說:「 I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).」[2], [3]。我選 Python 作為專案的工作名稱,是因為當時有點想要搞笑(而且我是《蒙提· 派森的飛行馬戲團》的頭號粉絲)。
以上就是 Python 之所以為 Python 的簡短歷史。
-----
二、Python 的特性。
-----
Python 有幾個基本特性,它是直譯式語言、膠合語言、以及物件導向語言。
直譯式語言一行一行執行,有錯誤可以立刻發現,立刻改正,有助於初學者上手。膠合語言是因為 Python 在設計之初,就定位為協助程式設計師過來管理電腦系統,所以容易整合各種不同語言的程式與設定 [4]。
另外 Python 跟 C++、Java 一樣,都是物件導向的語言,而非像 C 一樣,是程序導向的語言。物件導向有封裝、繼承、多型等種種好的性質。
以上三個特性,使得 Python 廣受初學者與專家的歡迎,為 Python 開發的函式庫也越來越多,是一個正向的循環,所以 Python 的使用者也越來越多 [5] - [7]。
-----
三、Python 的保留字。
-----
在 Python 的環境下,執行以下兩行指令,
import keyword
keyword.kwlist
可以得到目前版本的保留字。
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] [8]。
保留字是程式語言中最基本的部分,以下簡單分類,作為參考。
函式:def、class、return、yield、lambda、from、import。
變數:global、nonlocal、as、del。
邏輯:False、None、True、and、not、or、in、is、assert。
分支:if、else、elif。
迴圈:for、while、continue、break。
除錯:try、except、finally、raise。
其他:async、await、pass、with。
函式:一個程式,由一堆函式所組成,如果只有一個函式,那這個程式就是主函式 main。一個函式,要呼叫,或使用其他函式,可以透過 import 與 from。一個函式,則從 def 開始,到 return 或 yield 結束。class 裡面的 del,叫做 method。
變數:函式裡面主要處理資料,最簡單的資料型態是變數,變數可以是 global 或 nonlocal。如果沒有特別聲明,則是 local。
邏輯:邏輯值是運算的結果,也可以是變數。
分支:如果沒有分支,則函式內部是一條一條代碼,或者說是一個一個指令,循序執行。
迴圈:如果有一段程式會重複幾次執行,可以使用迴圈。
除錯:同字面上的意義,就是可以幫忙除錯。
其他:不在上面的功能,歸於其他。
程式的分解,就如同上面所述,你只要把程式要做的事,分解成上面的指令即可。
-----
四、庫。
-----
庫,指的是一堆函式的集合。
除了 35 個保留字之外,Python 還有 69 個內建函式,是函式庫中最常用的 [9],繼續延伸,則是標準的函式庫 [10]。
外部擴充的話,除了最受歡迎的 NumPy [11]、SciPy,還有機器學習的函式庫 Scikit-learn。它需要 Python (>= 2.7 or >= 3.3)、NumPy (>= 1.8.2)、SciPy (>= 0.13.3) 。MILK、Ramp、Bob 則是另外的機器學習的函式庫 [12]。
跟 SciPy 不同,Scipy packages 包含 Numpy、SciPy、Matplotlib、IPython、Sympy、Pandas。Matplotlib 用於繪圖,Pandas 用於資料庫。
深度學習有 Keras、TensorFlow、PyTorch、Caffe2、Chainer、Theano、PyBrain、Hebel。NTLK、Gensim 可用於 NLP。
以上是一些常見的內建、內部、與外部的函式庫。可以用 !pip list 觀察 Colab 已經預裝了哪些函式庫。
-----
五、深入 Python。
-----
網路上有豐富的 Python 資源,這裡簡單列出五十篇文章 [13]、一本免費下載的電子書(我有下載)[14]、15 本免費下載的電子書(我沒有下載)[15],作為繼續深入的參考。
-----
◎ 實作練習
-----
4 基本資料類型 [16]。
5 流程控制 [17]。
7 For 迴圈 [18]。
9 while 迴圈 [19]。
-----
誤:
lucky_number = input("請輸入你的幸運數字:")
print("我的幸運數字是 {}.format(lucky_number)")
正:
lucky_number = input("請輸入你的幸運數字:")
print("我的幸運數字是 {}.".format(lucky_number))
-----
誤:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
for starring in starrings:
print starring
正:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
for starring in starrings:
print(starring)
-----
誤:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
for i in range(len(starrings)):
print starrings[i]
正:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
for i in range(len(starrings)):
print(starrings[i])
-----
誤:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
i = 0
while i < 6:
print starrings[i]
i += 1
正:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
i = 0
while i < 6:
print(starrings[i])
i += 1
-----
誤:
from random import choice
coin_flips = [] # 建立一個空的清單放置每一次投擲的結果
coin = ["Head", "Tail"]
while coin_flips.count("Head") < 3:
coin_flips.append(choice(coin))
print coin_flips # 印出每次投擲的紀錄
print len(coin_flips) # 總共投擲了幾次
正:
from random import choice
coin_flips = [] # 建立一個空的清單放置每一次投擲的結果
coin = ["Head", "Tail"]
while coin_flips.count("Head") < 3:
coin_flips.append(choice(coin))
print(coin_flips) # 印出每次投擲的紀錄
print(len(coin_flips)) # 總共投擲了幾次
-----
References
[1] Monty Python and Robin Hood | Fafner's 遁世居
https://fafner-hideaway.blogspot.com/2010/05/monty-python-and-robin-hood.html
[2] Python 不是大蟒蛇、Java 就是一杯咖啡,程式語言都是如何命名的? | TechOrange
https://buzzorange.com/techorange/2016/03/14/how-do-you-name-your-language/
[3] Foreword for "Programming Python" (1st ed.) | Python.org
https://www.python.org/doc/essays/foreword/
-----
[4] 什麼是Python - Python
https://nkust.gitbook.io/python/
[5] Hello Python!|Python入門詳細介紹. 完整的Python介紹與使用,對想進入Python及Data… | by MAPE Academy | Python4U | Medium
https://medium.com/python4u/hello-python-509eabe5f5b1
[6] 一小時Python入門-part 1 - 寫點科普 Kopuchat
https://kopu.chat/2017/01/18/%E4%B8%80%E5%B0%8F%E6%99%82python%E5%85%A5%E9%96%80-part-1/
[7] 一小時Python入門-part 2 - 寫點科普 Kopuchat
https://kopu.chat/2017/01/18/%E4%B8%80%E5%B0%8F%E6%99%82python%E5%85%A5%E9%96%80-part-2/
-----
[8] Python保留字(關鍵字)一覽表 - tw511教學網
https://tw511.com/a/01/3236.html
[9] Built-in Functions — Python 3.9.2 documentation
https://docs.python.org/3/library/functions.html
[10] The Python Standard Library — Python 3.9.2 documentation
https://docs.python.org/3/library/
[11] 認識 Python 科學運算套件. 與 NumPy 初次見面 | by Yao-Jen Kuo | Pyradise | Medium
https://medium.com/pyradise/%E8%AA%8D%E8%AD%98-python-%E7%A7%91%E5%AD%B8%E9%81%8B%E7%AE%97%E5%A5%97%E4%BB%B6-c4e59f1d8ecc
[12] 34 Open-Source Python Libraries You Should Know About
https://www.mygreatlearning.com/blog/open-source-python-libraries/
-----
[13] Learn Python from Top 50 Articles for the Past Year (v.2019) | by Mybridge | Mybridge for Professionals
https://medium.mybridge.co/learn-python-from-top-50-articles-for-the-past-year-v-2019-3225f4643d9c
[14] Free Python Programming Book
https://books.goalkicker.com/PythonBook/
[15] 15 Free eBooks to Learn Python. Want to learn Python but can’t be… | by Brandon Morelli | codeburst
https://codeburst.io/15-free-ebooks-to-learn-python-c299943f9f2c
[16] 4 基本資料類型
https://bookdown.org/tonykuoyj/hello-py/section-4.html
[17] 5 流程控制
https://bookdown.org/tonykuoyj/hello-py/ifelse.html
[18] 7 For 迴圈
https://bookdown.org/tonykuoyj/hello-py/for-loop.html
[19] 9 while 迴圈
https://bookdown.org/tonykuoyj/hello-py/while-loop.html
-----
補充:
[20] 3. An Informal Introduction to Python — Python 3.9.2 documentation
https://docs.python.org/3/tutorial/introduction.html
[21] 4. More Control Flow Tools — Python 3.9.2 documentation
https://docs.python.org/3/tutorial/controlflow.html
-----
# Python 程式設計
http://yltang.net/tutorial/python/0/
Python Documentation contents — Python 3.9.2 documentation
https://docs.python.org/3/contents.html
Python - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/Python
Python (programming language) - Wikipedia
https://en.wikipedia.org/wiki/Python_(programming_language)
# 日文
Python - Wikipedia
https://ja.wikipedia.org/wiki/Python
# 韓文
파이썬 - 위키백과, 우리 모두의 백과사전
https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC
Welcome to Python.org
https://www.python.org/
-----
從 Colab 到 Kaggle(目錄)
https://hemingwang.blogspot.com/2021/03/colab_12.html
-----