python meetup 1
Post on 04-Jul-2015
211 Views
Preview:
DESCRIPTION
TRANSCRIPT
Python meetup - 1Vic Yang
Installation
InstallationPython 2.7 or Python 3.4
https://www.python.org/downloads
Sublime Text 2 - editor with building system
http://www.sublimetext.com/2
pip - python package index (package manager)
http://www.pip-installer.org/en/latest/installing.html
git - version control (optional)
http://git-scm.com/
First Program
‘Hello world’開啟編輯器,打⼊入print ‘Hello world’以附檔名.py存起來,如此⼀一來此⽂文件便可被視為python script。
使⽤用sublime的building system便可在sublime裡⾯面看到執⾏行結果。
!
⼩小練習:四則運算、次⽅方運算
Introduction
Why using Python?軟體品質 - 可讀性佳、縮排取代⼤大括號、Object-Oriented、別⼈人寫出來的code⽐比較容易看懂
⽣生產⼒力 - 相對於C++, Java 程式碼的量⼤大約1/3, 1/5
可移植性 - 不同作業平台上可以使⽤用
程式庫 - 最⼤大的好處之⼀一,許許多多的輪⼦子
整合其他語⾔言 - 其他語⾔言平台可以port,例如Iron Python, Jyphon
好吃、新奇、⼜又好玩
缺點慢,這是⽅方便的代價,但有其他更底層的實作讓這件事慢慢的變快,例如Pypy, Dropbox的JIT
語法⽅方⾯面的問題,ex. a.len() vs. len(a)
Python 內部資料結構的實作
1. List - Python語⾔言的資料結構實作造成他是最⽅方便卻也是最危險的資料結構(我也是看了YouTube才知道
2. http://www.youtube.com/watch?v=fYlnfvKVDoM
從功能性來看動態定型 - Python 會記錄程式執⾏行時的物件種類,不⽤用宣告複雜的形態跟⼤大⼩小
⾃自動記憶體管理 - 當物件不再使⽤用時,啟動GC,會記錄低階記憶體細節,總之我們不⽤用擔⼼心
⽀支援⼤大型程式設計 - 可以分⾨門別類的來寫code,整合起來相對⽅方便
內建物件型態 - [], {}, ()…
內建⼯工具 - 類似C++的STL
程式庫公開⼯工具 - 最⼤大的好處之⼀一
協⼒力廠商公⽤用程式
練習
基本語法條件:if...else...
迴圈:for...in
遞迴
邏輯: and, or, not
程式碼匯⼊入 import
⻑⾧長度len(), 強制轉字串str()
內建程式庫練習:parse 下⾴頁的xml格式的⽂文件,使⽤用內建函式庫xml.etree.cElement
輸⼊入:⼀一段字串
輸出:將__TITLE__⽤用程式改成輸⼊入的字串
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>__URL__</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>__BUNDLEID__</string> <key>bundle-version</key> <string>__BUNDLEVER__</string> <key>kind</key> <string>software</string> <key>title</key> <string>__TITLE__</string> </dict> </dict> </array> </dict> </plist>
import xml.etree.cElementTree as ET import sys !BUNDLEID = '__BUNDLEID__' bundle_identifier = 543 !tree = ET.ElementTree(file='default.plist') !root = tree.getroot() !for i in tree.iter(tag='string'): if i.text == BUNDLEID: i.text = str(bundle_identifier) !tree.write(sys.stdout)
top related