“Parseltongue for Muggles: Pratical Introduction of Python” 2016/12/2 Talk @ NTU Open Source Community, Taipei, Taiwan.
讔 絤 犖 胼 Ӥ ಋ ጱ粖藯承շ荩㣐彂爢Python㻜欽Ⰵո2016/12/2 RSChiang @ NTUOSC / CC BY-SA 4.0
View Slide
ߢ㾏 ౯ฎভຣ犨կPhoto by Hiram Huang on Flickr, CC BY-SA 2.0岄傀य़䋊ဩ䋊羬ࢥଙ羷岄य़樄რᐒ咳蚏Ո膑玊ێSITCON 2017 者ݟݢ犥ࣁ [email protected] ฎ poren.tw 膏౯肥媒牐
樄তԏ獮• 嘦ਧ૪妿蕕অԧ Python 3.4+ → 螭䷱伛猋অጱՈ牧纸盅䨝׀ݱଘݣጱਞ蕕ොୗ• 蝡ฎ樄硯ୗጱ抓纷牧֦ݢ犥ࣁ樄რᐒ Slack物• ܨ碻㺔ҁ哴ᓕ tag @RSChiang҂• ᥝ穩᯿蕦Ӟ螁牏ے盠仂眸蝧ଶ• 磭౯氃क़䌘礓犚蟂獤狶愆獅
Python• 1991 ଙڊ匍ጱ纷ୗ承• ̿ग़᯿َ塅̀ҁmulti-paradigm҂ → 篷抷ࡅ稭Ջ讕觓໒᮷胼Ӥಋ (ɾТɾ)• ݱଘݣӤ᮷胼ֵአ牧ᘒӬ犋襑ᥝ翥捌
For Windows獮ஃ python.org牧ӥ斉磧碝粚ጱ Python 3牪ೲᆙ瞲纈ਠ౮ਞ蕕牐
For Mac• 羬翄獉ୌጱ Python 粚穉斃膑• brew install pyenv• echo 'eval "$(pyenv init -)"' >> ~/.bash_profile• pyenv install 3.5.2• 蝚螂 pyenv shell 獥矦 Python 粚
For Linux• ֵአ python3 瞲犤珸㵕 Python 3 Ubuntu 14.04+ ૪妿獉ୌ Python ԧ• 蝚螂 python3 --version 䲒礚褰ᴫጱ粚• sudo apt-get upgrade python3 ݢ犥Ӥ翕ತತ֦ጱ咳ᤈ粚螕አጱॺկݷ圸
ತک PythonOS X: Spotlight → 奰ᒒ秚Linux: Ctrl + Alt + Tҁ憙咳ᤈ粚ᘒਧ҂Windows: ℂ纷ୗڜ蔭疨ತ IDLE
㮆މ牦
print("ࡣ牧Ӯኴ牦")ޞ藗 Python ౯㮉ᥝ狶Ջ讕牧蝡愊ฎ玢ڊ䩚ᥜ㬵牐ೡ皭䨝ಅ磪ᥝڜڊ㬵ጱ虻懱۱֘牐疰猟ࣁ䌃ᒍӞ䰬牧櫕蒈ޞ藗 Python 蝡ฎӞྦྷਁ牐㻌蒈犖ݢ犥አ牐
ು㮆㫂碍
import random藶क़ᶎጱ纷ୗਠ౮Ӟ犚౯㮉犋䨝ጱۑ胼牐౯㮉ᥝತጱक़蟂纷ୗฎ̿random̀
random.randint(1, 49)̿ጱ̀random integer ጱ婘䌃牧蝡㮆獢ୗ䨝叨ኞՕෝ妔ਧ塅瑻獉ጱ碉碍牐㴄㴄㶓獈ጱ̿random̀ℂ 1 ک 49
蒂ቘ虻碘
restaurants = ["ၚय़ᛔۗ訇", …]蚤碍䋊Ӥጱ̿ፘ缛̀犋Ӟ䰬牧蝡愊ฎ̿瞲窔̀ጱ牐ොೡ皭ޞ藗 Python 蝡ฎӞ㮆檋ڜ牐ਧ嬝Ӟ㮆ݷਁ牧蝡愊ฎ̿訇皣㮉̀牐愊ᶎݢ犥ਂ硯犋ྊӞྦྷਁ牐
纸֢狕硬
restaurants.append("議澕ੜ犊")restaurants += ["ੜᐰ", "ݣᑀय़"]植㖈restaurants酭僽⦐ꤏ涸չ暟⟝պ౯㮉ݢ犥ᥝ檋ڜᴫےӞྦྷਁک磧ੲᒒ殹搭⛳〳⟃♧妄꣡⸈㥪㢵媯a = a + b " a += b
restaurants[0]len(restaurants)犖ݢ犥አᔱ翥蒈玲独牧ℂ 0 樄ত碍玲檋ڜጱ裾ଶ
㬵ುඪ壆މ牦
ٌ䋿磪讨य़ੜአԧ㬵㵕讨 Python ጱ፥໒
from urllib.request import urlopenইຎ֦螭ࣁአ膑粚 (2.7)牧ਙ矦౮ urllib2
urlopen("http://orange.tw").read()樄翕࣎ҁURL҂獊蟂捝ڊ㬵
匍ࣁ牧૪Ꭳአ箛ԧ牦
秇奲 (modules)• 磪ԧ瞲䠁牧者ᥝ磪禼ಋ胼虏Ի段禼㿁㵕蚏㬵牦• ℂ媑瑽ک碍硁獤ຉ牧犋ݶ秇奲ݢ犥㶧ۗਠ౮犋ݶጱ犨率牐• Ӟ㮆 Python 䲆 (.py) 犖ฎӞ㮆加缏ጱ秇奲߶牐
XKCD: Python, CC BY-NC 2.5
کߺ愊ತ秇奲牫• 獉ୌጱ秇奲ݢ犥ℂ Python ਥො翕ᒊ礚扇ک• 皃㮆秇奲ݢ犥ᤩ۱౮Ӟ㮆ॺկ (package) 猟禼ṛጱ硌獅۱牧蕕Ӥ݄ԏ盅疰磪碝ದ胼ݢ犥አԧ• ᐒᗭ揙糽ጱॺկ䨝Ӥ㯽ᛗ pypi.python.org• ݢ犥蝚螂ॺկᓕቘ纷ୗ pip ਞ蕕碝ጱॺկ
অአጱ秇奲㮉膐皃㮆纷ୗӾଉአጱֺৼ
import base64base64.b64encode("樄რᐒ".encode())磪岉蚕ጱ扖ݢ犥 Google Ӟӥ牧ਙ胼犨֜虻碘旉౮ݢ氥纈ጱਁض翥嘨౮ԫ蝱֖໒ୗ
import smtplibclient = smtplib.SMTP_SSL( "mail.ntu.edu.tw", port=587)client.sendmail(…)盄ग़Ո᮷犋Ꭳ螇牧ٌ䋿ݝᥝӣᤈ纷ୗ疰ݢ犥ੀӞ email
import rere.match(r"\d+:\d+", "12:00")ྋ憒蔭螈ୗ (regular expression)ݢ犥አ㬵穉䌘牏玲դਁ硯蝱౯㮉ᥝ䲒涢ጱਁԀ獉牧 狶襎扖蒈嘨涢挨ጱ碻狡盄অአ߶牐矟蝄ᥝ穉䌘ጱฎ̿碍ਁ (\d) Ӟ㮆犥Ӥ (+) 牏ٚӞ㮆ٛ蒈牏ٚ碍ਁӞ㮆犥Ӥ̀蝡䰬ጱ໒ୗ”raw string”虏 Python ኼ愊ᶎጱ粬ྛᒧ蒈
XKCD: Regular Expressions, CC BY-NC 2.5
Ӟ犚ྋ憒蔭螈ୗ• 薫ೡ皭 [] 䨝穉䌘̿ೡ皭愊犨֜Ӟ㮆ਁ̀• ူ窚ೡ皭 {n} դ蔭̿者و磪 n 㮆̀• 磪犚ଉአጱ䨝磪婘䌃牧ֺই藯 [0-9] ݢ犥䌃౮ \d• 膐蛪獤挨ਁ蒈傶ֺ牧[A-Z][12][0-9]{8}
膐ֺ物አ re 螂筪Ի矦䋊໊
䋿瑿娞聜蝡ฎӞ皰 COSCUP 2016 ጱᆙ粙牐 ইຎ౯㮉磭አ Python 疥ਙ纸֢獶牧扗ெ讕旰珌牫Photo by य़ۗ @ COSCUP on Flickr, CC BY-SA 2.0
PillowPython 猟蒂ቘ獢ୗ䓚 (PIL)ጱ獤ඪ粚牧ฎ磧অӤಋጱ猟蒂ቘॺկԏӞ牪ࣁ pillow.readthedocs.org 磪托奞ጱֵአկ牐
Cheat sheet[sudo] pip install Pillowfrom PIL import Imagephoto = Image.open('Desktop/AARRR/ਡਡ.jpg')ਡਡ = photo.crop((0, 0, 猟.width * 2 / 3, ̴̴ photo.height * 2 / 3)).resize((1024, 768))箜ਡਡ = ਡਡ.convert('L')箜ਡਡ.save('Desktop/AARRR/БББ.jpg')
य़ۑޞ౮牦匍ࣁ֦૪妿䨝च器ጱ猟蒂ቘԧ牧֢傶ᛔ౯౮裾ጱ娞聜牧 Ꮈ绗獉ୌ獢ୗ os.listdir()牧瞙稞虻碘䄸愊ጱᆙ粙婘ੜމ牐
C++ ጱ䌘穉愆獅硽
#include using namespace std;int main(int argc, char* argv){cout << “Hi NTUOSC!”;return 0;}print(“Hi NTUOSC!”)$ 1ZUIPOٌ䋿Ӟᤈ疰胼蔭螈竃༩纷ୗᥝ狶Ջ讕ԧ牐蚤 Python ጱ print() ฎፘݶጱ牐
string a = “ࠡ”; string b = “”;for (int i = 1; i <= 5; i++){b += a;}cout << b;print(“ࠡ” * 5)$ 1ZUIPOਁᥝ虋Բ狝牫ፗ矑犔犥 5 疰অԧ牧犋᪒ࢧ݄䢏槑Ꭺ牐
for (int i = 1; i <= 5; i++){cout << “#” << i << “\n”;}for i in range(5):print(“#” + str(i))$ 1ZUIPO懿ᥝአ绚໒婘矎߶牐
Questions?RSChiang @ NTUOSC / CC BY-SA 4.0*抓盅娞聜ጱ綡櫞褾ዩ牧᮷ݢ犥ک樄რᐒ Slack 扇㺔߶牐