Sunday, March 21, 2021

Colab(三):Python

 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

-----

1 comment:

Rahul singh said...

Your post is very great.I read this post. It’s very helpful. I will definitely go ahead and take advantage of this. You absolutely have wonderful stories. Cheers for sharing with us your blog. For more learning about data science visit at Data science course in Bangalore