ROSS RHEINGANS-YOO: Hi, Ako Ross. At ito ay isang CS50 seminar. Ito ay magdadala sa iyo mula programming sa C upang programming sa sawa. Python ay isang scripting wika. Ito ay higit sa lahat ay tulad ng C sa syntax, kahit na ilang sa mga teknikal na detalye ng paano na syntax ay naisakatuparan ay bahagyang naiiba. Ito ay mas malakas kaysa sa C sa ilang mga paraan. Ito ay mas makahulugan para sa kung saan eksakto sa iyong computer memory ay makakakuha ng inilatag, kung paano ito ay makakakuha ng inilatag, kapag ito ay makakakuha ng kalayaan, at mga uri ng mga bagay. Ito ay mas kapaki-pakinabang kaysa sa C sa ilang mga paraan, dahil ito ay mas madali sa programa in. Ang wika ay, sa ilang mga mga tao, mas madaling maunawaan. At talagang, ang layunin ay para sa ito upang maging mas mabilis mag-program at potensyal na mas mabagal upang maipatupad. Ngayon kung sa tingin mo ang tungkol sa ang halaga ng oras ginastos mo sa iyong huling hanay ng problema sa pagsusulat ang iyong code laban sa mga halaga ng oras na ginagamit mo sa iyong huling problema itakda Isinasagawa ang iyong code, Gusto mong isipin na ang wika na kung saan ay dalawang beses nang mas mabilis sa pagsulat, at dalawang beses bilang mabagal upang maipatupad, baka maging isang pagpapabuti sa C sa ilang mga paraan. Totoong kapag sinusubukan mong isulat maliit na mga programa na gawin ang maliit na bagay, Python ay isang kapaki-pakinabang na wika ng mga pagpipilian. At sa dulo ng mga ito seminar, Umaasa ako na makikita mo ay maaaring gumawa ng mga pagpili sa mga proyekto sa hinaharap tungkol sa kung aling mga wika ay tama na gamitin, hindi ang ideya na ang isang wika ay higit pa tama ang lahat ng oras. Ang ilang mga bagay tungkol sa kung ano ang seminar ay. Seminar na ito ay hindi inilaan upang magturo sa iyo Python mula sa simula. Python ay halos katulad sa C, at ako sa pag-aakala na ikaw ay isang CS50 mag-aaral, o isang tao na may isang katulad na pagkikilala sa C. Kung ikaw ay CS50 ng mag-aaral sa paligid ng problema set 6, kaya ikaw makita ang marami ng bagay sa C, Bibigyan kita ang mga pangunahing pagkakaiba, at ang ilan sa mga bagay-bagay na gumawa ng Python iba't ibang at mga espesyal na at kapaki-pakinabang, ngunit hindi ako pagpunta sa pumunta para sa kung ano ang isang programming language ay at kung paano sumulat ng mga programa. Gayunman, ito seminar ay magturo sa iyo na magsulat ng isang Python programa kung ikaw ay isa sa mga ilang mga pangkat sa iyo. Muli kami ay tumingin sa kung paano gusto mo ipatupad psets-- na dapat ay 1-6 in Python-- at magbigay ng payo sa mga opisyal na dokumento para sa pagsangguni sa hinaharap. Ang iba pang mga bagay na mahalaga tungkol sa kung paano ito makipag-usap ay itinalaga, ang video na ito ay magiging online, kagandahang-loob ng CS50, kaya hindi ka dapat makaramdam kailangan mong kumuha ng mga tala. Maaari mong palaging bumalik at tumingin sa ito sa ibang pagkakataon bilang isang sanggunian. Bukod dito ang mga slide magagamit sa ngayon sa site na ito, na dapat kumuha ng gagawin mo ang isang Google doc. Ito ay isang bahagyang abridged bersyon ng kung ano ang ako ng pagpapakita sa screen. One-ingat caveat bago Tumalon kami sa, Python 3 ay isang iba't ibang mga wika mula sa Python 2. Tumingin sila ng isang pulutong ng parehong; may mga tunay bahagyang teknikal na mga pagkakaiba na magiging sanhi ng mga programa nakasulat sa Python 2 hindi na ma-pinaandar sa Python 3 kapaligiran. Ang CS50 appliance ay may Python, sa pamamagitan ng default na ito ay gumagamit ng Python 2. Maaari mong suriin ito sa pamamagitan ng pag-type sa iyong command line python --version, na kung saan ay dapat na output 2.7.6 sa kasalukuyang appliance. Subukan Python 3, na kung saan ay magtrabaho sa appliance, kung sawa ang mga default upang 2.X.Y, alinman sa ang appliance o sa iyong sariling machine. Dapat mong palitan ang Python 3 anumang oras sa ganitong talk na isulat ko Python. Kung ang iyong machine ay patakbuhin ang 2 sa pamamagitan ng default, i-type Python 3 in upang ma upang aktwal sundin kasama at isakatuparan ang mga bagay-bagay. Bukod dito, kukunin ko na ituro sa iyo sa opisyal na mapagkukunan ngayon. docs.python.org/3--~~V ingat na iyon ang isang 3 at hindi isang 2-- may makatutulong na sanggunian. Tutorial ay magdadala sa iyo sa pamamagitan ng marami sa mga parehong bagay na ako ng paggawa ngayon, maliban sa text form. Reference ay kapaki-pakinabang bilang isang reference para sa mga wika, at ang Standard Library ay nagbibigay sa ilang ka ng mga extension may karagdagang mga pag-andar. Kaya isang napaka-unang programa Python. Sa kaliwang mayroon kaming standard C, sa kanan, mayroon kaming sawa. Maaaring may kinikilala mo ang problemang ito, ito ay ang isa sa mga unang problema nagtatakda sa CS50, at ang mga ito malutas ito gamit ang parehong solusyon. Ngayon, ang dahilan na hindi namin tumitingin sa mga tabi-tabi ay upang maaari naming tingnan syntactic pagkakaiba. Isa sa mga elepante sa kuwarto na maaari mong napansin karapatan off ang bat, ay na ay walang sawa pangunahing pag-andar wrapping sa buong code. Kaya sa C, isulat mo ang isang grupo ng mga file, i-link mo ang mga ito nang sama-sama, at ang programa ay nagsisimula sa Isinasagawa sa bagay na tinatawag int main. Sa Python, sumulat ka ng isang ikaw file, execute ang file, nagsisimula sa programa Isinasagawa sa tuktok ng file. Kaya ito ay pagpunta sa simulan sa tuktok ng file bumaba hanggang sa matagpuan ito sa ibang bagay. Kung ito nahahanap ang isang function ng kahulugan, hindi ito aktwal na ay execute na code, ito lamang na tukuyin ang mga function. Ngunit dito, kapag ang unang programa ay n ay katumbas ng 10, ang unang bagay na programa na ito ay gawin ay kumuha ng ganitong halaga ng 10 at itakda ito sa isang variable na tinatawag na n. Eto na ng na linya, ang isa sa mga iba pang mga bagay- sorry-- ito ay nangangahulugan na ang C programa, makikita mo isulat ang mga ito, Makikita mo ang mga iyon, na kung saan ay tumawag sa diyos ang ilang mga utos kalatungin, at pagkatapos ay makikita mo magpatakbo ng isang nagreresulta executable. Python programa, patakbuhin mo ang text file-- ito mario.py baka maging ang file na ito na ako lang ay nagpakita you-- kayo tumakbo file na at kayo execute, at ang mga nilalaman ng mga ito ay naisakatuparan sa pamamagitan ng ang Python interpreter. Maaari mong gawin ito sa iyong IDE. Kaya kung mayroon akong isang Hello file, kung saan ay may lamang na ito ang mga nilalaman. Ito ay tunay na Python 2, hindi Python 3, kaya hindi mag-alala tungkol sa syntax para sa ngayon. Ngunit kukunin ko na tumakbo Python, sa hello.py, at ito ay tumatakbo. Ang isa pang paraan na maaari kong gamitin Python na Hindi ako humarap sa kaya marami sa mga ito talk, ay kung type lang ako Python, ito patak sa akin sa isang kapaligiran kung saan Maaari kong feed na ito Python linya sa pamamagitan ng linya. Kaya dito, kung nag-type sa ko space print 'hello, world'. I-type ang enter. Ito ay dumura sa akin na i-back ang mga resulta na ang mga indibidwal na linya kaagad. Ito ay maaaring maging kapaki-pakinabang. Sa talk kailangan kong gawin ang mga bagay-bagay sa mga slide. At kaya makikita mo na sundin kasama ang alinman sa dito, o sa pamamagitan ng pagsulat aktwal na mga file at pagkatapos ay Isinasagawa ang mga ito. Ngunit, balik sa ito code, isa pang bagay na maaaring mayroon ka noticed-- well, may dalawang bagay na maaari ka paunawa tungkol sa mga bloke. Ang una, sa halip mas pandaigdig, ay na ang Python Wala trailing semicolon. Semicolons ay opsyonal sa lahat ng dako at hindi makasasama sa lahat ng dako. Maaari mong idagdag ang mga ito. Maaaring gumawa ng mga tao na magsulat Python para sa isang buhay paghagikgik sa iyo sa likod ng iyong likod, dahil ang mga ito ay hindi kinakailangan. Ang mga ito ay madalas na isang palatandaan na gaganapin sa paglipas ng mula sa C. Ang mga designer ng mga wika pakiramdam na ito ay mas malinaw sa ganitong paraan at na ito ay hindi kinakailangan na idedeklara sa bawat oras na magtapos ka ng isang linya. Ang isa pang kakaibang bagay tungkol sa n ay hindi ito ay may isang uri ng kalakip. Isa sa mga magic piraso ng Python-- at ako pagpunta sa tawag na ito magic, ngunit may mga tunay teknikal na dahilan kung bakit ito works-- ang isa sa mga magic piraso ng Python ay na variable na maaari palawakin o pag-urong upang maglaman ng anumang data mga uri ay iyong gusto sa kanila na. Kaya ito ay isang 10. Kung sa ibang pagkakataon pababa itinalaga ko rito n 0.5, ito ay tumagal na 0.5. Walang bagay na ito ay isang int dito at lumutang doon, ang anumang bagay na ito ay gumagamit ng n ay, higit pa o mas kaunti, mas ma-chug kasama kung ito ay makakakuha ng alinman sa mga iyon. Maliban na lamang kung may ilang mga tunay na tunay dahilan kung bakit hindi ito maaaring gamitin ang data type na n kasalukuyan ay may, at sa puntong ito ay makakuha maipit at magtapon ng isang error, at ang mga uri ng bagay. Ngunit dito, Python hindi talagang pakialam ang kung ano ang ito ay na ako ng pagpunta sa stick sa ito pangungusap, tulad ng, gusto mo ba ito? Ito bagay na iyon? Oo, ito ay isang uri ng bagay. Kukunin ko stick ito sa dulo. Makikita ito ay isang problema sa susunod, kung isang tao na nais na gumamit ng end na hindi maaaring hawakan ito. Ito ay isa sa mga pangunahing pagkakaiba sa pagitan ng Python at C na ginagawang mas madaling isulat napakalaking C programa at ginagawang mas madali na magsulat napakaliit na programa Python. Ang para sa syntax ay hindi masyadong ibang-iba sa kung ano ang ginagawa nito. Ito ay bahagyang naiiba sa kung paano ito ay ipinahayag. Kaya ito ay isang tunay, kung ano ang tinatawag Pythonic, paraan ng pagsulat ng mga ito. para sa hilera sa hanay (n), ito ay ang hanay ng mga numero mula 0 hanggang n, inclusive sa ibaba at eksklusibong sa itaas. Kaya ito ay mula 0 hanggang n-1, na kung saan ay eksakto kung ano ang ginagawa ang C code, maliban ito ay isang mas madaling na tingnan ang mga marahil. Ang mga kaugnay na block ay hindi nakatakda off sa pamamagitan ng braces, sa halip ito ay set off sa pamamagitan ng ito indentation. Kaya lahat ng mga linya ay apat na mga puwang sa ibabaw ng mga karapatan, o tulad ng tungkol sa isang lapad elephant. At ang mga ito ay ang mga na pagpunta sa ay pinaandar sa na ito para sa. Kung ako guluhin ang indentation sa mga ito at ako itulak na print pabalik sa ang orihinal na indentation, na print ay iwanan ang para sa loop. Sa kaibahan sa C, kung saan dito ko talaga kailangan upang ilipat na closed suhay paligid. Nangangahulugan ito na hindi mo makuha ang mga error na tumalon sa iyo dahil ikaw maglagay ng isang suhay sa maling lugar. Ito ay hindi nangangahulugan na makakuha ka ng mga error na tumalon sa iyo dahil ikaw indent isang linya mali. Kaya ito ay gumagawa indentations sobrang maingat. Inaasahan namin na kayo ay pagiging sobrang maingat anyway sa iyong indentation, at kaya hindi ito ay na mas higit pa sa isang pabigat. Ngunit isang pangunahing patakaran para sa Python, at kami ay may isang pares ng mga na makikita namin pumunta sa pamamagitan sa pamamagitan ng ang mga kurso ng talk, ay subukan natural syntax bago naghahanap ng anumang bagay up. Kaya ang syntax na ito, para sa ang bilang na ito sa mga hanay, ay katangi-tangi sa mga tuntunin ng estilo. Maraming mga bagay sa sawa ipapakita namin makita ang pagkuha ng form na ito. At kaya kung dumating ka up gamit ang isang bagong bagay na iyong tingin mo ay dapat ma- umulit sa mga ito, sa format na ito, lumiliko out ito marahil Sinusuportahan format na iyon. Hindi namin pagpunta upang pumunta super malalim sa ang mga teknikal na dahilan kung bakit na totoo. Ngunit ito ay isang kapaki-pakinabang na Swersey na magkaroon kapag ikaw ay papalapit na Python programa, na ang bagay na ito ay lamang ang pagpunta sa trabaho. Subukan mo. Boot up ang Command Line Interpreter, tingnan kung gumagana ito, lumipat sa sa bagay na ito, bago mo kahit na kailangan upang buksan ang Google at sabihin, ano ang syntax para sa ang partikular na bagay? Maraming ng Python dati mo matuklasan lamang sa pamamagitan ng pagsubok. Kung ito ay mas katulad sa C pagkatapos ay ang fors ay. Tandaan na walang mga panaklong. Ang mga panaklong ay, muli, hindi makasasama ngunit hindi kinakailangan. May isang colon sa dulo tulad lamang ang para sa loop, at muli, ang mga kamag-anak na mga bloke ay naka-indent sa halip na i-set off sa pamamagitan ng braces. Ibang tao na ito ay ang orihinal antas ng indentation, at sa mga kaugnay block muli naka-indent. Mga trabaho eksakto tulad ng ginagawa nila sa C. Ito ay talagang napaka pareho. Muli, i-print ang mawalan sa isang character off ng printf mong pumasa sa ilang mga string. Ito ay lumiliko out string maaaring alinman ay minarkahan off sa pamamagitan ng solong quote o double quotes. Walang pagkakaiba, maliban na loob ng solong quotes maaari mong gamitin ang double quotes sa aabandunahin, sa halip na sa pagkakaroon ng makatakas sa lahat ng mga ito. At sa loob ng double quotes, mo maaaring gumamit ng single quotes sa abandunahin nang hindi na kinakailangang i-escape ang mga ito. Kung iyong nais na ihalo mga ito, maaari mong tiyak maghanap ng online kung paano gawin iyon. Mapapansin mo na sa paglipas dito, Na dumaan ako sa dulo = bagay na ito. Ito ay isang halimbawa ng isang opsyonal argument, na kung saan ay isa sa mga bagay na sumusuporta sa Python na ginagawang masyadong kapaki-pakinabang. Kaya print talaga ay may isang pulutong ng mga arguments, na kung saan ay karaniwang nakatakda sa kanilang mga default na halaga, ngunit dito na ko nagpasya na pawalang-bisa ang isa na tinatawag na dulo. Ang dahilan na kailangan kong override ito sa isang walang laman na string ay na-print sa Python, sa pamamagitan ng default, mga print out ng isang bagong linya matapos ang mga bagay na sinabi mo rin ito. Kaya ito hash ay talagang pagpunta sa mag-print ng hash sa isang bagong linya. At kung hindi ko gusto hash upang i-print out ng isang bagong linya matapos na ito, at pagkatapos ay kailangan kong sabihin hindi i-print ng isa. Ngunit, gayon pa man ito, ang isang huling bagay na ang program na ito ay nawawala na ang isa ay ang isang isama sa itaas. Print ay lutong sa Python kaya talaga na walang header o module na kailangan mong isama, kahit na kung nais upang isama ang iba pang mga bagay sa isang Python script, Gusto kong gawin ito sa isang katulad na format-- ang mga salita ay lamang bahagyang naiiba. Nabanggit ko na tayo hindi kailangan ng isang main dito, dahil nagsisimula ang sawa Isinasagawa sa itaas. Kung Nais kong i-wrap ito sa isang function, ako Gusto gawin ito tulad this-- ko sasabihin def name function, Baka pumunta sa argumento dito at bibigyan namin ng makita ang ilan sa mga mas bago, colon, at pagkatapos ay muli, ito buong set off block ay kung ano ang pagpapatakbo harangan para sa na function. Kaya ito ay ang kahulugan ng function. At mayroong isang deklarasyon, pagkatapos ay down dito, maaari kong tumawag lamang ang function. At muli, ang programa interpreter, simula sa itaas, makikita ito ay ang kahulugan. Hindi ito ay maipatupad ito hanggang sa ito ay makarating dito, at pagkatapos ay ito ay tulad ng, oh ngayon ko na tinatawag na ito, ako Hulaan ko dapat itong maisagawa. Ang isang bagay na ay napaka-pangkaraniwan makita sa Python file, lalo na Python file na ay inilabas sa publiko at nakabuo ng by-- at binuo at pinananatili, ay isang bagay ng form na ito. Ito ay basically-- kaya dahil Python, simulan mo sa tuktok at pagkatapos mong pairalin pababa sa ilalim, Mario ko kung ko lang ay sumigaw dito, pagkatapos ay anumang oras na kasama ko ang file na ito sa isa pang file, dahil Nais kong gamitin ang ay Mario function, na ang ibang mga file ng gagawin mayroon din ang panawagang ito sa Mario sa loob nito. At kapag nagpatakbo ako ng file na iyon, ito ay tumawag sa Mario. Kaya ito ay posible na ang ako lamang nais na patakbuhin ito kung hindi ko na talaga pinaandar ang partikular na file. At sa gayon maaari kong ibalot ito sa isang kawikaan tulad nito, kung saan ko sabihin, kung ang pangalan ng pagpapatupad na ito kapaligiran ay main, pagkatapos ay gusto kong gawin ang mga bagay-bagay. Kung hindi man sa ibang tao ay maaaring isama use-- aking function-- aking mga file, at upang makakuha ng access sa mga function nang hindi na tumakbo ang mga bagay-bagay na gusto kong magpatakbo ng sa file na ito. Ito ay, muli, opsyonal ngunit karaniwan. Ang mga bagay ay entirely-- ay eksaktong pareho sa pagitan ng C at Python, tiyak sa 3. Sa tingin ko sa 2, ang division operator kung minsan ay nagbibigay sa iyo pabalik sa kamay kapag ikaw ay pinamamahalaan sa ints, at alinman sa Nais mo na o hindi mo. Ngunit plus, minus, at oras gumana nang eksakto tulad ng gusto mong asahan, maliban sa paglipas ng bahagyang higit pang mga uri. Kaya maaari mong i-multiply sa kamay sa pamamagitan ng ints, at ang mga uri ng bagay. set gumagana nang eksakto ang parehong. Maaari mong gamitin ang dalawang pantay na mga palatandaan. inequals-- mas malaki kaysa sa, mas kaysa sa, mga uri ng mga bagay- may kahulugan na hindi ka pamilyar sa mga ito. Saan C ay gumagamit ng mga operator, Python ay gumagamit ng bahagyang mas English nababasa iyan. Kaya sa halip ng dalawang, ampersand, ikaw literal-type ang salitang "at", "o," o hindi." Tulad ng sa iyong if-- sa iyong kondisyon na pahayag, Nakita namin na mas maaga na ito syntax sa C tumutugon sa syntax na ito sa sawa. At doon ay hindi isang pulutong ng iba't ibang doon, maliban para sa isang maliit na piraso ng bantas sa paligid ng mga gilid. Muli, kung saan C gagawin ng iba pa kung, Python gumagamit elif, ngunit ang mga ito ay halos pagbabago sa antas ng ibabaw. Pag-ulit na tulad nito ay madalas nakasulat sa kawikaan sa sawa. Maaari mong likhain ang ganitong uri ng bagay sa isang loop habang nasa labas kung nais mo, ngunit ikaw tiyak na hindi kailangang. At muli, kung nais mong ang i-print ang mga sangkap sa ng isang array maaari mong gawin ito sa ganitong paraan. Isa sa mga bagay na masaya tungkol sa Python bagaman, ay na hindi mo na kailangan gamitin ito tularan, at maaari mong gamitin ang isang bahagyang mas eleganteng isa. Sabihin mo para sa isang in ary. Kaya sa halip na pagpunta dito at tumatakbo sa ibabaw ng mga indeks, at pagkatapos ng paghila sa labas indibidwal na mga elemento, sabihin sa iyo ang para sa tunay na makatarungan tumakbo sa ibabaw ng mga elemento ng kanilang sarili. At pagkatapos ay kahit anong ginagawa mo sa loob ay maaaring gumana nang direkta sa mga elemento, na kung saan ay medyo masaya. At kami see-- gagamitin namin muli at muli na kawikaan habang naglalakad kami sa pamamagitan ng code. Ito ay, muli, ang isang halimbawa ng isang bagay na makikita ko tumawag Python magic, kahit na may mga napaka-teknikal na mga kadahilanan kung bakit ito gumagana. At may mga teknikal na mga bagay-bagay na kailangan na maging totoo tungkol sa array upang para sa upang gumana sa likod ng mga eksena. Ang bagay ay na karamihan ng mga uri na kung saan gusto mong asahan na ito upang gumana nagkaroon ito ipinapatupad para sa mo sa built-in na wika. Isa pang bagay na magiging maganda kung ito ay nagtrabaho sa lahat ng wika, ngunit may ilang mga kadahilanan kung bakit hindi na ito, i-print ang mga oras string na ito bilang. Ino-out sa Python, ito gumagana nang eksakto ano ang gusto mo, na kung saan ay katuwaan lamang, at nangangahulugan na maaari naming aktwal mabawasan ang program na ito, muli mario.c. Sa halip na iterating isang pulutong, maaari naming sabihin lang, gusto ko ng ilang bilang ng mga puwang, Gusto ko ang bilang ng mga hash, at ilang mga hash sa dulo. At muli, ginagamit namin ang format na ito. Dito, kami ay pagpasa sa isang variable sa ganitong paraan. Muli, hindi namin kailangan sabihin ano ang uri ng variable na ito ay, at ang tanging oras bibigyan namin ng makakuha ng mga error ay sa run oras. Kapag ang isang tao sumusubok upang pumasa sa isang bagay sa, ito ay darating sa function masarap lamang. Kung kalso namin dito dahil hindi ito ang bagay na maaari kang lumikha ng mga saklaw ng higit sa, Kukunin ko ang isang error runtime doon, at kukunin ko upang i-debug ang mga ito na paraan. Ngunit pansamantala, hindi ko alam kung upang maging maingat tungkol sa kung ano makakakuha ng lumipas sa, hangga't sa ang aktwal na execution ang lahat ng ito gumagana masyadong malinis. Maaari ko bang kahit na gumawa ito isang maliit na piraso ng dumi paggamit ng isang partikular na built-in function sa mga string, na kung saan ay Kanan justify. Ito ay lamang ng isang kapaki-pakinabang na function nakahiga sa paligid ng library. Ito ay sa papeles kung ikaw ay pumunta at hanapin ito. At sinasabi ko, well ako pagpunta sa may ang string na ito, ang ilang bilang ng mga hash, at gusto kong tamang basehan para it-- pad ito na may mga puwang na ito ang haba. Muli, ito ay nasa dokumentasyon, na nagdudulot us-- Kukunin ko talagang i-click sa pamamagitan ng these-- na nagdadala sa amin sa aming pangalawang patakaran para Python-- standard library pamamaraan function na ang iyong mga kaibigan. At ito ay madalas na nagkakahalaga ng iyong habang pumunta naghahanap ng paghanga ko kung may isang bagay na gumagana ito lamang. May marahil ay. Kung gusto mong i-pad ang isang string, kung gusto mo sa nais na kumuha ng likod kalahati ng isang string, kung gusto mo sa tulad ng paghahanap sa pamamagitan ng isang string, kung gusto mo upang basagin ang isang pares ng mga bagay-bagay kasama ang isang string may mga kuwit sa pagitan ng mga ito, may mga standard library pag-andar para sa paggawa nito. At ito ay gumagawa ng iyong buhay mas madali kung gagamitin mo ang mga ito sa halip ng mga pagulong sa labas lahat sa inyong sarili sa limang linya ng code dito, limang linya ng code dito. Na talagang nagsisimula sa magdagdag ng hanggang sa real time. Isa sa mga kagiliw-giliw na mga bagay-bagay tungkol sa kung paano makakakuha ng mga ito na tinatawag na. Mapapansin mo na may isang tuldok na bagay. Mayroon akong ilang mga object sa kaliwa, at pagkatapos ay tumawag ako ng isang tuldok sa isang function. Ito ang isa sa mga paradigms na sawa ay gumagamit ng para sa paglakip pamamaraan sa mga bagay. Susubukan naming makipag-usap tungkol sa kung ano ito ay tunay madaling sabi sa dulo, pero alam na maaaring pareho naming patakbuhin sa mga bagay-bagay sa pamamagitan ng pagkuha na ang bagay na sinasabi dot ano man, o sa pamamagitan ng pagtawag isang function na tumatagal na object at ilang iba pang mga argumento. Kaya ang mga ito ay parehong mga paraan na mga bagay na makapag tapos sa Python. At kung ang isang partikular pag-andar ay ipinatupad sa ganitong estilo o ito style ay isang bagay na ikaw ay dapat magmukhang up hanggang sa makuha mo ang isang hang para sa kung saan ang isa ito ay malamang na mapunta sa. May isang mas marami o mas cohesive pilosopiya sa likod ng Python na maunawaan mo karamihan sa pamamagitan ng pagsusulat ng maraming sa mga ito. Sa ilang mga punto, na kung saan ang isa sa mga isang bagay ay ipinatupad bilang nagiging natural. Sa ngayon, ito ay isang bagay lamang sa inyo na malaman bilang kang malaman bawat indibidwal na bagay. Kaya standard library function ay iyong mga kaibigan, at hayaan mo sila isulat ang mga bagay na tumagal ito maraming space talaga sa ilang sandali, talagang elegante. At ito ay tunay na marahil mas mababasa, gusto kong sabihin, kaysa sa programa C doon. Hindi sa banggitin ang katunayan na kaya maikling maaari mong magkasya sa isang buong elepante sa puwang na nai-save namin. Isa pang bagay, ito ay isang pagpapatupad ng Mario na dot C, na sa palagay ko ang pinakamaikling maaari mo itong makuha. Hindi nito ay may mga get int, ngunit ito mahirap codes ang halaga ng 10 sa parehong paraan na ang isang ito ay. Ino-out na ang isang ito clocks in sa 84 na mga character, samantalang Python ay 64. At ito ay walang hanggan mas nababasa kaysa ito ng basura dito. Kaya sawa ay mas mahusay sa space. Ito ay bahagyang mas mahusay sa oras, ngunit hindi sa pamamagitan ng magkano. Listahan ay isang mahalagang bagay sa Python. Hindi namin nakita ang mga ito, ngunit sila gumana marami tulad array gawin sa C. Kaya dito, maaari mong ipahayag ang mga ito, maaari mong ipasa ang mga ito sa isang bagay. Ngayon parisukat humahawak ng isang ang dami ng mga bagay na ito. Muli, hindi pa namin na ipinahayag bilang uri, ngunit kung namin kailanman subukang gamitin ito, anumang bagay na gusto mong asahan na magtrabaho sa isang array ng mga integer ay pagpunta sa trabaho sa isang array ng mga integer. Ito ay isang bagay na ikaw ay ganap na hindi maaari gawin sa C, dahil ang memory ito ay kaya mga kamay sa, ngunit ito ay tunay madali na gawin sa Python. Kung gusto ko ang aking array na maging mas malaki, maaari ko ikakabit ang isang elemento sa mga ito at ito ay multa. Ano ang nangyayari sa likod ng mga eksena? Interpreter ay pumunta out at makakuha ng ilang memory, at marahil ito ay makakuha ng isang maliit na piraso ng dagdag na memorya, kaya hindi ko kaya wala akong upang realloc bawat oras. Ngunit kung magkano ang kailangan pa memory ay kailangan ito? Hindi na ito ay mga desisyon na kailangan mong gawin, ang mga ito ay mga desisyon na ang interpreter ay pagpunta sa gawin. Dito makikita natin na hanay Maaari tumagal ng dalawang argumento, ngunit ito ay pagpunta pa rin upang maging inclusive sa mga top kaya namin magdagdag ng 1 doon. Ito ay isang wika, na kung saan ay isang mas matalino na paraan upang isulat ang mga bagay na tulad nito. Ito ay tinatawag na listahan unawa, at dito kung ano ang sinasabi namin ay nais kong ilagay sa i nakalapat para sa bawat halaga ng i sa hanay na ito. Ito bagay sa kanang ay maaaring isa pang array, at ang bagay na ito sa kaliwang upang maging anumang partikular na function na nais kumuha sa i bilang isang variable at magbigay sa akin ang ilang mga resulta. Ano ako pagpunta sa gawin ay, Pupunta ako sa tayuan isang array na ang lahat ng mga bagay na ito para sa bawat halaga sa hanay na ito. At ito ay sobrang elegante, sobrang maikli, at ito ay napakalinaw kung ano ang ibig sabihin nito. Ito ay isa sa mga bagay- ito ay muli, isa of-- very tumutukoy sa mga dahilan na ang mga tao tulad ng Python. Kung gusto mo programming tulad nito, pagkatapos ay Python ay isang wika na maaaring gusto mo upang matuto. At muli, may mga teknikal na mga dahilan kung bakit ito gumagana. Ngunit tulad ng kami ay nababahala, kami ay mas mababa o hindi pag-aalaga. Kaya kung nais mong i-print out ng mga listahan, ilan sa mga parehong idioms ay kapaki-pakinabang. Para i sa hanay na ito, maaari namin index sa lahat ng mga bagay-bagay at pagkatapos ay i-print ang mga ito sa lahat ng out. At makikita mo makita len dito. Kung kailanman na iyong nais na makakuha ng ang haba ng array, na ang napakadaling sa Python, ito ay lubhang mahirap sa C. Ito ay i-print out eksakto kung ano ang gusto mong asahan ito sa. Maaari rin namin, tulad ng nakita natin dati, umulit sa ibabaw ng mga elemento sa array direkta, at pagkatapos ay makipag-usap lamang tungkol sa ang mga ito, sa halip ng pagkakaroon ng index sa likod ng array sa bawat oras. At ito ay isang bagay na maaari mong gawin. Kaya sa C, kung magtatanong kayo para sa isang bagay tulad nito, i-print ang mga nais sabihin, iyan ay isang hanay ng mga integer. Iyan ay tiyak na hindi isang string, hindi ko maaaring i-print ito. Python mas mababa o hindi pag-aalaga. Ito ay tulad ng, ay may isang paraan na ako maaaring i-in na ito sa isang string? Oo, kailangan kong gawin iyon. At kaya lang makikita print ko na out. Nangangahulugan ito na maaari mong gawin ang mga bagay like-- mga ay halos lahat ng mga matitigas na bahagi ng laro ng labinlimang, nakasulat napaka daglian sa sawa. Makikita mo na ang may Medyo of-- dito Palayasin ko na isang integer sa isang string, at kailangan kong gawin na mano-mano. At ako pagpunta upang magdagdag ng ito sa isa pang string, o kung hindi man Python makakakuha ng nalilito. Ngunit kung kapag ikaw ay pagdagdag ng isang string sa isang integer, am ipagpalagay kong makakuha ng isang integer likod o isang string sa likod? Ngunit muli, kung ikaw lamang tumawag str sa isang bagay, at ito ay maaaring sa anumang mga posibleng mundo ma-convert sa isang string, ito ay marahil ay convert sa isang string. Dito, makikita natin ang paggamit ng nested list intindi sa kaliwa, ang ilang mga pag-index, na kung saan ay eksakto tulad ng gusto mo ay ginagamit upang ito, at ang ilang mga pag-print out ng mga bagay. Muli, na tinukoy namin ang ilang mga function at kami ay tumawag sa kanila down sa main kapag aktwal naming makuha ang file. return gumagana nang eksakto tulad Gusto mo asahan mula sa nagtatrabaho sa C. Maghanap, maaaring i-set up ang mga bagay tulad namin this-- narito ang listahan intindi mayroong isang assignment sa isang variable, at maaari naming aktwal na gawin itong mas madali. Hindi namin kailangan upang isulat ang paghahanap, dahil built-in na mga wika ay kung ang bagay na ito ay sa array na ito. Bumalik totoo, iba bumalik false. Kaya na ang kabuuan ng hanapin. Ang kabuuan ng pag-uuri nagsasangkot ng pagtawag sa mga uri, saan is-- may mga pagpapatupad ng mga ito na binuo sa mga tiyak na aklatan C. Kung gusto mo ito uri ng paurong, ikaw maaaring i-override ito opsyonal argument sa laban sa isang true. At kung gusto mong i-uri-uriin sa paglipas ng string, na built-in na rin. Kaya ito ay hindi sabihin ang mga ito ay mga bagay na kailangan mong gawin sa bawat araw, ngunit ang ideya ay na ito ay ang pilosopiya ng Python, na ang lahat ng mga bagay na Gusto mo Gusto uri ng gawin ay built-in. At pinaka-karaniwang mga pag-andar, kaya uri, haba, kahit na ano, suporta sa karamihan ng lohikal matino input. Ikaw tawag len sa isang array ng parehong paraan mo tawagan len sa isang string. Multiply-- mo mong ayusin string sa parehong paraan mong ayusin array. Karamihan sa mga standard na function na bumuo ng mga tao, at karamihan sa mga third-party aklatan na tao magtayo, dahil sila ay emulating ang disenyo ng standard library, maaaring tinatawag na sa lahat ng bagay na kayo ay tulad ng, kung bakit hindi ito gumagana lamang, sa C. Higit pa o mas mababa, ito ay gumagana sa sawa dahil ang mga tao sa trabaho sa likod na figure kung ano ang isang bagay ay at pagkatapos ay gumana naaangkop sa mga ito. Kaya muli, teknikal na background, ngunit ito ginagawang mas madali ang ating buhay bilang programmer. Kaya dito ang file I / O. maghain I / O ay may maraming mga maliit na bagay na gawin itong kumplikado, at kaya may mga resources online, ngunit sa maikling sabi, tumawag ka bukas sa isang file pangalan sa isang partikular na uri. Kaya na basahin, basahin at isulat, isulat o ikakabit. Nabasa mo ang isang tiyak na bilang ng mga character out at i-print mo ang mga, makakakuha ka ng Hello! Ibig kong sabihin, tulad ng sa file na ito ay nagkaroon ng Hello! Sa ito, tumawag sa pagbasa, at kung ano ang makakakuha ka ng bumalik ay isang string na may lahat ng ang magpahinga ng ang array, o lahat ng mga natitirang bahagi ng file. Kung ikaw ay tumawag basahin muli, ikaw ay nasa dulo ng mga file, at upang hindi ka makakakuha ng kahit ano at kaya magagawa mong isara. Muli, ito ay .close sa halip na malapit file, tulad ng ito ay sa C. Ito ay higit pa o mas mababa dahil f ay isang bagay, at gusto mo para sa f upang isara. Ngunit basic file I / O ay hindi partikular na kumplikado. Muli, kung gusto mo upang buksan ang isang file, kung gusto mo upang basahin ang isang partikular na linya, maaari kang makakuha ng out ng mga partikular na line-- mayroong built-in na para sa. Kung gusto mo na magsulat ng isang bagay, maaari mong isulat ito. Kung gusto mo upang isulat ang mga indibidwal na kagat, maaari mong isulat ang mga iyon. At kung gusto mo na umulit sa ibabaw ng linya ng isang file paisa-isa, tulad ng ginawa namin sa isang piraso mula sa ilang linggo na ang nakaraan, maaari mong gawin iyon sa. Muli, karamihan sa mga bagay na Gusto mo upang ma upang umulit sa pag iterating sa kanila. Sa Pythons, ang isang file ay marahil isang bagay na Gusto kong umulit sa linya sa pamamagitan ng linya. Kung ito ay isang diksyunaryo ng mga salita at ako ay sinusubukan mong makakuha ng mga indibidwal salita out, pagkatapos, sa loob ng loop, line na ito ay magiging bawat salita naman at ito ay pagpunta sa maisasakatuparan para sa bawat linya sa file hanggang sa katapusan ng file. At muli, kung naka-print ko ang bawat line, ang mga linya ay may bagong linya, kaya ako ng setting sa dulo i-back sa isang bagay tulad nito. At gusto ko makukuha ang mga nilalaman ng aking file. Ang ikalawang bagay na kung saan ay nagpapatakbo sa ang ilang mga paraan tulad ng mga listahan, at sa ilang mga paraan bilang isang bagay na malaki mas makapangyarihan, mga diksyunaryo, kung saan ay talagang cool na gamitin ngunit talaga hash tables sa panlilinlang. Lumikha ka ng isa gamit ang eksaktong dalawang character, na kung saan ay kahanga-hangang kung sinubukan mo upang ipatupad ang hash talahanayan para sa iyong hanay ng problema, alam mo magkano ang sakit na maaaring. Subalit ang mga tao ay tapos na ito, at tapos na ito nang maayos, na hindi mo na kailangang mag-alala tungkol sa mga ito anymore. Pagkatapos ay maaari mong ipasok ang mga indibidwal na mga bagay-bagay. Hash tables-- o mga diksyunaryo hindi lalo pag-aalaga kung ano ang iyong pag-iimbak sa kanila. Kaya kung ilang mga entry sa mga numero, at ang ilang mga entry ay mga listahan, kung ilang mga entry sa mga iba pang mga diksyunaryo, at ang ilang mga entry ay mga string, Python ay hindi gaanong pag-aalaga. Muli, kung ikaw ay pupunta sa mga ito na umaasa isang string at kung ano ang makakakuha ka pabalik ay isang array, iyon ang iyong problema. At marahil ito ay kasalanan ng sinumang naisip ito ay paglalagay ng mga bagay sa diksyunaryo, marahil na sa iyo. Kung iyon ay isang tao iba pa, sana sila ay mahusay pagkilos tungkol sa kung ano ay pagpunta sa diksiyunaryo at hindi iwan ang anumang mga pitfalls para sa inyo na mapunta sa. Ngunit ang mga karaniwang pag-andar ay bigyan ka pabalik mabuti ang pagkilos ng bagay. Kaya sinasabi nila na ito ay nagbabalik likod ng isang diksyunaryo ng mga string, at pagkatapos ang lahat na iyong pupuntahan upang makakuha ng isang string. Kung gagawin mo ang ilan sa mga ito at ito biyahe up mo, well, na maaaring sa iyo. Tiyak na nagbibigay sa iyo ng Python sapat lubid na mag-hang ang iyong sarili, kung gusto mo. Ngayon ay maaari naming i-print ang mga indibidwal na mga sangkap na ito at ito ay nagbabalik kung ano mismo ang gusto mo inaasahan. Kung ano mismo ang gusto mong asahan, hulaan ko, ay isang parirala na gumagamit ako ng isang pulutong, ngunit iyan ay mas o mas mababa sa kung paano gumagana Python. Kung hihiling ka ng isang bagay na hindi ito, Python ay dumura ng isang error at ito ay umalis sa labas ng ka anumang programa na kayo ay sa. Makikita ito talagang i-print out higit pang impormasyon sa na, makikita ito ituro you-- idedetalye ito magdagdag ng isang linya, at iba. At, muli, marahil gusto namin upang umulit sa mga diksyunaryo at hanapin ang lahat ng mga bagay sa loob nito. Narito kami ay iterating sa paglipas ng dalawang bagay nang sabay-sabay. At kaya kami ay gawin ito na may isang key, halaga, ngunit pagkatapos ay i-print out ang lahat ng mga ito. At kung gusto naming cast-- kung talagang tumakbo namin ito, gusto naming magkaroon ng ilang mga problema dahil on-- kapag nagpunta kami sa kasama ni David, hindi ito maaaring add-- kung hindi namin ginawa itapon sa isang string ng una, hindi namin ma idagdag na array ng mga string papunta sa isang string. Ngunit kung namin napalabas ito sa isang string, makakakuha tayo ng isang bagay tulad nito, na kung saan ay marahil kung ano ang nais naming basahin. At ito ay speller. Kami basahin lamang sa mga bagay-bagay. Kaya maaari naming basahin sa ng bawat salita bilang mga linya. Tumaga namin off ang huling bagay, kaya colon minus 1 chomps off ang huling bagay na we-- huling character ng isang string. Susubukan naming sabihin. OK, ang bawat isa sa mga iyon ay makakakuha ng ipinasok sa diksyunaryo ito, pagma-map sa isang halaga ng 1. Ginagawa namin ang hindi partikular na pag-aalaga tungkol na ang isa, ngunit ito ay doon lamang sabihin, oh well, ang bagay na ito kukunin ko na ilagay sa diksyunaryo. Dahil mamaya kung ano kami pagpunta sa gawin ay hindi namin pagpunta sa sabihin, well, kung ito ay sa dictionary sa lahat. Muli, ito tseke para sa pagiging miyembro ay up operating gamit ang isang ganap na iba't ibang algorithm kaysa ito sa isang listahan, ngunit ang tawag namin ito sa parehong paraan, na kung saan ay ilan sa mga na asukal Python patong mga bagay upang ang mga ito ay mas madaling gamitin. At muli, nasaksihan namin mga bagay na tulad nito bago. Ito ay karaniwang mahanap, o ito ay eksakto ang parehong syntax bilang mahanap, ngunit ay operating sa loob ng isang ganap na naiibang mga istraktura. At kami ay hindi partikular na pag-aalaga. Kaya ang mga ay ang mga bagay na iyong hiningi sa inyo na ipatupad para sa speller. Sa rate, kami ay pagpunta upang makakuha ng higit pa o mas mababa ang lahat ng psets tapos na. Madla: Kaya na talaga lang dumating likod bilang hindi tama ang spelling kung ito ay hindi tumugma sa isang bagay sa diksyunaryo? ROSS RHEINGANS-YOO: Oo, oo. At ito, ito ay isang paglalapat ng isang hanay ng problema na humihiling sa iyo na gawin eksakto na. Madla: Bakit ang line minus 1 doon? ROSS RHEINGANS-YOO: So kapag kayo ay iterating sa loob ng isang file na humihingi para sa sa pamamagitan ng mga linya, ang mga linya dumating sa isang bagong linya ng character sa dulo ng it-- ang minus 1 ay para lamang sa mga tindahan sa mga off. At ito ay isang partikular na kakayahang umangkop paraan ng pag-index sa mga bagay-bagay. Kaya kung mayroon kang isang string, at gusto mo, well ako pagpunta sa magsimula sa karakter ng tatlong at ako pagpunta sa pumunta sa dulo. 3 colon ay gawin na para sa iyo. Kung ikaw ay tulad, gusto kong magsimula sa simula at pumunta sa huling minus 1 character, colon minus 1. At kung gusto mo upang pumunta mula sa Ang ikatlo ay ang minus una, at pagkatapos ay gusto mong sabihin 3 minus 1. Karagdagan pa, kung nais mong i-index sa mga bagay na bilangin mula sa likod, index sa iyo para lamang sa mga numero ng minus. At dahil, kung saan C ay sumabog o baka feed mo ibang memory hindi ka magkaroon ng pag-access sa, marinig ang maaari mong sabihin minus 1 ay nangangahulugan na ang huling ngunit 1 character sa isang string. Mga module ay version-- ay ANALOGS na aklatan sa C at kapaki-pakinabang para sa isang pulutong ng mga bagay-bagay. Ang isang pulutong ng mga bagay-bagay Gusto mo nais na gawin sa Python, bukod sa simple pagmamanipula ng mga variable, gusto mong isabit sa mas malaking library na may mas malaking interface at higit pa kakayahan para sa pakikipag-ugnay sa iba pang bahagi ng mundo. sys ay isa sa mga may isang bungkos ng mga kasangkapan na kapaki-pakinabang para sa pakikipag-ugnay sa sistema ng kanyang sarili at i-import ito tulad import sys. May karagdagang dokumentasyon mula sa na iyon, na kung saan maaari kang pumunta dito, o maaari mong mahanap sa Google sa pamamagitan ng Pag-Google Python sys. Nag-type ka sa enter. Ang unang link ay magiging ang mga babasahin sa Python 2, ang pangalawang link ay pagpunta sa maging ang mga babasahin Python 3. At kung kami ay sumulat ng isang file na tumingin tulad this-- Kung sa partikular, hindi namin ng pagtingin sa pag-oopera sa argumento command line, tulad ng natutunan namin na gawin very maaga sa klase na ito. Ito ay hindi mahirap. Maaari kang makakuha ng out argv, na kung saan ay isa sa mga bagay na kung saan ay ipinatupad sa pamamagitan ng sys. Hindi ito ang built-in sa base package, ngunit muli, ikaw ay maaari itong palawigin sa pamamagitan ng pag-import na pag-andar mula sa sys. Makikita tumawag ito sys. kahit ano. Dito mayroong argv. Mayroon talagang walang argc sa sys, dahil ikaw ito ay maaaring makuha sa gayon madali sa pamamagitan ng pagtawag len. Pagkatapos ay nakalimbag namin na out, pagkatapos namin bumangga sa aming terminal echo-args.py. Kumuha kami ng likod ng isang array, na kung saan ay ang unang argumento. Muli, ito ay argv 0, kung saan ay ang pangalan ng bagay na got tinatawag. Kung tinawag namin ito na may karagdagang arguments, nais naming makakuha ng mga back. Ito ay isang paraan ng pagkuha ng command line argumento. Kung nais mong flags kung saan mo i-on partikular na mga bagay-bagay sa o override isang partikular na default, argparse ay iyong kaibigan. At muli mong makita na online sa python argparse sa Google. Mayroong isang pares ng mga utility module na mahanap mo ang iyong sarili gamit at muli, kung gagastusin mo anumang oras ng wikang ito import jsons para sa pagbabasa at sa labas ng json file, hindi na kumplikado. Binuksan mo ang isang file, tinatawag mo json.load on file na at makabalik ka ng isang bagay. Ano ang bagay na iyon? Ito ay isang json object. Saan na json may array, ang Python ay may array. Saan na json ay nag-uugnay array, Python diksyunaryo, string, at numero, at iba pa. Gusto mong i-dump na out, ikaw magbukas ng isang bagong file, tumawag ka dump, at naglo-load at lungkot sa pumunta sa at sa labas ng mga string. Katulad nito, atsara makakakuha ng tinatawag na sa talaga ang parehong interface. Ito ay bahagyang mas kapaki-pakinabang kung ka paglalaglag Python bagay. Kaya kung sakaling mo na nais mong i-save isang bersyon ng kasalukuyang katayuan ng isang variable para sa isang hinaharap tumakbo ng iyong programa, atsara ay sawa library para sa paggawa na. Kung mayroon kang anumang mga uri ng variable na maaaring nakasulat out sa katulad na mga salita at mga character at bytes-- tulad diksyunaryo na ito, kami ay maaaring isulat, namin maaari itong isulat bilang tulad ng isang json bagay, na kung saan ay literal ang mga character na. At pagkatapos ay ito ay tunay madali para sa isang tao upang buksan up-- itong buksan up at basahin ito. Kung hindi namin ginawa lalo pag-aalaga tungkol sa mga tao sa pagbabasa nito, maaaring package namin kahit na mas mahusay sa mga form na maaaring nabuklat mamaya o na maaaring napalaki mamaya. At ito ay nagse-save ang 80% ng space na ang iyong mga bagay baka kumuha ng kung nagsulat ka ng mga ito sa labas sulat-kamay. Tawag ka atsara Sobra parehong way-- dump, load, at pagkatapos mong makuha ang iyong mga bagay-bagay sa likod. Kaya't kung ikaw ay pagsulat ng tunay maikling Python programa na gustong i-save ng estado, at pagkatapos ay basahin ang ito muli mamaya, ang mga bagay na tulad nito ang iyong mga kaibigan. Na maaari mong tunay madaling tambakan ng mga ito bilang json. Karamihan Python bagay Maaari dump out ang json kung mayroong anumang pag-asa na structurally maaaring sila ay kinakatawan na paraan. Ang mga ito ay lamang ang mga dulo ng malaking bato ng yelo sa modules na kapaki-pakinabang. Kaya sys, os, multiprocessing, ay uri ng mga pangunahing workhorses para sa mga bagay kailangan namin upang makipag-ugnay sa ang os file system., tulad os.isfile, os.isdirectory, os.makefile, ang mga ito ay iyong mga kaibigan. Kung nais mong makipag-ugnay may partikular na uri ng file, json, atsara, csv. Kung nais mong makipag-ugnayan sa web pahina, ang urllib para sa pagkuha ng http mga pahina. bs4-- BeautifulSoup-- ito ay isang kahanga-hangang parser para sa html. Patakbuhin mo ito sa isang html at ikaw kumuha ito nested array object ngayon, na kung saan maaari mong bagtasin higit sa lookin, may tulad ng naghahanap para sa kung, ay, sa, na kung saan ay walang katotohanan. May isang grupo ng mga pakete para running-- para sa paggawa ng partikular mathy bagay. Kaya kung nais mong i-multiply, saliwain, ibahin ang anyo matrices, numpy ay ginagamit ng mga tao ang lahat ng dako ng mundo para sa na. scipy ay mas kapaki-pakinabang kasangkapan sa direksyong iyon. sklearn-- machine learning, natural pagpoproseso ng wika, sobrang kapaki-pakinabang bagay-bagay, makakakuha ipinatupad sa Python sa lahat ng oras. At muli, tumatagal nang bahagya mas mahaba upang write-- Paumanhin, tumatagal ng bahagyang mas mahaba upang tumakbo, ngunit ang dahilan na ang mga tunay na mga inhinyero ay may posibilidad paggamit Python ay dahil ikaw ay madalas na maging hinarang sa iyo sa pagsulat ng code, sa halip kaysa sa iyong computer na tumatakbo ang code. Kaya't kung ikaw ay pagpunta sa magsulat ng isang programa, na kung saan maraming iba pang mga tao ay pupunta sa paggamit magpakailanman, tulad ng Linux, maaari mo Maaaring isulat ito sa C. Kung kayo ay pagpunta sa magsulat ng isang pagtutuos engine, maaari mong isulat sa sawa kung kailangan mo upang baguhin ito sa bawat ilang mga buwan. Ang ilang mga tao ay isulat ito sa C dahil ang mga ito tulad na. Kaya nakita namin na ang pag-import sys bilang isang paraan ng pagkuha ng mga bagay-bagay ng pagkuha ng module sa inyong programa. Maaari mo ring i-import ito bilang isang palayaw, kung gusto mo. Muli multiprocessing ay isang sakit na i-type ang bawat panahon, upang i-import ang bilang mp at pagkatapos ay anumang oras mo gamitin ito sa programa, makikita mo sabihin mp.process, o kung ano ang mayroon ka. Kung gusto mo import lamang ng isang solong bagay, kaya urllib ay may isang bagay na tinatawag na kahilingan, kaya maaari lamang i-import mo na. Sa susunod, hindi mo na pakiusapan ito bilang urllib.request, ngunit bilang lamang ng kahilingan pamamagitan ng kanyang sarili. At maaari mong i-import ang lahat ng bagay mula sa isang module kung gusto mo. Ito ay paminsan-minsan ay hindi isang magandang idea-- ito ay karaniwang hindi isang magandang ideya, talaga. Dahil very-- mo dahil kung mayroon man sa module na may pangalan na kayo nais na gamitin sa ibang lugar sa iyong programa, hindi mo magagawa. At ito ay hindi laging malinaw na iyon ang kaso. Upang tiyakin na ano ang iyong ginagawa ay ligtas, kailangan mong buksan up ang module at makita ang lahat sa mga pangalan na magtapos sa there-- ang lahat ng mga pag-andar, lahat ng mga variable na nakatira sa module na iyon, dahil ikaw ay nagdadala sa lahat ng mga ang mga ito sa iyong lokal na namespace. Kaya ang mga tao gawin ito. Ito ay karaniwang pinapayong na hindi mo na gawin ito. Subalit ang mga tao gawin ito sa lahat ang oras dahil ang mga ito tamad at ayaw mong i-type ang mga mp. kahit ano, kailanman. Lahat ng ito makipag-usap tungkol sa mga module dalhin mo ako sa paligid sa isang maikling talk sa kung paano mo magdisenyo ng mga programa sa sawa. Ang unang hakbang ay upang suriin upang makita kung kahit sino pa ang may nagawa ang mga bagay, o tapos na 90% ng mga bagay. Malamang ay marahil ay may, at ikaw dapat pumunta makakuha ng kanilang mga bagay at tumakbo na. O sumulat ng isang balot sa paligid nito upang iakma ito sa iyong mga layunin. Ito ay lamang pagkatapos na may Nabigo na pagkatapos mo gusto pumunta sa at write-- magsimula-iisip tungkol sa kung paano mo ilagay ang bagay na ito nang sama-sama. Mayroong maraming mga bagay-bagay out there, at iyon ang isa sa mga pinaka-kapaki-pakinabang mga bagay-bagay tungkol sa Python. Tulad ng mga wika ay elegante, ang wika ay madaling gamitin, ngunit din dahil ito ay kaya elegante at madaling gamitin, mga tao ay gumagamit ng ito para sa isang mahabang panahon at may isang pulutong ng mga bagay-bagay out there na maaari mong isingkaw para sa iyong sariling paggamit. Kaya noong nakaraang panuntunan ng Python ay, ang isang tao ibang tao ay malamang na nakasulat isang module para sa na, ibang tao ay mayroon na marahil na nakasulat sa isang library para doon. Bago mo subukan na gawin ang isang bagay, tingnan ang upang makita kung ito ay naipatupad. Ito ay hindi na mahirap. Ang lahat ng mga module na ko bang ilagay up bago, na may marahil isang pagbubukod, dumating pre-install sa bawat karaniwang pag-install Python. At kaya may isang tawag sa import kahit na ano, sa iyo mayroon ng lahat ng mga pag-andar na sa iyong mga kamay. Simula sa wrap up ito talk, may mga ilang bagay na na iyong iniwan ko bilang mga itim na kahon at uri ng glossed over, at mayroong ilang puting kasinungalingan na ko Sinabi na para sa kapakanan ng katapatan, Kukunin ko ang hindi bababa punto kung dito, kahit na kung ako ay hindi pumunta super malalim sa lahat ng mga ito at ang kanilang mga teknikal na paliwanag. Ang isang pulutong ng mga bagay-bagay na tinatawag ko na magic ay kung ano ang tawag sa ibang tao object oriented programming. Kaya may mga maraming mga bagay- kaya variable ay masyadong madalas na hindi simple bytes upo sa, memorya, ngunit ay masyadong kumplikado mga bagay na may internal estado tungkol sa mga pag-andar at maraming ng mga nakatagong mga variable, maraming ng nakatagong mga pag-andar, kung saan hinahayaan kang buksan ito sa mga string, na kung saan ay nagbibigay-daan umulit ka sa kanila. At kung ikaw ay writing-- at sa dahilan na sila mayroon ng lahat ng mayaman functionality ay dahil ang people-- Arkitekto ng language-- dumanas sa pamamagitan ng at para sa bawat standard object, ilagay sa pag-andar sabihin ito ay kung paano ito ay kung paano ito ay pagpunta sa gumana kung ang isang tao ay nais na umulit sa mga ito. Kaya lahat ng bagay na ang isang tao baka marahil gusto upang umulit sa, Matagal nang logic na nakasulat sa manu-mano sa kung paano ikaw ay dapat na umulit sa bagay na iyon. Lahat ng bagay na maaari mong marahil gusto dumped sa isang string ay may nakasulat na lohika. Ito ay ang pag-andar na tumawag sa iyo kung gusto mong tambakan ng basura ito sa isang string. Ito ay kung bakit maaari mong tumawag len sa mga bagay, ito ang dahilan kung bakit maaari kang tumawag para sa, ito ay kung bakit maaari kang tumawag kung in sa lahat ng bagay na gusto mo nais na, dahil mga lahat ay nagdadala sa kanila, ang mga teknikal na kasanayan upang gawin iyon. Ito ay isang bagay na ako hindi pagpunta super upang pumunta sa. Ngunit para sa mga bagay sa listahan ay subtly naiiba mula style C para sa mga loop, at maaari mong basahin ang lahat ng tungkol na sa internet kung kayo ay interesado. May isang madilim na bahagi sa lahat ng mga ito, na nabanggit ko, kaya may dalawang bagay. Ang una ay na ang bagay na ito na nakatuon programming nagdadagdag ng maraming overhead sa random na mga bagay, kaya tapusin mo up gamit ang isang pulutong ng mas maraming memory; tapusin mo up gamit ang isang maliit na mas time kaysa sa gagawin mo kung hindi man. Ang other-- ngunit mas marami lihim na mapanira dark side na ito ay, kung kumilos lang bagay tulad ng gusto mo ang mga ito sa nang hindi mo kinakailangang mag-isip super hard tungkol sa kung ito ay dapat na isang int o kung may dapat na isang float, maaaring ito ay na sa paglipas dito gumawa ka ng isang int ngunit sa paglipas dito ka isipin pero makikita nila ng lagi Paumanhin, maaaring ito ay dito na gumawa ka ng isang float, ngunit kapag ikaw ay makakuha sa ikalawang bahagi ng iyong programa, ang iyong iniisip, oh well, pero makikita nila palaging pumasa sa akin sa isang int. At kung sila ay hindi, posible na maipit ka sa isang lugar, kung subukan mong gamitin na sa index sa isang array, o kung ano ang mayroon ka. Kaya isa sa mga tunay na kapaki-pakinabang na mga bagay-bagay tungkol sa C ay Pinipilit mo ito sa tunay tingin mahirap bago ka gumawa ng any-- bago ka magdala ng anumang mga variable sa buhay, tulad ng kung ano ay ang uri ng variable na ito. At ito ay pagpunta sa may na uri para sa lahat ng oras. Hindi ito totoo Python, at katunayan sa, ikaw can-- kung hindi ka lang uri ng pagpunta sa pamamagitan ng tainga, at ikaw ay gumawa ng ilang mga pagpapasya isang paraan sa isang lugar, at ilang mga desisyon ng isa paraan sa iba pang mga lugar walang paglalagay ng sapat na mga bagay-bagay sa likod mga tanawin sa iba pang mga lugar upang makatawag ng maayos ng mga bagay, sa iyo ay maaaring makakuha ng ilang mga napaka kakaibang mga error. At ang mga programa ay maaaring panatilihin ang pagtakbo para sa isang napaka-haba ng panahon, dahil ito ay paggawa ng isang pulutong ng mga trabaho upang sabihin, well ang bagay na ito ay maaaring gumana sa ganitong paraan, kaya ako pupunta na tumakbo na paraan. At sa katunayan, ang katunayan na ito tinutulak ipasa sa pamamagitan ng isang pulutong ng mga maliliit na mga error ay nangangahulugan na, madalas kapag isang error ay talagang masamang at talagang mo nais na ayusin ito, ito ay nauuwi milya away-- sa programa nagtatapos up layo pagpapahinto milya mula sa kapag ikaw ay nagkaroon ng iyong error. At kaya ang isang bagay na gusto naming mga programa na gawin, sometimes-- isang bagay na gusto naming programa gawin kapag kami ay pag-debug ay mabibigo nang malakas at hindi masyadong mabilis na kapag may mangyaring hindi mabuti. Python ay lubhang masama sa ganoon. Python ay isang magandang sa hindi nanghihina at rolling forward sa pamamagitan ng hindi inaasahang bagay. Kaya ito ay kapaki-pakinabang para sa kapag sumusulat ka maliit na programa. Kapag kumuha ka ng mga kumplikadong bugs minsan tumatagal ng mahabang panahon upang mang-ulol ito sa labas. Kaya may isang madilim na gilid sa lahat ng mga ito, tulad ng ito ay gumagana. Gumagana lamang ito tulad ng gusto mong asahan ito sa. Maliban na kapag ito ay hindi, tapusin mo up sa isang ganap na naiibang mga lugar at sinusubukan upang malaman kung saan ito ay na kayo nangyaring mali. Basura koleksyon is-- kaya isang bagay na mapapansin mo ay na alinman sa mga bagay na Na dinala ko sa existence-- mga array, ang mga diksyunaryo, mga mga bagay, ang mga ito files-- hindi makakuha napalaya. Walang tawag sa free sa anuman sa mga ito talk. At iyon ay sa C-side, dahil kami ay hindi kailanman nakuha sa mga bagay na iyon. Ngunit sa Python-side, diyan ay hindi isang libreng. Mga bagay na awtomatikong makakuha ng napalaya kapag sawa palagay ni hindi ka na naghahanap sa kanila. Ito ay hindi tunay mabuti pagbabakante bagay na maaari ka pa ring marahil ay naghahanap sa, ngunit ito ay nangangahulugan na kung ikaw ay pagpunta sa maglaan ito na malaking bagay, at ikaw ay tulad ng, oh Tapos na akong may ito ngayon, ito ay mahirap na sabihin sa Python na tapos ka na sa mga ito ngayon. Minsan mo maaaring itakda variable na maging none, at pagkatapos ay pag-asa na sa wakas ang mga basurero dumating sa pamamagitan ng at nililinis ito. Ngunit muli, hindi mo Mayroon kontrol na. At isa sa mga dahilan na ang mga tao na gamitin ang C para talagang pagganap ng mga kritikal na bagay, ay ang kakayahan upang tunay Alam kapag ang memorya ay ilalaan at kapag ito ay napalaya, at magkaroon ng isang pulutong ng mga kontrol sa sinasabi, Gumagamit ako ng hindi hihigit kaysa sa memory kailangan ko. Aling ay isang bagay na Python ay hindi na mahusay sa. Madla: Maaari ko bang hilingin sa iyo ng isang katanungan? Ano ang ibig mong sabihin sa hindi malakas? ROSS RHEINGANS-YOO: Kaya kung isang bagay ang nangyayari mali at ikaw ay nasa pag-debug mode, gusto mo napakadalas nais ang iyong programa upang sabihin sa iyo kung saan eksaktong ito ay wala na mali, at hindi lamang tahimik hihinto sa pagtakbo. Ngunit Gusto mong aktwal na ito upang i-print ang lahat ng uri ng impormasyon tungkol sa tulad ng, dito ay ito. Nangyari ang bagay na ito kung ikaw ay pag-print isang wen-- kung nagpapatakbo ka ng isang web server-- Madla: [hindi marinig] ROSS RHEINGANS-YOO: Oo, kung nagpapatakbo ka ng isang web server, ito ay paminsan-minsan masama kung ikaw ay laging itapon error, at ikaw ay sinasabi, well na hindi gumagana. Pupunta ako upang ihinto. Ako lamang ang pagpunta upang huwag pansinin ito at panatilihin ang pagpunta sa. Dahil pagkatapos ay maaari kang makipag-daan-daang ng mga error na ito at hindi makita ang mga ito. Ito ay magiging kapaki-pakinabang na tiyak para sa mga layunin ng pag-debug kung sa bawat oras na ginawa sa iyong mga web server na ng error, ikaw ay nagkaroon ng matibay na talaan ng mga iyon. Siguro gusto mo ng kahit na ang program upang ihinto, upang ang mga talaan hindi makakuha ng nakabaon sa ilalim ng mga bagay-bagay. Ngunit muli, na sa mode ng pag-debug. Kadalasan sa produksyon mode, ang mundo ay isang maliit na naiiba. At sa maliit na maliit na script na ako tumatakbo, kung saan ang mga bagay na sinabi kong gawin ito ay maaaring maging lamang ng isang maliit na piraso off mula sa kung ano Gusto ko ito gagawin, pagkatapos ay ang uri ng pagtulak sa pamamagitan ng mga error ay isang bagay na maaaring gusto. At sa mga kasong iyon, tiyak Talagang kumikita Python pagsisimula nito. Ang huling bagay na hindi ko makipag-usap sa this-- na hindi ako nag-usap tungkol sa ngunit maaaring maging talagang nagpapasiklab sa galit ng unang time magkaroon ng isa sa mga error na ito sa iyo, at ang ikalawa at ikatlong at ika-apat oras na ikaw ay isa sa mga error. Python, nabanggit ko na ito ay gumagamit ng space upang sabihin sa iyo kung ano ang antas ng indentation at kung ano ang functional block ka sa, ito treats ang mga tab at mga puwang ng iba. Kaya't kung ikaw tab higit sa apat na, at pagkatapos ay ang susunod na linya ay may apat na mga puwang, kahit na magpakita ang mga ito bilang mga parehong halaga sa iyong mga editor, Python ay hindi tratuhin ang mga ito sa parehong. Sa katunayan, itinuturing ng Python tabs at mga puwang tulad ng langis at tubig. Ang mga ito ay lamang ng iba't ibang mga bagay. Walang partikular na haba na ang isang tab ay, kaya ito ay hindi tulad ng isang tab ay katumbas ng 8 puwang, at kaya nais mong makakuha ng sa paligid nito doon. Tulad ng, kapag sinasabi nito, kung ano antas ng white space ako sa, ito ay tunay na naghahanap para sa isang pattern ng mga puwang at tabs. At ito, ang pinakamahusay na paraan ng pakikitungo sa mga ito ay upang laging gumamit ng puwang sa lahat ng oras. At sa katunayan, sa Cloud9 IDE at ang CS50 IDE, ang iyong mga susi Tab pagsingit apat na mga puwang sa halip ng isang tab, na kung saan ay sobrang kapaki-pakinabang. Kahit na muli, kung ikaw ay sumulat ng isang sawa programa gamit ang mga tab na magiging fine, ito lamang ay kung ang isang tao pumasok at sinubukan mong idagdag isang solong linya sa iyong programa na may apat na mga puwang para sa bawat tab, ito ay lumalabag. At ito ay lumalabag sa isang paraan na tunay ay hindi makikita. Kahit na ang aktwal na error message na ito throws ay may kinalaman sa bagong indent hindi inaasahan dito, or-- kung ito ay pakikipag-usap tungkol indents at mukhang ito ang mali, marahil ito ay dahil mayroong isang problema tab-space. Sila ay nagpapasiklab sa galit pa rin upang debug. Ang pinakamalaking kabuuan sa ito talk, na hindi ko kumuha sa dahil ito ay talagang isang komplikadong, madaya topic, at ay hindi kinakailangan upang gawin ang anumang sa mga bagay na nagawa namin sa ngayon, ay isang konsepto na tinatawag tuples. Ang mga ito ay may marami na tulad ng array na hindi mo maaaring baguhin. Sila makakuha ng ginagamit sa buong lugar dahil ang mga ito ay kapaki-pakinabang para sa maraming mga bagay-bagay na array ay hindi kapaki-pakinabang para sa. Ngunit kung gusto mo upang gumawa ng isang array, at pagkatapos ay pangako ng interpreter na kayo ay hindi pagpunta sa nais na baguhin iyon thing-- sa katunayan, kung nais mong baguhin, ikaw ay gumawa ng bago gamit ang bagong mga halaga sa it-- mga ay tuples. Kaysa sa paggawa mga ito sa mga square bracket, gumawa ka ng mga ito sa pag-ikot ng mga braket. Bakit nais mong gamitin ang mga bagay na ito, ay isang maliit na piraso ng isang katanungan. . Ang tanging bagay na kukunin ko sabihin tungkol sa na sa iyo Maaaring gamitin ng tuples bilang indeks para sa mga diksyunaryo. Hindi mo maaaring gamitin array bilang indeks para sa mga diksyunaryo. At bakit, muli, teknikal at Hindi ako pupunta na tumakbo sa mga ito. Ang pset na hindi ko pa baliw sa ganitong usapan ay pset6. Kaya narito kung paano mo 'd ipatupad a-- narito kung paano mo ipatupad pset6 sa sawa. Pagpapanatiling sa isip ang sawa cycle na disenyo, ang unang bagay na ginagawa mo kapag ikaw ay pagsulat ng mga programa ay check upang makita kung ang isang tao ay tapos na ito na. Sa katunayan, kung nais mong upang serve-- Apache 50 ay humigit-kumulang na ito, maliban ito ay hindi dumating standard na naka-install sa Linux machine. Python ay, at ang sawa simple http server ay rin. Kung ikaw ay kailanman sa isang Linux machine, o ang Cloud9 IDE labas ng CS50 at gusto mo na maglingkod sa kasalukuyang ito direktoryo sa isang partikular na port, python-m SimpleHTTPServer Naghahain port na iyon. Maaari mo ring i-import ang mga simpleng http server at ito ay nakuha ng isang pulutong ng mga pag-andar kung gusto mong i-customize ang mga ito, o baguhin ang mga ito, o ay tatakbo pakinabangan it-- ito sa patakbuhin ang iyong sariling mga serbisyo server. Kaya na Python sa isang maikling salita. At ito ay CS50. Salamat.