Python 簡介 林子傑
Outline Python 特色 程式語法 應用
Why Python?
TIOBE Index for April 2016
Python 特色 設計哲學是: 直譯式、動態語言 開發快速 「優雅」「明確」「簡單」 程式可閱讀性高 好學! 好寫! 效能?? 好學! 好寫! 效能?? 開發快速 適合做 prototype 一個程式碼被閱讀的次數很高,且某種程度上讀程式比寫程式困難 python2.0 - 2000年發布. ( c大約40年 .c++ 30 直譯式語言會將程式碼一句一句直接執行,不需先行編譯,好處是在開發修改時無須一一重新編譯 動態語言程式在執行時可以改變其結構,例如新的函式、物件、變數的型別也可以變換
Python 高階的資料型別能在一陳述句 (statement) 中表達很複雜的操作 陳述句的段落以縮排為區格而非刮號 不需要宣告變數和引數
誰在用 Python?
安裝 Python Ver. 3.5.1 or Ver. 2.7.11 https://www.python.org/downloads/
開啟 Python shell
Hello world! >>> print ‘hello world!’
開發環境 Pyzo – 輕量、小巧 PyCharm – 中大型專案需求 Eclipse with PyDev http://www.pyzo.org/start.html PyCharm – 中大型專案需求 http://www.jetbrains.com/pycharm/ Eclipse with PyDev http://www.pydev.org/
Pyzo
Pyzo 好用指令 查看說明文件: ?X or X? ??X or X?? 路徑相關: cd ls 變數相關: who - list variables in current workspace whos - list variables plus their class and representation 執行相關: timeit X - times execution of command X run X - run file X
Python 語法 使用 ”縮排” 代替大括號,且規範為 4 個空格 不使用分號 “ ; ”
Python 語法 資料型態: Integer Float Boolean String – ‘hello’ List – [ … ] Dictionary – { … }
String str1 = ‘hello’ str2 = “!!!” str3 = “““ hello! goodbye””” 'hello!\ngoodbye' str4 = str1 + str2 >>> print str4 hello!!!
String str = ‘hello’ >>> str[0] ‘h’ >>> str[2] ‘l’ a = 100 str = “ans: {num}” .format(num = a) >>> print str ans: 100
List lst = [ 100 , 'hello‘ , [1,2] ] >>> lst[0] 100 [1, 2] >>> lst.append('hi') >>> lst [ 100, 'hello' , [1, 2] , 'hi' ] >>> lst[-1] 'hi'
List lst = [ 100 , 'hello' , [1,2] , 'hi' ] 'hello‘ >>> lst.pop(1) 'hello‘ >>> lst [ 100 , [1, 2] , 'hi' ] >>> lst.insert(1,'goodbye') >>> lst [ 100, 'goodbye' , [1, 2] , 'hi' ]
Dictionary dic = { 'name' : 'john' , 'age' : 30 } >>> dic['f'] = 2 >>> dic { 'age' : 30 , 'name' : 'john' , 'f' : 2 } >>> dic.keys() [ 'age' , 'name' , 'f' ] >>> dic.pop('f') 2 >>> dic { 'age' : 30 , 'name' : 'john' }
流程控制 if / while if a == 10: print 'is 10' while a > 0: print a break continue
if a = 2 if 0 <= a <= 3: print '0~3' elif 4 <= a <= 6: else: print 'not in 0~6' >>> a = 3 >>> 0 <= a <= 3 True
流程控制 for >>> range(0,3) [0, 1, 2] >>> range(0,5,2) for a in range(0,5): print a >>> range(0,3) [0, 1, 2] >>> range(0,5,2) [0, 2, 4] >>> range(6,1,-1) [6, 5, 4, 3, 2]
基本輸出/輸入 print >>> a = 10 print ‘hello’ num = 10 print num lst = [1,'hi'] print lst >>> a = 10 >>> print 'he is' , a , 'years old' he is 10 years old
基本輸出/輸入 input imput = input( 'message' ) 2.x 3.x 依據輸入不同給予不同類別 ex. 輸入 1 -> int , 輸入 ‘hello’ -> string raw_input() 3.x 統一給予為字串
自定義函式 def myPower( num, power ): return num ** power
import import math, os import myFunction 現成的 library 自定義函式、類別 需在相同目錄下 myFunction.myPower myFunction.str
第三方函式庫 web框架 科學計算 GUI 影像處理 Machine Learning Django Flask Matplotlib SciPy Machine Learning scikit-learn GUI PyGtk PyQt 影像處理 PIL Pillow
安裝 >>> pip install pillow
批次作業 windows也有內建的一些方式可以修改
web資訊抓取 parser – sgmllib SGMLParser
科學計算 - SciPy
Scrapy 1.1 – PTT資料統計 擷取資料 推文分析 自動翻頁,並打開每篇文章 抓下標題、作者、本文 抓下每一則推文的作者和分數 matplotlib Numpy scikit-learn Seaborn
總結 Python 是一個簡單易學且好用的程式語言 第三方函式庫使用方便 開發快速,應用有潛力 語法簡單、閱讀性高,使用上也相當彈性 函式庫使用相較其他語言容易得多,只需import,拿來即用 IOT、SDN
參考資料 http://wiki.python.org.tw/Python Python 台灣使用者群組 http://www.codedata.com.tw/python/python-3-tutorial-1-1-getting-started/ Python 3 Tutorial http://www.openfoundry.org/tw/tech-column/8536-introduction-of-python-extension- management-tools Python 套件管理程式簡介 http://dokelung-blog.logdown.com/posts/280520-python-quickstart Python 快速入門 https://zh.wikipedia.org/wiki/Python Wikipedia http://city.shaform.com/blog/2016/02/28/scrapy.html Scrapy + Python 3: PTT 資料抓取與分析