python meetup 1

14
Python meetup - 1 Vic Yang

Upload: shan-ho-yang

Post on 04-Jul-2015

211 views

Category:

Software


2 download

DESCRIPTION

Python in NTNU Lab 212

TRANSCRIPT

Page 1: Python meetup 1

Python meetup - 1Vic Yang

Page 2: Python meetup 1

Installation

Page 3: Python meetup 1

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/

Page 4: Python meetup 1

First Program

Page 5: Python meetup 1

‘Hello world’開啟編輯器,打⼊入print ‘Hello world’以附檔名.py存起來,如此⼀一來此⽂文件便可被視為python script。

使⽤用sublime的building system便可在sublime裡⾯面看到執⾏行結果。

!

⼩小練習:四則運算、次⽅方運算

Page 6: Python meetup 1

Introduction

Page 7: Python meetup 1

Why using Python?軟體品質 - 可讀性佳、縮排取代⼤大括號、Object-Oriented、別⼈人寫出來的code⽐比較容易看懂

⽣生產⼒力 - 相對於C++, Java 程式碼的量⼤大約1/3, 1/5

可移植性 - 不同作業平台上可以使⽤用

程式庫 - 最⼤大的好處之⼀一,許許多多的輪⼦子

整合其他語⾔言 - 其他語⾔言平台可以port,例如Iron Python, Jyphon

好吃、新奇、⼜又好玩

Page 8: Python meetup 1

缺點慢,這是⽅方便的代價,但有其他更底層的實作讓這件事慢慢的變快,例如Pypy, Dropbox的JIT

語法⽅方⾯面的問題,ex. a.len() vs. len(a)

Python 內部資料結構的實作

1. List - Python語⾔言的資料結構實作造成他是最⽅方便卻也是最危險的資料結構(我也是看了YouTube才知道

2. http://www.youtube.com/watch?v=fYlnfvKVDoM

Page 9: Python meetup 1

從功能性來看動態定型 - Python 會記錄程式執⾏行時的物件種類,不⽤用宣告複雜的形態跟⼤大⼩小

⾃自動記憶體管理 - 當物件不再使⽤用時,啟動GC,會記錄低階記憶體細節,總之我們不⽤用擔⼼心

⽀支援⼤大型程式設計 - 可以分⾨門別類的來寫code,整合起來相對⽅方便

內建物件型態 - [], {}, ()…

內建⼯工具 - 類似C++的STL

程式庫公開⼯工具 - 最⼤大的好處之⼀一

協⼒力廠商公⽤用程式

Page 10: Python meetup 1

練習

Page 11: Python meetup 1

基本語法條件:if...else...

迴圈:for...in

遞迴

邏輯: and, or, not

程式碼匯⼊入 import

⻑⾧長度len(), 強制轉字串str()

Page 12: Python meetup 1

內建程式庫練習:parse 下⾴頁的xml格式的⽂文件,使⽤用內建函式庫xml.etree.cElement

輸⼊入:⼀一段字串

輸出:將__TITLE__⽤用程式改成輸⼊入的字串

Page 13: Python meetup 1

<?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>

Page 14: Python meetup 1

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)