Why python

星期一 21 Jan 2019   even  

為什麼我選擇python

七八年前,為了進行統計分析,開始接觸寫程式(R語言),程式寫啊寫的寫出了興趣,就開始想要做除了統計分析以外,更多的東西。然而R無法讓我做更多的事情(如寫遊戲、APP開發、架網站、自動化等)。上網搜尋文章後,發現python具有不遜色於R的資料分析功能,同時又能做很多除了資料分析以外的事情,因此在四年前從R轉去python,一開始因為使用上還不是那麼熟悉,有一段陣痛期,然後熟悉之後就回不去了。如今除非是某分析套件只在R裡面有,否則我一定是使用python。

為什麼你應該選擇python

python現今普遍被認為想學程式的入門語言之一,包含以下幾個理由:

簡潔:

相較於c++ 、java等,python能夠以更少的程式碼做出你想做的事情。

以下是幾個現今常見程式語言的Hello world!

C++

#include <iostream>

int main() 
{
    std::cout << "Hello, World!";
    return 0;
}

C#

class HelloWorld
{
    static void Main()
    {
        System.Console.WriteLine("Hello, World!");
    }
}

java

class HelloWorld {
  static public void main( String args[] ) {
    System.out.println( "Hello World!" );
  }
}

python3

print("Hello world!")

R

cat("Hello world\n")

php

<?php echo "<p>Hello World</p>"; ?>

javascript

console.log("Hello World");

Brainfuck (現今人類最難看懂的程式語言)

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

從上面簡短的比較可以看得出來,python屬於比較簡潔的程式語言。因此被認為是建議的入門語言之一。

(Brainfuck是來亂的,別理他)

高度可讀性:

python語言非常非常重視可讀性,誇張一點的說法,你看得懂英文,就會看得懂python,看得懂自己一個禮拜前寫什麼,看得懂別人寫的程式是什麼。python的語法會盡量挑選使用人類容易看得懂的,例如在螢幕上顯示hello world,使用的就會是print。

以下是一段python的程式碼,你可以猜猜看會得到什麼結果?

python

A = 3
B = A

if A is B:
    print(321)

if A is not B:
    print(123)

沒錯,是321,是不是很容易理解呢?另外你可以看到,在if底下的程式碼都有多加了縮排,這是寫程式時為了讓人更容易看懂而額外加的。在python語言強制你一定要加縮排,強迫你必須要寫的容易理解,python不加縮排,就會出現identation error。

應用範圍廣泛:

python在資料分析、機器學習、網頁開發、GUI開發、IOT等,都有相當不錯的應用。

  • 資料分析: 資料處理(pandas、numpy)、視覺化(matplotlib、seaborn)
  • 機器學習: 傳統機器學習(sklearn)、深度學習(tensorflow、keras)
  • 網頁開發: 網頁後端(flask、django)
  • GUI開發: kivy、tkinter、pyqt等開發框架
  • IOT: Raspbery pi

另外,由於這些應用都可以完全由python編寫,所以可以用單一程式語言完成跨領域的專案,例如:

在辦公室門口架設攝影機自動辨識你老闆(嵌入式系統、影像分析、AI人工智慧的應用),並將資料傳送到你架設的網站上,紀錄並呈現你老闆每天出沒的高峰期(網頁開發、基本資料分析的應用)。你可以完全用python打造出這樣一套系統。

現今資料科學領域最主要的語言是R和python,但如果是機器學習的話,無庸置疑是python。

整體而言,python雖然運行速度慢(遠不如c++),但是開發時間快。

(事實上,python資料科學上很多需要快速運算的功能都是以cython轉成c++運行,所以速度並不慢喔)

Python哲學

設計哲學:「優雅」、「明確」、「簡單」

開發者的哲學:「用一種方法,最好是只有一種方法來做一件事」

Python之禪

import this
The Zen of Python
by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

以上這段python之禪,是撰寫 Python程式的精神指標 ,每一句都是金玉良言,值得好好體會,我會在python新手教學系列的尾聲好好地介紹這一段。

結語

如果你想入門程式語言,你可以試試看python,然後再依你的需求轉去其他語言。

如果你想走資料科學,然後想多做一些資料科學以外的,python是你很好的選擇。

如果你想在機器學習領域發展,你一定要會python。

總之,開始python的基礎教學吧~

python新手教學
Why python
Hello Python!
This is a python - 基本數值運算與邏輯判斷
[Python, 的, list, 教學 ]
"python的字串教學"
python的迴圈與流程控制
python的(tuple)與{dict}
def 一個python的自訂函數:
import套件到你的python
python的嘗試try與錯誤error處理
Python之禪

相關文章:

>