Computer programming and Data Science William Hsu Department of Computer Science and Engineering National Taiwan Ocean University
Python 一種相對容易上手但難精的語言 2019/2/20 2
Python 簡介 Google 網站的搜尋系統 Youtube 視訊共享服務 BitTorrent 點對點檔案共享系統 NSA 的加密和智能分析 irobot 開發商業機器人吸塵器 NASA Los Alamos Fermilab JPL 的科學程式設計任務 Industrial Light & Magic Pixar 製作電影動畫 2019/2/20 5
Python 的熱門度 TIOBE 根據程式語言在各大搜尋引擎 ( 包含 Google Bing Wikipedia 等 ) 的點擊率, 計算出熱門程度分數並以此排名, 每年都會選出排名成長最多的程式語言作為年度語言 雖然這項排名並不代表程式語言實際使用人數, 卻能反映出該年度趨勢 2019/2/20 6
TOIBE index (2019 Feb) 你們要學的在這邊 2019/2/20 7
TOIBE index (2019 Feb) 2019/2/20 8
Python 特色 物件導向式語言架構 (Object-Oriented Program Language) 直譯式 省略變數類型宣告動作 自動化的記憶體管理 內建許多高階實用的資料型態 跨平台與圖形介面延伸 優雅簡潔, 易學易用 2019/2/20 9
Python 介紹 創始人為吉多 范羅蘇姆 (Guido van Rossum) 打發聖誕節的無趣, 決心開發一個新的指令碼解釋程式, 作為 ABC 語言的一種繼承 以 BBC 喜劇 Monty Python's Flying Circus 命名 Python 2.0 於 2000 年 10 月 16 日發布, 主要是實作完整的垃圾回收 (Garbage Collection), 並且支援 Unicode 2008 年 12 月 3 日發布 Python 3.0 它不完全相容之前的 Python 代碼 不過, 很多新特性後來也被移植到舊的 Python 2.6/2.7 版本 2019/2/20 10
Python 的作者 http://en.wikipedia.org /wiki/guido_van_rossum Guido van Rossum 吉多 范羅蘇姆 2019/2/20 11
Python s benevolent dictator for life Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another's code; too little and expressive-ness is endangered. - Guido van Rossum 2019/2/20 12
Python2 或 Python3 Python2.X 穩定版本 version2.7 為最終版本 較多的第三方函式庫 仍有為數眾多的使用者 Python3.X 現在進行式同時也是未來趨勢 活絡發展中 對初學者較友善 較少第三方函式庫 2to3.py 3to2.py Brett Cannon, Python 3.3: Trust Me, It's Better than 2.7, PyCon 2013 https://www.youtube.com/watch?v=f_6vdi7ywua 2019/2/20 13
Python 程式開發 - 雲端服務 微軟提供的服務 Azure Notebook https://notebooks.azure.com/ Colaboratory Google 提供的服務 https://colab.research.google.com/notebooks/welcome.ipynb#re cent=true 2019/2/20 14
標記 直譯器利 標記 (token) 解析程式的功能,Python 中的標記有關鍵字 (keyword) 識別字 (identifier) 字 常數 (literal) 運算 (operator) 等四類 關鍵字 識別字 字 常數 運算 2019/2/20 15
關鍵字 關鍵字為具有語法功能的保留字 (reserved word),python 的關鍵字, 如以下列表 2019/2/20 16
識別字 識別字為寫程式時依需求 定義的名稱, 包括變數 (variable) 函數 (function) 類別 (class) 等, 皆為使 定義的識別字 除了關鍵字之外, Python 可 任何 Unicode 編碼的字元當作識別字 習慣上識別字的命名仍是以英 字 寫 A- Z(\u0041-\u005a), 寫 a-z (\u0061-\u007a) 底線符號 (_, \u005f) 與數字 0-9(\u0030-\u0039) 為主 2019/2/20 17
字 常數 字 常數的意思就是字 上的意義, 也就是說, 1234 就代表整數數值 千兩百三 四的意義, 因此, 所謂的字 常數就是直接寫進 Python 程式原始碼的數值, 依資料型態分類有 字串字 常數 (string literal) 字節字 常數 (bytes literal) 整數字 常數 (integer literal) 浮點數字 常數 (floating-point literal) 複數字 常數 (imaginary literal) 2019/2/20 18
運算 Python 提供多樣 功能完整的運算, 如下列表 分隔符號 (delimiter) 2019/2/20 19
變數 (Variables) 和表 式 (Expressions) 表 式 (Expressions) 3 + 5 3 + (5 * 4) 3 ** 2 Hello + World 變數指定 (Assignments) a = 4 + 3 b = a * 4.5 c = (a+b)/2.5 a = Hello World 型別是動態的, 會根據指定時的物件來決定型別 變數單純只是物件的名稱, 並不會和記憶體綁在 起 和記憶體綁在 起的是物件, 不是物件名稱
關於變數 為何需要變數? 變數好比容器 變數要如何命名? 以底線或英文字母開頭字符 以底線, 英文字母和數字為後續字符 不可與關鍵字 ( 保留字 ) 相同 變數的名字 ( 罐子 A) 變數的值 ( 三公升 ) 變數的型態 ( 水 ) 2019/2/20 21
關於變數 定義變數與初始化變數 var = 70 ( 整數 ) var = 6.78 ( 浮點數 ) var = alcom lab ( 字串 ) Programmer 撰寫 Python 時不必在意變數的 size( 容器的大小 ) 因為細節被隱藏 變數值同時可以看出變數型態 variable name = value 變數名稱必須符合規範
關於變數 Python 的變數是可以更換型態的 >>> a = 5 >>> a = kkk >>> a = 3.14159 這並非指 Python 沒有型態 而是同一個變數名稱可以任意指稱裝載任何型態的容器 ( 物件參照 ) 在 Python Shell 中直接輸入變數名稱可看到變數的再現型態 2019/2/20 23
賦值運算 賦值運算是最常被使用的運算 將運算的結果賦予 ( 存到 ) 一個變數, 將右邊運算的結果 ( 右值 ) 賦予左邊 ( 左值 ) left value = right value 等號是賦值運算的運算子 代表把右邊給予左邊 跟一般在數學上的意義 相等 是完全不同的 2019/2/20 24
物件參照 Python 在實作上採取了參照物件的作法 個資料 ( 物件 ) 必須得有 個空間 ( 容器 ) 來保存它, 在許多程式語 中, 變數就是容器的名字, 但在 Python 中, 變數只是 張標籤, 此標籤指出了真正容器之所在, 因 參照了該容器裡 保存的物件 標籤 Python 的變數 參照 真正的容器 ( 空間 ) 物件 ( 資料 ) 2019/2/20 25
物件參照 範例 : 整數變數的賦值 >>> a = 5 >>> a = kkk >>> a = 3.14159 ❶ 5 a 參照 ❷ ❸ " kkk" 3.14159 2019/2/20 26
物件參照 範例 : a 參照 10.5 b 參照 hello a 參照 6 b 參照 is: 判斷兩個物件的 id 是否相同 ==: 判斷兩個物件的 value 是否相同 2019/2/20 27
變數與物件 Python 中所有東 都是物件 (object), 這是說 Python 裡的資料 (data) 都是物件 凡是物件都有 : (id) 號碼 (type) 型態 (value) 數值 物件的值可以是可變的 (mutable), 或是不可變的 (immutable), 通常這是說複合資料型態 (compound data type) 的元素 (element) 是否可以替換, 例如序對 (tuple) 及字串是不可變的, 串列 (list) 或字典 (dictionary) 是可變的 當物件不再使 時, 直譯器會 動垃圾收集 (garbage collection), 釋放記憶體空間 2019/2/20 28
可變與不可變 資料型態有分成可變的 (mutable) 與不可變的 (immutable) 指的是變數所參照的物件本身可否改變 不可變資料型態 : 整數, 浮點數, 字串 被自動回收 a 參照 5 6 變數 a 原先參照的物件 : 整數 5 並沒有被改變而是產生了新的整數物件 6 並且將變數 a 重新繫結到物件 6 2019/2/20 29
可變與不可變 可變資料型態 : 串列, 字典 a 參照 0 1 2 1 a 6 a 參照 0 1 2 3 變數 a 原先參照的串列被改變了, 增加了 個元素 5.1 也改變了第三個元素 7 1 a 5.1 6 7 2019/2/20 30
資料型態 整數 int 浮點數 float 複數 complex 字串 str 字節 bytes 字節陣列 bytearray 串列 list 序對 tuple 集合 set 字典 dict 2019/2/20 31
數字型態 內建的數字型態 (numeric types) 共有三種 int 整數 100 float 浮點數 123.45 complex 複數 3+4j 2019/2/20 32
數學運算 基本四則運算 : + - * / % 運算特性 : 以複雜者為主且運算精確性有限 Python 所 援的特殊運算 : 次 : 2**10 整商除法 : 10//3 2019/2/20 33
複數運算 實部 虛部 2019/2/20 34
內建序列型態 內建的序列型態 (sequence types) 共有六種 str: 字串 (string), 不可變 (immutable) bytes: 字節 (byte), 不可變 (immutable) bytearray: 字節陣列 (byte array), 可變 (mutable) list: 串列 (list), 可變 (mutable) uple: 序對 (tuple), 不可變 (immutable) range: 內建函數 range() 回傳的物件 (object) 常 於 for 迴圈 (for loop) 2019/2/20 35
字串 (String) 字串的特徵為引號, 包含單引號, 雙引號和三引號 預設以單引號表 使 索引位置可以存取元素 字串的元素是有序的 ( 誰前誰後有關係 ) 字串頭尾的引號必須相同對稱 Strings ( 字串 ) a = Hello # Single quotes b = World # Double quotes c = Bob said hey there. # A mix of both d = A triple qouted string can span multiple lines like this e = Also works for double quotes 2019/2/20 36
序列型態 (sequence types) 可進 以下的計算 2019/2/20 37
串列 list 是最實 也最常 的群集 可以收集不同資料型態的元素 list 中的元素允許是 list list 的元素是有序的 ( 誰前誰後有關係 ) list 的特徵是中括號 [ ], 使 索引位置可以存取元素 不同型態的資料可以被收集在同一個清單中 顯示 list1 的第一個元素 ( 在電腦領域裡計數由零開始 ) 2019/2/20 38
http://docs.python.org/ 2019/2/20 39
The Python tutorial is good! 2019/2/20 40