ROSS RHEINGANS-Yoo: Hi, ek is Ross.
En dit is 'n CS50 seminaar.
Dit sal julle uit programmering in C tot programmering in Python.
>> Python is 'n script taal.
Dit is grootliks soos C in sintaksis, hoewel sommige
van die tegniese besonderhede van hoe dit sintaksis sal uitgevoer word
is effens anders.
Dit is minder kragtig as C in 'n paar maniere.
Dit is minder ekspressiewe vir presies waar in jou rekenaar
geheue kry uitgelê, hoe dit kry uitgelê,
wanneer dit vryheid, en hierdie soort dinge.
>> Dit is meer nuttig as C in sommige maniere, omdat dit makliker is om die program in.
Die taal is, tot 'n mense, meer intuïtief.
En regtig, die doel is om vir dit vinniger wees om die program
en potensieel stadiger te voer.
>> Nou as jy dink oor die bedrag van die tyd
jy spandeer op jou laaste probleem gestel skryf
jou kode teen die bedrag van die tyd wat jy spandeer
op jou laaste probleem stel die uitvoering kode,
jy dink dat die taal wat twee keer so vinnig om te skryf,
en twee keer so stadig om uit te voer, kan wees 'n verbetering oor C in 'n paar maniere.
Beslis wanneer jy probeer om te skryf klein programme min dinge te doen,
Python is 'n nuttige taal van keuse.
>> En aan die einde van hierdie seminaar, ek hoop jy sal
in staat wees om die maak keuse in toekomstige projekte
oor watter taal is korrekte gebruik, nie die idee
dat een taal meer reg al die tyd.
'N Paar dinge oor wat die seminaar is.
Hierdie seminaar is nie bedoel om leer jou Python van nuuts af.
Python is baie soortgelyk C, en ek neem
dat jy 'n CS50 student, of iemand met 'n soortgelyke bekendheid met C.
>> As jy CS50 student rondom probleem gestel 6,
So jy het 'n baie te sien dinge in C, sal ek jou gee
die groot verskille, en 'n paar van die dinge
dat Python verskillende maak en spesiale en nuttige,
maar ek is nie van plan om te gaan vir wat 'n programmeertaal is
en hoe om programme te skryf.
Dit sal egter hierdie seminaar te leer jy 'n Python programme te skryf
As jy een van die min groepe.
Weer ons sal kyk hoe sou jy psets-- implementeer
wat moet 1-6 in Python-- en verskaf riglyne
amptelike dokumentasie vir toekomstige verwysing.
Die ander ding wat belangrik is oor hoe hierdie gesprek opgedra,
hierdie video sal wees aanlyn, met vergunning van CS50,
so moet jy nie lus wat jy nodig het om notas te neem.
Jy kan altyd terug gaan en kyk na dit later as 'n verwysing.
Daarbenewens is die skyfies is nou beskikbaar
op hierdie terrein, wat moet neem jy 'n Google doc doen.
Dit is 'n effens verkorte weergawe van wat ek wys op die skerm.
>> Versigtig caveat voor ons spring in, Python 3
is 'n ander taal uit Python 2.
Hulle lyk baie dieselfde; daar is baie geringe tegniese verskille
dat programme sal veroorsaak geskryf in Python 2
nie in staat wees om uitgevoer word in die Python 3 omgewing.
>> Die CS50 toestel kom met Python, by verstek dit gebruik Python 2.
Jy kan dit toets deur tik in jou command line
python --version, wat moet uitloop 2.7.6 oor die huidige toestel.
Probeer Python 3, wat doen werk in die toestel,
As Python standaard 2.X.Y, hetsy op die toestel of op jou eie masjiene.
Jy moet Python 3 enige tyd te vervang In hierdie gesprek wat ek skryf Python.
As jou masjien is hardloop 2 by verstek, tipe
Python 3 in staat te wees om werklik volg saam en hierdie dinge uit te voer.
>> Daarbenewens, sal ek jou wys by nou amptelik hulpbronne.
docs.python.org/3--~~V versigtig dat dit is 'n 3 en nie 'n 2--
het nuttige verwysings.
Handleiding sal jou deur baie van dieselfde dinge
wat ek nou doen nie, behalwe in die teks vorm.
Verwysing is nuttig as 'n verwysingsraamwerk vir die taal,
en die Standard Biblioteek gee jy 'n paar van die uitbreidings
met bykomende funksies.
>> So 'n heel eerste Python program.
Aan die linkerkant ons het die standaard C, op die regte, het ons Python.
Jy dalk erken hierdie probleem, is dit
een van die eerste probleem stelle in CS50, en dit
los dit met dieselfde oplossing.
Nou, die rede dat ons kyk na hierdie langs mekaar
is sodat ons kan kyk na sintaktiese verskille.
Een van die olifante in die kamer dat jy reg dalk opgemerk
van die kolf af, is dat Python het geen hooffunksie wikkel rondom die kode.
So in C, 'n klomp van wat jy skryf lêers, jy hulle met mekaar te verbind,
en die program begin uitvoer op hierdie ding genaamd int main.
>> In Python, jy skryf 'n lêer wat jy, die lêer uit te voer,
die program begin uitvoer aan die bokant van die lêer.
So dit gaan om te begin aan die bokant van die lêer
gaan af totdat dit iets anders te vind.
Indien 'n funksie definisie dit sal nie eintlik wat die kode uit te voer,
sal dit eenvoudig die funksie te definieer.
Maar hier, wanneer die eerste program is N gelyk aan 10,
die eerste ding wat hierdie program sal doen, is om hierdie waarde van 10
en sit dit in 'n veranderlike genaamd n.
>> Praat van die lyn, een van ander things-- hierdie sorry--
beteken dat C-programme, jy sal hulle skryf,
jy sal dit maak, wat sal roep 'n paar klang opdragte,
en dan sal jy 'n loop gevolg uitvoerbare.
Python programme, jy hardloop die teks file-- hierdie mario.py mag
wees hierdie lêer dat ek het net you-- jy die lêer hardloop
en jy sal uit te voer, en die inhoud daarvan
uitgevoer sal word deur die Python tolk.
Jy kan dit doen in jou IDE.
>> So as ek 'n Hallo lêer, wat het eenvoudig hierdie inhoud.
Dit is eintlik Python 2, nie Python 3, so moenie
bekommerd oor die sintaksis vir nou.
Maar ek sal hardloop Python, op hello.py en dit loop.
>> Nog 'n manier wat ek kan gebruik Python dat Ek sal nie met so baie in hierdie gesprek,
is as ek tik net Python, dit druppels my in 'n omgewing waar
Ek kan dit voed Python lyn deur die lyn.
So hier, as ek tik in Druk ruimte 'hallo, wêreld.
Tik betree.
Dit sal my spoeg dat die resultate terug dat individuele lyn onmiddellik.
>> Dit is dalk nuttig wees.
In hierdie gesprek sal ek dinge op skyfies.
En so sal jy in staat wees om te volg saam óf hier, of deur te skryf
werklike lêers en dan die uitvoering van hulle.
>> Maar, terug te gaan na die kode, nog 'n ding
wat jy mag hê noticed-- Wel, daar is
twee dinge wat jy dalk op oor hierdie blokke.
Die eerste, eerder meer aards is, is dat die Python het geen sleep kommapunt.
>> Kommapunte is opsioneel oral en opreg oral.
Jy kan dit byvoeg.
Dit mag dalk mense wat skryf maak Python vir 'n lewe gehinnik op jou
agter jou rug, want hulle is nie nodig nie.
Hulle is dikwels 'n teken van gehou oor van C. Die ontwerpers van die taal
voel dat dit meer duidelik op hierdie manier en dat dit nie nodig is om te verklaar
elke keer as jy die einde van 'n lyn.
>> Nog 'n vreemde ding oor hierdie N is dit nie 'n tipe aangeheg.
Een van die magic stukke Python-- en ek gaan om dit te magic noem,
maar daar is baie tegniese redes waarom dit
works-- een van die magic stukke Python
is dat veranderlikes kan uitbrei of krimp tot watter data bevat
tipes sou jy hulle wil hê.
>> So dit is 'n 10.
As later af Ek aan hierdie N 0.5, sal dit neem dat 0,5.
Maak nie saak wat dit is 'n int hier en dryf daar enigiets wat hierdie N gebruik
sal min of meer in staat wees om tjoef saam as dit een van dié.
Tensy daar is 'n paar baie werklike rede waarom dit die data nie kan gebruik
tik dat n oomblik het, op watter punt sal dit kry
ingewig en gooi 'n fout, en dié soort dinge.
>> Maar hier, Python nie regtig omgee wat
dit is dat ek gaan om te hou in hierdie vonnis, soos, julle hierdie ding wil hê?
Hierdie ding in dit?
Ja, dit is soort van 'n ding.
Ek sal dit hou in die einde.
Dit sal 'n probleem later, indien iemand wat wil hê dat die einde gebruik
kan dit nie hanteer nie.
Dit is een van die grootste verskille tussen Python en C
wat maak dit maklik om te skryf baie groot C programme
en maak dit makliker om te skryf baie klein Python program.
>> Die sintaksis vir is nie baie anders wat dit doen.
Dit is effens anders in hoe dit uitgespreek.
So, dit is 'n baie, wat genoem word Pythonic, manier om dit te skryf.
vir ry in die reeks (n), dit is die omvang van getalle van 0 tot n,
inklusiewe op die onderste en eksklusiewe op die top.
So dit is van 0 tot n-1, wat presies wat die C-kode doen,
behalwe dit is 'n baie makliker om te kyk na miskien.
>> Die betrokke blok is nie verreken deur draadjies,
plaas dit verreken hierdie inkeping.
So al hierdie lyne is vier ruimtes oor die reg,
of soos oor 'n olifant breedte.
En dit is die kinders wat gaan uitgevoer word in hierdie vir.
As ek gemors die inkeping op hierdie en ek
stoot dat druk terug na die oorspronklike inkeping,
wat druk sal laat die lus.
In teenstelling met C, waar ek eintlik hier moet daardie geslote stut rond te beweeg.
>> Dit beteken dat jy nie foute te kry wat uit spring op jou omdat jy
sit 'n stut in verkeerde plek.
Dit beteken nie dat jy foute te kry wat uit spring op jou omdat jy
ingekeep 'n lyn verkeerd.
So dit maak inkepings super versigtig.
Hopelik is jy om super versigtig met jou inkeping in elk geval,
en so is dit nie dat veel meer van 'n las.
>> Maar 'n basiese reël vir Python, en ons sal 'n paar van hierdie het
sodat ons deur gaan deur die loop van die gesprek,
is probeer natuurlike sintaksis voordat enigiets op te kyk.
So hierdie sintaksis, vir hierdie nommer in die reeks,
is baie kenmerkende in terme van styl.
Baie van die dinge in Python ons sal sien wat hierdie vorm.
>> En so as jy kom met 'n nuwe voorwerp wat jy
dink jy moet in staat wees om Itereer oor hierdie, in hierdie formaat,
blyk dit waarskynlik ondersteun dat formaat.
Ons is nie van plan om in te gaan super diep die tegniese redes waarom dit is waar.
>> Maar dit is 'n nuttige intuïsie om wanneer jy nader Python programme,
dat hierdie ding is net gaan om te werk.
Probeer dit.
Boot die Command Line Tolk, kyk of dit werk,
beweeg met die dinge, voordat jy eens nodig om oop te maak Google en sê
wat is die sintaksis vir hierdie spesifieke ding?
Baie van die Python jy kan ontdek net deur te probeer.
>> Dit is selfs meer as soortgelyke C dan die fors is.
Let daarop dat daar is geen hakies.
Die hakies is, weer, skadeloos, maar onnodig.
Daar is 'n punt aan die einde net soos die vir loops,
en weer, die relatiewe blokke ingekeep eerder as verreken deur draadjies.
Dit is anders aan die oorspronklike vlak van inkeping,
en sy betrokke blok weer ingekeep.
Diegene werk presies soos hulle doen in C.
>> Dit is eintlik baie dieselfde.
Weereens, druk verloor een karakter af van printf Jy slaag paar snare.
Dit blyk uit snare kan óf afgemerk
by 'n enkele aanhalings of dubbele aanhalingstekens.
Daar is geen verskil nie, behalwe dat die binnekant
van enkele aanhalings wat jy kan gebruik dubbele aanhalingstekens met oorgawe,
eerder as om te ontsnap almal van hulle.
En binnekant van dubbele aanhalingstekens, jy kan enkele aanhalings met oorgawe gebruik
sonder om hulle te ontsnap.
As jy wil meng hulle, kan jy beslis
kyk aanlyn hoe om dit te doen.
>> Jy sal dit hier sien, Ek het geslaag in end = hierdie ding.
Dit is 'n voorbeeld van 'n opsionele argument, wat is een van daardie dinge
dat Python ondersteun wat maak dit baie nuttig.
So druk het eintlik 'n baie argumente, wat gewoonlik
stel om hul standaard waarde, maar hier het ek
besluit om die een wat geroep einde oorheers.
Die rede is dat ek moet ignoreer dit met 'n leë string
is dat druk in Python, deur verstek druk uit 'n nuwe lyn
na die ding wat jy dit ook gesê.
>> So hierdie hash is eintlik gaan druk 'n hash in 'n nuwe lyn.
En as ek nie wil hash uit te druk 'n nuwe lyn nadat dit, dan moet ek sê
druk nie een nie.
Maar, tog so, die een laaste ding wat hierdie program ontbreek wat 'n mens is
'n sluit by die top.
Print gebak in Python so basies dat daar geen kop of module
wat jy nodig het om sluit, maar indien wou
om ander dinge insluit in 'n Python script,
Ek sou dit in 'n baie soortgelyke lêerformaat die woorde is net effens anders.
>> Ek het genoem dat ons nie 'n hoof hier nodig het,
omdat die Python begin uitvoering aan die bokant.
As ek wou draai dit in 'n funksie, ek
sou dit te doen soos ek this-- sou def funksie naam sê,
argumente kan hier gaan en ons sal sien 'n paar van daardie later, kolon,
en dan weer, hierdie hele verreken blok
is wat die operasionele sluit vir daardie funksie.
So dit is die definisie van die funksie.
En daar is 'n verklaring, dan af hier is, kan ek net noem die funksie.
En weer, die program tolk, begin by die top,
sal sien dit is die definisie.
Dit sal dit nie uit te voer totdat dit kry hier, en dan is dit soos, ag
nou het jy dit genoem word, het ek dink ek moet dit uit te voer.
>> A ding wat baie algemeen om te sien in Python lêers,
veral Python lêers wat is aan die publiek vrygestel
en ontwikkel by-- en ontwikkel en gehandhaaf, is iets van hierdie vorm.
Dit is so omdat basically-- Python, jy begin by die top
en dan af te voer jy aan die onderkant, Ek as ek moes net Mario uitgeroep hier
dan enige tyd wat ek ingesluit hierdie lêer in 'n ander lêer, want ek wou om te gebruik
is Mario funksie, wat ander lêer sou het ook hierdie oproep om Mario in.
En toe ek gehardloop lêer, dit sou Mario noem.
>> Dus is dit moontlik dat ek net wil hierdie hardloop as ek het eintlik
uitgevoer hierdie spesifieke lêer.
En so kan ek dit draai in 'n idioom soos hierdie, waar ek sê,
As die naam van hierdie uitvoering omgewing is hoofsaaklik
dan wil ek hierdie dinge doen nie.
Anders iemand anders kan use-- sluit my function--
my lêer, en net om te kry toegang tot hierdie funksies
sonder om die dinge te hardloop wat ek wil om uit te voer in hierdie lêer.
Dit is, weer, opsioneel maar baie algemeen.
>> Hierdie dinge is entirely-- is presies dieselfde tussen C en Python,
seker in 3.
Ek dink in 2, die verdeling operateur soms gee jou terug dryf wanneer
jy geopereer SY, en óf julle wat wou of jy het nie.
Maar plus, minus, en tye werk presies soos jy sou verwag,
behalwe oor effens meer tipes.
Sodat jy kan dryf vermenigvuldig met SY, en hierdie soort van dinge.
>> stel werk presies dieselfde.
Jy kan twee gelyke tekens gebruik.
inequals-- groter as, minder as, hierdie soort van things--
die betekenis wat jy vertroud is met hulle.
>> Waar C gebruik hierdie operateurs, Python gebruik effens meer Engels
leesbare kinders.
So in plaas van twee,-karakters, kan jy letterlik tik die woord "en", "of,"
of nie."
Soos in jou if-- in jou voorwaardelike stellings,
ons vroeër gesien het dat dit sintaksis in C ooreenstem met die sintaksis in Python.
En daar is nie 'n baie verskillende daar, behalwe vir 'n bietjie
leestekengebruik rondom die kante.
Weereens, waar C sou anders As, Python gebruik elif,
maar dit is meestal oppervlak veranderinge.
>> Iterasie soos hierdie is dikwels geskryf in hierdie idioom in Python.
Jy kan hierdie soort van vervaardiging ding met 'n while lus aan die buitekant
as jy wou, maar jy beslis nie hoef te.
En weer, as jy wil hê die druk elemente in van 'n skikking
jy dalk dit te doen op hierdie manier.
Een van die lekker dinge oor Python al is,
is dat jy nie nodig het hierdie paradigma gebruik,
en jy kan 'n gebruik effens meer elegante een.
Jy sê vir 'n in ary.
>> So eerder as hier gaan en loop oor die indekse,
en dan trek uit individuele elemente,
vertel die vir om werklik net loop oor die elemente self.
En dan alles wat jy doen binnekant kan direk bedryf
op die elemente, wat is redelik pret.
En ons sal ons gebruik see-- weer en weer dat idioom
soos ons loop deur die kode.
>> Dit is weer 'n voorbeeld van iets wat ek sal
noem Python magic, maar daar is baie tegniese redes waarom dit werk.
En daar is tegniese dinge wat nodig om waar oor verskeidenheid in orde wees
vir hierdie om te werk agter die skerms.
Die ding is dat die meeste tipes wat jy sou verwag van hierdie om te werk
gehad het vir hierdie geïmplementeer wat jy in die gebou in die taal.
>> Nog 'n ding wat dit sal lekker wees As dit gewerk het in elke taal,
maar daar is 'n paar redes waarom dit nie kan nie, druk hierdie string keer hierdie getal.
Blyk in Python, dit doen presies wat jy wil, wat net pret,
en beteken dat ons kan eintlik hierdie program te verminder, weer mario.c.
Eerder as iterating 'n baie, ons kan net sê, ek wil 'n paar aantal ruimtes,
Ek wil die aantal hashes, en 'n paar hashes aan die einde.
En weer, gebruik ons ​​hierdie formaat.
>> Hier is ons verby in 'n veranderlike op hierdie manier.
Weereens, het ons nie nodig om te sê watter tipe veranderlike dit,
en die enigste tyd sal ons kry foute is te hardloop tyd.
Wanneer iemand probeer om iets in te slaag,
dit sal net 'n boete in die funksie kom.
As ons hier wig, want dit is nie die ding wat jy reekse oor kan skep,
Ek sal 'n looptydfout daar te kom, en ek sal hê om dit te ontfout dat die pad.
Maar in die tussentyd, het ek nie baie versigtig wees oor wat
kry geslaag, so lank as wat in die werklike uitvoering dit alles werk baie skoon.
>> Ek kon dit selfs 'n bietjie skoner
met behulp van 'n bepaalde gebou-in-funksie op snare, wat reg is Regverdig.
Dit is net 'n nuttige funksie rondlê die biblioteek.
Dit is in die dokumentasie as jy gaan kyk vir dit.
En ek sê, goed ek gaan hê hierdie string, sommige aantal hashes,
en ek wil graag it-- pad reg te regverdig dit uit met spasies om hierdie lank wees.
>> Weereens, dit is in die dokumentasie wat us-- bring
Ek sal eintlik kliek deur these-- Dit bring ons by ons tweede reël
vir Python-- standaard biblioteek funksie metodes is jou vriende.
En dit is dikwels die moeite werd om te gaan soek na ek wonder
As daar is 'n ding wat net dit doen.
Daar is waarskynlik.
As jy wil om pad 'n string, as jy wil
graag die terug te neem helfte van 'n string, as jy wil
wil om te soek deur 'n string, as jy wil graag 'n paar van die dinge smash
tesame met 'n string met kommas tussen hulle,
Daar is standaard biblioteek funksies om dit te doen.
>> En dit maak jou lewe makliker as jy dit gebruik
in plaas van die uitrol alles op jou eie
vyf reëls van die kode hier, vyf reëls van die kode hier.
Dit begin regtig by voeg tot real time.
>> Een van die interessante dinge oor hoe dit raak genoem.
Jy sal sien dat daar is 'n dot ding.
Ek het 'n paar voorwerp aan die linkerkant, en dan het ek 'n punt 'n funksie.
Dit is een van die paradigmas wat Python gebruik vir die bevestiging van metodes om voorwerpe.
Ons sal praat oor wat dit is baie kortliks aan die einde,
maar weet dat ons kan albei werk op dinge deur daardie ding sê dot
wat ook al, of deur te bel 'n funksie wat neem
daardie voorwerp en 'n paar ander argumente.
>> So dit is beide maniere wat dinge gedoen in Python.
En of 'n bepaalde funksie geïmplementeer
in hierdie styl of hierdie styl is iets wat jy
moet kyk totdat jy 'n hang kry vir watter een dit is waarskynlik in om te val.
Daar is 'n min of meer samehangende filosofie agter Python
dat jy meestal absorbeer deur 'n baie in dit.
Op 'n sekere punt, wat een van hierdie iets sal geïmplementeer word as
word die natuurlike.
Vir nou, is dit net iets jy leer as jy uitvind
elke individuele ding.
>> So standaard biblioteek funksies is jou vriende,
en hulle laat jy dinge skryf wat neem dit baie ruimte regtig kort,
regtig elegant.
En dit is eintlik waarskynlik meer leesbaar, wil ek sê, as die C-program
daar.
Nie aan die feit dat so noem kort kan jy 'n hele olifant pas
in die ruimte wat ons gered het.
>> Nog 'n ding, dit is 'n implementering Mario dis dot C, wat ek dink
is die kortste jy kan dit te kry.
Dit hoef nie die get int, maar dit moeilik kodes die waarde van 10
Op dieselfde wyse dat hierdie een nie.
Blyk dat hierdie een horlosies by 84 karakters, terwyl Python is 64.
En dit is oneindig meer leesbare as hierdie gemors hier.
So Python is meer doeltreffend in die ruimte.
Dit is effens minder doeltreffend in die tyd, maar nie veel nie.
>> Lyste is 'n belangrike ding in Python.
Ons het dit nie gesien nie, maar hulle werk baie soos skikkings te doen in C.
So hier is, kan jy verklaar hulle jy kan hulle slaag in 'n ding.
Nou blokkies hou 'n verskeidenheid van hierdie dinge.
Weereens, ons het nie verklaar tipe, maar as ons ooit probeer om dit te gebruik,
enigiets wat jy sou verwag om werk op 'n verskeidenheid van heelgetalle
gaan om te werk 'n verskeidenheid van heelgetalle.
>> Dit is 'n saak wat jy absoluut kan nie
doen in C, omdat die geheue dit so hande op,
maar is baie maklik om te doen in Python.
As ek wil my skikking om groter te wees, ek kan voeg 'n element om dit en dit is goed.
>> Wat gaan aan agter die skerms?
Die tolk gaan uit en kry 'n paar geheue,
en miskien sal dit 'n te kry bietjie ekstra geheue,
sodat ek nie, so ek het nie ' elke keer realloc.
Maar hoeveel meer geheue beteken dit nodig?
Dit is nie besluite wat jy moet maak,
dit is besluite wat die tolk gaan doen.
>> Hier sien ons reeks kan neem twee argumente,
maar dit is nog steeds gaan inklusiewe te wees van die top sodat ons daar by te voeg 1.
Dit is 'n idioom wat 'n selfs meer slim manier om dinge soos hierdie te skryf.
Dit is genoem lys begrip, en hier wat ons sê
is Ek wil graag in te sit i kwadraat vir elke waarde van i in hierdie reeks.
Hierdie ding op die regte kan nog wees skikking, en hierdie ding aan die linkerkant
om 'n bepaalde funksie wees wat sou neem in i as 'n veranderlike
en gee my 'n paar resultaat.
>> Wat gaan ek doen, is, Ek gaan om te bou
'n skikking wat al hierdie dinge vir elke waarde in hierdie reeks.
En dit is super elegant, super kort, en dit is baie duidelik wat dit beteken.
Dit is een van die things-- dit is weer
een of-- baie tekenend van die redes dat mense soos Python.
As jy wil programmering soos hierdie, dan Python
is 'n taal wat jy dalk wil om te leer.
>> En weer, daar is tegniese redes waarom dit werk.
Maar so ver as wat ons betref, ons min of meer nie omgee nie.
>> So as jy wil om uit te druk lyste sommige van dieselfde idiome is nuttig.
Want ek in hierdie reeks, kan ons indeks deur al die dinge
en dan druk hulle almal uit.
En jy sal sien hier Len.
As jy al ooit wou om te kry die lengte van die skikking, wat
baie maklik in Python, dit is baie moeilik in C.
Dit sou presies uit te druk wat jy dit sou verwag om.
Ons kan ook, soos ons gesien het nie, Itereer oor die elemente in die rigting
direk, en dan net te praat oor hulle, eerder as om die indeks
terug in die skikking elke keer.
>> En dit is 'n ding wat jy kan doen.
So in C, as jy vra vir iets soos hierdie, sou druk sê
dit is 'n verskeidenheid van heelgetalle.
Dit is beslis nie 'n string, kan ek nie druk nie.
Python min of meer nie omgee nie.
Dit is soos, is daar 'n manier dat ek kan dit tot 'n string draai in?
Ja, ek sal dit doen.
En so sal ek net druk dat uit.
Dit beteken dat jy kan dinge like-- hierdie dinge te doen
is die meeste van die harde dele spel van vyftien, geskryf
baie kortliks in Python.
>> Jy sal sien dat daar 'n bietjie of-- hier
Ek het 'n heelgetal te gooi 'n string, en ek het dat die hand te doen.
En ek gaan om by te voeg na 'n ander string,
of anders Python verward raak.
Maar of wanneer jy toevoeging van 'n string na 'n heelgetal,
ek veronderstel is om te kry 'n heel getal rug of 'n string terug?
Maar weereens, as jy net noem str op 'n ding,
en dit kan in enige moontlike wêreld omskep word in 'n string,
dit sal waarskynlik omskep in 'n string.
>> Hier sien ons die gebruik van geneste lys begrip
aan die linkerkant, sommige kruip, wat is presies soos jy wil gebruik om dit te,
en 'n paar uit te druk van die dinge.
Weereens het ons 'n paar gedefinieer funksies en ons sal hulle noem af
in die belangrikste wanneer ons eintlik kry die lêer.
terugkeer werk presies soos jy wil verwag van die werk met C. Vind,
ons kan stel aan dinge soos this-- hier is n lys begrip
daar is 'n opdrag om 'n veranderlike, en ons kan werklik doen dit nog makliker.
Ons hoef nie te soek skryf, omdat ingeboude om die taal
is as hierdie woord is in hierdie reeks.
Terugkeer waar, anders terugkeer onwaar.
So wat is die geheel van vonds.
>> Die geheel van soort behels die roeping soort,
wat is-- daar implementasies van hierdie gebou in sekere C biblioteke.
As jy wil graag hierdie soort van agtertoe, jy
kan ignoreer hierdie opsionele argument in reverse met 'n ware.
En as jy wil oor te sorteer snare, wat is gebou in so goed.
>> So dit is nie te sê dit is dinge wat jy nodig het om elke dag te doen,
maar die idee is dat hierdie is die filosofie van Python,
dat al hierdie dinge wat jy wil soort wil doen is gebou in.
En die meeste standaard funksies, so soort, lengte, wat ook al,
ondersteun die meeste logies sinvolle insette.
Jy noem Len op 'n verskeidenheid dieselfde roep jy Len op 'n string.
Jy multiply-- jy snare sorteer dieselfde manier wat jy skikkings te sorteer.
>> Die meeste standaard funksies dat mense bou,
en die meeste derde party biblioteke wat mense
bou, want hulle is die navolging die ontwerp van die standaard biblioteek,
genoem kan word op alles wat jy soos, waarom dit nie net werk nie,
in C. Meer of minder, dit sal werk in Python
omdat mense werk agter figuur uit te vind wat 'n ding is en dan te werk
toepaslik op dit.
So weer, tegniese agtergrond, maar dit maak ons ​​lewens makliker as programmeerders.
>> So hier is lêer I / O. lêer I / O het baie van die klein dingetjies wat dit ingewikkeld maak,
en so is daar hulpbronne aanlyn, maar in 'n neutedop,
jy bel oop op 'n lêer naam met 'n spesifieke tipe.
So dit is lees, lees en skryf, skryf of voeg.
Jy lees 'n sekere aantal karakters uit en jy druk diegene
jy kry Hello!
Ek bedoel, soos hierdie lêer moes Hello!
In dit, bel om te lees, en wat jy sal terug te kry
is 'n string wat al het van die res van die skikking,
of al die res van die lêer.
As jy weer 'n beroep te lees, jy aan die einde van die lêer,
en so kry jy nie enigiets en sodat jy sluit.
Weereens, dit is .close eerder as naby lêer, soos dit in C. sou wees
Dit is min of meer, want f is 'n ding, en jy wil vir f om te sluit.
Maar basiese lêer I / O is nie veral ingewikkeld.
Weereens, as jy wil graag 'n lêer oop te maak, as jy wil 'n bepaalde lyn te lees,
wat jy kan kry uit die besonder line-- daar gebou-ins vir daardie.
As jy wil graag 'n skryf ding, kan jy dit skryf.
As jy wil om uit te skryf individuele byt, kan jy die skryf.
En as jy wil Itereer oor die lyne van 'n lêer
individueel, soos ons gedoen het in 'n stuk van 'n Paar weke gelede, kan jy dit doen om.
Weereens, die meeste voorwerpe wat jy wil graag in staat wees om oor te Itereer
ondersteuning iterating oor hulle.
In Luislange, 'n lêer is dalk 'n ding wat Ek wil graag Itereer oor lyn deur die lyn.
As dit was 'n woordeboek van woorde en ek was
probeer om die individuele kry woorde uit, dan, in hierdie lus,
line dit gaan wees elke woord in sy beurt en dit
gaan word uitgevoer vir elke lyn in die lêer tot die einde van die lêer.
En weer, as ek gedruk elke lyn, die lyne kom met die nuwe reëls,
so ek die opstel van die einde terug na 'n ding soos hierdie.
Dan wil ek die inhoud van my lêer.
>> Die tweede ding wat werk in sommige maniere, soos lyste, en in sommige maniere
as iets wesenlik meer kragtige,
is woordeboeke, wat werklik is cool om te gebruik, maar is basies hash
tafels in disguise.
Jy een deur presies te skep twee karakters, wat is awesome
as jy probeer om die implementering hash tafel jou probleem stel,
jy weet baie pyn wat kan wees.
Maar mense gedoen het , en dit gedoen so goed,
dat jy nie hoef te bekommerd daaroor nie.
>> Dan kan jy individuele dinge voeg.
Hash tables-- of woordeboeke doen nie besonder
omgee wat jy stoor in hulle nie.
So as 'n paar inskrywings is getalle, en 'n paar inskrywings is lyste,
as sommige inskrywings is ander woordeboeke, en 'n paar inskrywings is snare,
Python nie veel sorg.
>> Weereens, as jy gaan in dit verwag 'n string en wat jy terug te kry
is 'n skikking, wat is jou probleem.
En miskien is dit die skuld van elkeen gedink dit was om dinge
in die woordeboek, miskien was jy.
As dit was iemand anders, hopelik was hulle
goed gedra oor wat gaan in die woordeboek
en het nie enige slaggate te verlaat vir julle in te val.
>> Maar die standaard funksies sal gee jou terug goed gedra dinge.
Sodat hulle sê dit opbrengste terug 'n woordeboek van snare,
dan is alles wat jy gaan om uit 'n string.
As jy 'n paar van hierdie te doen en dit reise jy, wel, wat kan wees op jou.
Python gee jou beslis genoeg tou om jouself te hang, as jy wil.
Nou kan ons individuele druk elemente van dit en dit opbrengste
presies wat jy sou verwag.
Presies wat jy sou verwag, dink ek, is 'n frase wat ek gebruik 'n baie,
maar dit is meer of minder hoe Python werk.
As jy vra vir 'n ding wat nie dit sal Python gooi uit 'n fout
en dit sal jy ophou uit watter program jy in.
Dit sal eintlik druk meer inligting as dit,
dit sal wys you-- Dit sal voeg 'n lyn, en so.
>> En weer, miskien wil ons om Itereer oor woordeboeke
en vind al die dinge wat in dit.
Hier is ons iterating oor twee dinge op dieselfde tyd.
En so sal ons dit doen met 'n sleutel, waarde, maar dan druk al hierdie.
>> En as ons wou cast-- As ons werklik hierdie gehardloop,
sou ons 'n paar probleme, want het on-- toe ons in met Dawid
kon dit nie add-- as ons nie gooi dit eers 'n string,
ons kon nie byvoeg dat array snare op 'n string.
Maar as ons gooi dit na 'n string, iets wat ons kry
soos hierdie, wat is dalk wat ons wil om te lees.
>> En dit is speller.
Ons lees net in dinge.
So kan ons lees in individuele woorde as lyne.
Ons afkap die laaste ding, so kolon minus 1
hap uit die laaste ding wat we-- die laaste karakter van 'n string.
Ons sal sê.
OK, elkeen van daardie kry plaas in die woordeboek,
kartering van 'n waarde van 1.
Ons doen veral nie omgee dat een,
maar dit is net daar om te sê, oh well, hierdie ding wat ek sal in die woordeboek sit.
Want later wat ons gaan doen, is ons
gaan om te sê, goed, as dit in die woordeboek nie.
>> Weereens, dit tjek vir lidmaatskap is up bedryfstelsel
met behulp van 'n heeltemal ander algoritme as wat dit sal in 'n lys,
maar ons noem dit die dieselfde manier, wat is 'n paar van daardie Python suiker coating
dinge, sodat hulle is makliker om te gebruik.
En weer, ons het gesien dinge soos hierdie voor.
Dit is basies vind, of dit is presies dieselfde sintaksis
as te vind, maar is die werk oor 'n heeltemal ander struktuur.
En ons het nie veral sorg.
So dit is die dinge wat jy is gevra om te implementeer vir speller.
Teen hierdie koers, ons gaan kry min of meer al die psets gedoen.
>> GEHOOR: Sodat basies kom net terug
as verkeerd gespel as dit nie pas iets in die woordeboek?
ROSS RHEINGANS-Yoo: Ja, ja.
En so is dit 'n aanpassing van 'n probleem te stel
wat vra dat jy presies dit te doen.
>> GEHOOR: Hoekom is die lyn minus 1 is daar?
ROSS RHEINGANS-Yoo: So wanneer jy iterating
oor 'n lêer te vra vir deur lyne, die lyne
kom met 'n nuwe lyn karakter aan die einde van die it-- minus 1
is net om te shop diegene af.
En dit is 'n besonder buigsaam manier kruip in dinge.
So as jy 'n string, en jy wil, en ek is
gaan om te begin op karakter drie en ek gaan om te gaan na die einde.
3 kolon sal dit doen vir jou.
As jy wil, ek wil om te begin by die begin en gaan na die laaste minus 1
karakter, kolon minus 1.
En as jy wil om te gaan van die derde na die eerste minus,
dan moet jy wil sê 3 minus 1.
>> Verder, as jy wil indeks in dinge tel van die rug,
jy net indeks met minus getalle.
En omdat, waar C sou ontplof of miskien
voed jy ander geheue jy het nie toegang tot hoor wat jy kan sê minus 1
beteken die laaste, maar 1 karakter in 'n string.
>> Modules is version-- is analoë aan biblioteke in C
en is nuttig vir 'n baie van die dinge.
Baie van die dinge wat jy wil wil doen in Python,
Behalwe eenvoudige manipulasie van veranderlikes,
jy wil om te haak in die groter biblioteke met groter
koppelvlakke en meer moontlikhede vir interaksie
met ander dele van die wêreld.
sys is een van daardie met 'n klomp van die gereedskap
wat nuttig is vir die interaksie is met die stelsel self
en sal dit in te voer, soos die invoer sys.
>> Daar is meer dokumentasie van dit wat jy hier kan gaan,
of jy kan vind op Google deur googlen Python sys.
Jy tik in te gaan.
Die eerste skakel gaan wees die dokumentasie in Python 2,
die tweede skakel gaan wees die dokumentasie Python 3.
>> En as ons geskryf uit 'n lêer wat lyk soos this-- As in die besonder, ons is
kyk na wat op command line argumente,
soos ons geleer om baie te doen vroeg in hierdie klas.
Dit is nie moeilik nie. Jy kan kry uit argv,
Dit is een van daardie dinge wat geïmplementeer deur sys.
Dit is nie 'n ingeboude in die basis pakket, maar weer, jy
kan dit uit te brei deur die invoer wat funksionaliteit van sys.
Jy sal dit sys noem.
wat ook al.
Hier is daar argv.
Daar is eintlik geen argc in sys, omdat jy
kan dit so maklik deur die roeping van Len.
Ons het toe gedruk wat uit is, dan het ons hardloop op ons terminale echo-args.py.
Ons kry weer 'n skikking, wat is die eerste argument.
Weereens, dit is argv 0, wat is die Naam van die ding wat het genoem.
As ons noem dit met bykomende argumente, sou ons die rug.
Dit is een manier om command line argumente.
As jy wil vlae waar jy draai bepaalde dinge op of ignoreer
'n bepaalde standaard, argparse is jou vriend.
En weer jy vind dat aanlyn op python argparse op Google.
>> Daar is 'n paar van nut modules wat jy jouself met behulp van
en weer, as jy enige tyd te spandeer van hierdie taal invoer jsons
vir die lees van in en uit into lêers, nie dat ingewikkeld.
Jy maak 'n lêer, jy json.load genoem op die lêer en jy kry terug 'n ding.
Wat is die ding?
Dit is 'n into voorwerp.
Waar daardie into het skikking, die Python het skikkings.
Waar daardie into het assosiatiewe skikkings, Python se
woordeboeke, snare, en nommers, en so aan.
Jy wil om te stort wat uit jou open 'n nuwe lêer, jy stort noem,
en vragte en mynhope te gaan in en uit snare.
>> Net so, kry piekel genoem in basies dieselfde koppelvlak.
Dit is effens meer nuttig as jy storting Python voorwerpe.
So as jy ooit wou om te spaar 'n weergawe van die huidige status
van 'n veranderlike vir 'n toekomstige hardloop van jou program,
piekel is Python se biblioteek vir dit te doen.
>> As jy enige soort van veranderlike wat geskryf kan word uit
in soos woorde en karakters en bytes-- soos hierdie woordeboek,
ons kon skryf, het ons kon dit neerskryf as
soos 'n into voorwerp, wat was letterlik hierdie karakters.
En dan sou dit baie maklik wees vir 'n mens om dit oop te up-- oopmaak
en lees dit.
As ons gedoen het nie besonder omgee mense om dit te lees,
Ons kan selfs meer doeltreffend te verpak in vorms wat later kan word uitgepak
of dat later kon word opgeblaas.
En dit spaar 80% van die ruimte wat jou voorwerpe mag
neem as jy het hulle uit skuldbewys.
>> Jy noem piekel baie dieselfde way-- stort, vrag,
en dan kry jy jou dinge terug.
So as jy baie skryf kort Python programme wat
wil staat te red, en lees dan dit later terug, dinge soos hierdie
is jou vriende.
Dat jy kan baie hulle maklik te stort as into.
Die meeste Python voorwerpe kan stort uit die into
as daar enige hoop wat struktureel hulle kan verteenwoordig op die manier.
>> Dit is net die punt van die ysberg op modules wat nuttig is.
So sys, os, multi, is soort van basiese werkesels vir dinge
ons nodig het om met die lêerstelsel os.,
soos os.isfile, os.isdirectory, os.makefile, dit is jou vriende.
As jy wil om te kommunikeer met 'n spesifieke lêer tipe,
into piekel, CSV.
As jy wil om te kommunikeer met die web bladsye, die urllib vir die kry http
bladsye. bs4-- BeautifulSoup-- dit is 'n wonderlike parser vir html.
Jy loop dit op 'n HTML en jy kry hierdie sub-array voorwerp nou,
wat jy oor kan deurkruis Lookin, met soos net op soek na
As is, in, wat is fantasties.
>> Daar is 'n klomp van die pakkette vir running--
om dit te doen veral Mathy dinge.
So as jy wil om te vermeerder, Keer, herskep matrikse,
Numpy word gebruik deur mense oor die hele wêreld vir wat.
Scipy is selfs meer bruikbaar gereedskap in daardie rigting.
sklearn-- masjien leer, natuurlike taal verwerking,
super nuttige dinge, kry geïmplementeer in Python al die tyd.
>> En weer, neem effens langer write-- jammer,
neem effens langer om te hardloop, maar die rede dat ware ingenieurs is geneig
gebruik Python is omdat jy is geneig om te wees geblokkeer oor jou skryf die kode, eerder
as jou rekenaar die kode.
So as jy gaan om 'n skrywe program, wat baie van die ander mense
gaan gebruik vir ewig, soos Linux, jy
mag dit skryf in C. As jy gaan 'n berekening enjin skryf,
jy in Python kan skryf as jy nodig om dit te verander elke paar maande.
Sommige mense sou dit skryf in C, want hulle is soos dit.
>> So het ons die invoer sys gesien as 'n manier om dinge
om module in jou program.
Jy kan ook die invoer dit as 'n bynaam, as jy wil.
Weereens multiprosessering is 'n pyn om tik elke keer, so voer as LP
en dan wanneer jy gebruik dit in die program,
jy sal sê mp.process, of wat jy het.
As jy wil invoer slegs 'n enkele ding,
so urllib het 'n ding genaamd versoek, so jy kan net invoer nie.
Later, sal jy nie roep dit as urllib.request, maar net so versoek
deur self.
>> En jy kan alles invoer van 'n module indien jy wil.
Dit is soms nie 'n goeie idea-- hierdie gewoonlik nie 'n goeie idee, eintlik.
Omdat jy very-- want as enigiets in daardie module het 'n naam wat jy
wou iewers anders gebruik in jou program, jy kan nie.
>> En dit is nie altyd duidelik dat dit die geval is.
Ten einde seker te maak dat wat jy doen is veilig,
wat jy nodig het om oop te maak die module en sien al
van die name wat eindig in there-- al die funksies,
al die veranderlikes wat leef in daardie module,
want jy bring al hulle in jou plaaslike naamruimte.
>> So mense doen dit.
Dit word algemeen aanbeveel dat jy dit nie doen nie.
Maar mense doen dit al die tyd, want hulle is
lui en wil nie tik mp.
enigiets, ooit.
>> Al hierdie gepraat oor modules bring vir my om 'n kort praatjie
oor hoe jy programme te ontwerp in Python.
Die eerste stap is om te kyk om te sien of enigiemand anders het reeds die ding gedoen,
of gedoen 90% van die ding.
Die kans is dat hulle waarskynlik, en jy moet gaan kry hul ding en hardloop nie.
Of skryf 'n wrapper rondom dit om dit aan te pas by jou doel.
Dit is net ná wat versuim dat jy dan wil
gaan op en write-- begin dink oor hoe jy hierdie ding saam sou sit.
Daar is baie van die dinge daar buite, en dit is
een van die mees bruikbare dinge oor Python.
Soos die taal is elegant, die taal
is maklik om te gebruik, maar ook omdat dit is so elegant en maklik om te gebruik,
mense is wat dit gebruik vir 'n lang tyd en daar is 'n baie dinge
daar buite wat jy kan benut vir jou eie gebruik.
>> So laaste reël van die Python is, iemand anders het reeds waarskynlik geskryf
'n module vir wat, iemand anders het reeds
waarskynlik geskryf in 'n biblioteek vir daardie.
Voordat jy probeer om 'n ding te doen, kyk om te sien of dit geïmplementeer is.
Dit is nie so moeilik.
Al die modules wat ek opgesit voor, met miskien 'n uitsondering,
kom vooraf geïnstalleer in elke standaard Python installasie.
En so met 'n oproep om invoer wat ook al, jy
het al van daardie funksie op jou vingers.
>> Besig om te draai hierdie praat, is daar 'n paar dinge
wat ek verlaat het as black boxes en soort van glansende oor,
en daar is 'n paar wit lê dat ek vertel dat ter wille van eerlikheid,
Ek sal ten minste punt hier, selfs al sal ek nie
gaan super diep in almal van hulle en hul tegniese verduidelikings.
>> Daar is baie van die dinge dat ek magie het genoem
is wat ander mense sou noem objekgeoriënteerde programmering.
So is daar baie things-- so veranderlikes is baie dikwels nie
eenvoudige grepe sit in, geheue, maar is baie ingewikkeld
voorwerpe wat interne het toestand oor funksies en baie
verborge veranderlikes, baie verborge funksie, wat
Kom jy hulle draai in snare, wat kan jy Itereer oor hulle.
En as jy writing-- en die rede dat hulle
het al van hierdie ryk funksionaliteit is omdat die people--
die argitekte van die language-- gegaan het
deur en vir elke standaard voorwerp, sit in die funksie
om te sê dit is hoe dit is hoe dit gaan om te werk
As iemand wil Itereer daaroor.
>> So alles wat iemand dalk moontlik wil oor Itereer,
het logika geskryf in hand oor hoe jy
veronderstel is om te Itereer oor daardie voorwerp.
Alles wat jy moontlik kan wil gestort in 'n string het logika geskryf.
Dit is die funksie wat jy bel as jy wil hierdie stort uit na 'n string.
Dit is die rede waarom jy kan noem len op dinge, hierdie
is die rede waarom jy kan bel in, dit is ' waarom jy nie kan bel as in op alles
wat jy wil hê nie, want diegene al dra met hulle,
die tegniese know-how om dit te doen.
>> Dit is iets wat ek is super gaan nie in te gaan.
Maar vir ding in lys is subtiel anders C styl vir loops,
en jy kan alles oor wat op lees die internet as jy belangstel.
Daar is 'n donker kant aan almal van hierdie, wat ek genoem het,
so daar is twee dinge.
Die eerste is dat hierdie voorwerp-georiënteerde programmering voeg 'n baie oorhoofse
ewekansige dinge, so jy uiteindelik met behulp van 'n baie meer geheue;
beland jy met behulp van 'n bietjie meer tyd as wat jy andersins sou.
Die other-- maar hoe meer verraderlike donker kant aan hierdie
is, as dinge net te tree soos jy wil hê hulle moet
sonder dat jy super hard dink oor of dit 'n int moet wees
of daar moet 'n float, kan dit wees dat hier
jy 'n int produseer, maar hier het julle dink, maar hulle sal jammer always--,
dit kan wees dat hier 'n float produseer,
maar wanneer jy die tweede deel van jou program, jy dink,
Oh well, maar hulle sal altyd slaag vir my 'n int.
En as hulle dit nie doen nie, is dit moontlik dat jy iewers ingedruk,
as jy probeer om dit te gebruik na die indeks in 'n skikking, of wat jy het.
>> So een van die werklike nuttige dinge oor C is
dit dwing jou om regtig te dink hard te maak voordat u any--
voordat jy enige veranderlike bring ontstaan, soos wat
is die soort van hierdie veranderlike.
En dit gaan om dat die tipe vir alle tye.
>> Dit is nie waar nie Python, en in die feit, jy
can-- as jy net soort gaan deur die gehoor,
en jy 'n paar besluite te neem een manier in een plek,
en 'n paar besluite een manier in die ander plek
sonder om genoeg dinge agter die tonele in die ander plek
om dinge behoorlik te vang, moet jy kan 'n paar baie vreemde foute te kry.
En die program kan hou hardloop vir 'n baie lang tyd, want dit is
doen 'n baie werk om te sê, goed hierdie ding kan op hierdie manier te werk,
so ek gaan om die manier te hardloop.
>> En in die feit, die feit dat dit stoot stuur deur middel van 'n baie klein foute
beteken dat, dikwels wanneer 'n fout is eintlik slegte
en jy hoef eintlik wil hê om dit op te los, dit eindig myl away-- die program
eindig stop myl weg uit wanneer jy jou fout het.
En so 'n ding wat ons wil programme om te doen, sometimes-- een ding
wat ons graag programme om te doen wanneer ons ontfouting
is misluk hard en baie misluk vinnig wanneer iets verkeerd gaan.
>> Python is baie sleg in daardie.
Python is baie goed in nie versuim en rollende vorentoe
deur onverwagte dinge.
So, dit is nuttig vir wanneer jy skryf klein programme.
Wanneer jy ingewikkeld foute soms
neem 'n lang tyd om hulle terg.
>> So is daar 'n donker kant aan almal van hierdie, soos dit werk net.
Dit werk net soos jy sou verwag om dit te.
Behalwe dat wanneer dit nie doen nie, beland jy in 'n heeltemal ander plek
en probeer om uit te vind waar dit was dat jy verkeerd geloop het.
>> Vullisverwydering is-- so een ding wat jy sal sien
is dat enige van hierdie dinge wat Ek het in existence-- gebring
hierdie skikkings, hierdie woordeboeke hierdie voorwerpe, hierdie files-- kry nooit bevry.
Daar was geen oproep om gratis in enige van hierdie praat.
En dit was op die C-span, want Ons het nooit in daardie dinge.
>> Maar in Python-span, is daar nie 'n vrye.
Dinge outomaties bevry wanneer Python
dink jy nie op soek na hulle.
Dit is regtig 'n goeie nie dinge wat bevry jy dalk nog steeds moontlik op soek na,
maar dit beteken dat as jy gaan hierdie groot ding ken,
en jy is soos, ag Ek is klaar met dit nou,
dit is moeilik om te sê Python dat jy klaar is met dit nou.
>> Jy kan soms stel dat veranderlike nie wees nie,
en dan hoop dat uiteindelik die vullis versamelaar
kom deur en maak skoon dit uit.
Maar weereens, jy doen nie het beheer oor wat.
En een van die redes wat mense gebruik C vir baie prestasie kritieke dinge,
is hierdie vermoë om werklik weet wanneer geheue toegeken
en wanneer dit vrygelaat, en het 'n baie beheer oor gesê:
Ek gebruik nie meer gedink as ek nodig het.
Dit is iets wat Python is nie dat groot op.
GEHOOR: Kan ek vra jou 'n vraag?
Wat het jy bedoel met misluk hard?
>> ROSS RHEINGANS-Yoo: So as iets is verkeerd gaan
en jy is in debugging af, sou jy baie dikwels
wil hê dat jou program om jou te vertel presies waar dit verkeerd geloop,
en nie net stil te hou hardloop.
Maar jy wil eintlik dit te druk uit alle vorme van inligting oor
soos hier was hierdie.
Hierdie ding gebeur As jy druk 'n wen-- as jy 'n web server--
>> GEHOOR: [onhoorbaar]
>> ROSS RHEINGANS-Yoo: Ja, as jy 'n web bediener,
dit is soms sleg as jy altyd wegdoen foute,
en jy sê, goed dat nie gewerk het nie.
Ek gaan om te stop.
Ek gaan net om te ignoreer dit en hou aan die gang.
Want dan kan jy in honderde van hierdie foute en hulle nie sien nie.
>> Dit sou beslis nuttig wees vir ontfouting doeleindes
as elke keer as jou web bediener het 'n fout, jy het duursame rekords van daardie.
Miskien is jy selfs wil hê dat die program om te stop, sodat daardie rekords
Moenie begrawe onder dinge.
Maar weereens, dit is in debugging mode.
>> Dikwels in die produksie af, die wêreld is 'n bietjie anders.
En in klein skrifte wat ek loop, waar die ding wat ek gesê het om te doen
dalk net 'n bietjie af wees van wat ek wil om dit te doen,
dan soort van druk deur foute is iets wat jy dalk wil.
En in dié gevalle beslis Python verdien regtig sy begin.
>> Die laaste ding wat ek nie praat in this-- dat ek nie praat oor
maar kan regtig woedend die eerste tyd wat jy het een van hierdie foute,
en die tweede en derde en vierde tyd wat jy het 'n hierdie foute.
Python, ek genoem dat dit gebruik wit spasie
om jou watter vlak van inkeping vertel en wat funksionele blok jy in,
dit behandel oortjies en ruimtes anders.
So as jy die blad oor vier, en dan die volgende lyn het vier ruimtes,
selfs al het hulle vertoon as die dieselfde bedrag in jou redakteur,
Python hulle nie behandel dieselfde.
>> In werklikheid, Python behandel oortjies en ruimtes soos olie en water.
Hulle is net verskillende dinge.
Daar is geen spesifieke lengte wat 'n blad is,
so dit is nie soos 'n blad is gelyk aan 8 ruimtes, en so sou jy rondom dit kry
dat die pad.
Soos, wanneer dit sê, wat vlak van wit spasie ek by,
dit is eintlik op soek na ' patroon van ruimtes en tabs.
En so, die beste manier om te gaan met hierdie is om altyd ruimtes al die tyd.
>> En in die feit, in die Cloud9 IDE en die CS50 IDE,
jou Tab-sleutel inserts vier spasies in plaas
van 'n blad, wat is super nuttig.
Hoewel weer, as jy 'n Python geskryf program met oortjies wat fyn sou wees,
dit is net as iemand gaan toe in en probeer om by te voeg
'n enkele lyn om jou program wat het vier ruimtes vir elke blad
dit sou breek.
En dit sou 'n manier breek dit is regtig nie sigbaar nie.
Alhoewel die werklike fout boodskap wat dit gooi
het te doen met 'n nuwe keep hier nie verwag word,
or-- as dit praat oor koppeltekens en dit lyk asof dit is verkeerd,
dit is waarskynlik omdat daar is 'n blad-ruimte probleem.
Hulle is nog steeds woedend te ontfout.
Die grootste geheel in hierdie gesprek, wat ek gedoen het nie
kry, want dit is regtig 'n ingewikkelde, subtiele onderwerp
en nodig is om enige te doen nie van die dinge wat ons tot dusver gedoen het,
is 'n konsep genaamd tuples.
Hulle is daar baie soos die skikkings wat jy nie kan verander.
Hulle raak al oor die plek, want hulle is nuttig vir baie van die dinge
dat skikkings is nie nuttig vir.
>> Maar as jy wil graag 'n verskeidenheid te maak, en dan belowe die tolk dat jy
gaan nooit wil verander wat thing-- in werklikheid, as jy wil verander,
jy sal 'n nuwe een met die nuwe maak waardes in it-- diegene is tuples.
Eerder as die vervaardiging van hulle met vierkantige hakies,
jy hulle produseer met ronde hakies.
Waarom jy hierdie dinge sou gebruik, is 'n bietjie van 'n vraag. .
Die enigste ding wat ek sal sê oor wat jy
kan tuples gebruik as indekse vir woordeboeke.
Jy kan nie skikkings gebruik as indekse vir woordeboeke.
En hoekom is, weer, tegniese en Ek gaan nie te loop in dit.
>> Die pset wat ek nie aangeraak in hierdie gesprek is pset6.
So hier is hoe jy 'd implementeer a-- hier is
hoe jy pset6 sal implementeer in Python.
Hou in gedagte die Python ontwerp siklus, die eerste ding
wat jy doen wanneer jy die skryf van programme is tjek
om te sien as iemand wat dit reeds gedoen het.
>> In werklikheid, as jy wil om serve-- Apache 50
doen ongeveer hierdie, behalwe dit kom nie
standaard geïnstalleer op Linux masjiene.
Python doen en die Python eenvoudige http bediener doen as goed.
As jy al ooit op 'n Linux masjien, of die Cloud9 IDE buite CS50
en jy wil die huidige dien gids om 'n bepaalde hawe,
python-m SimpleHTTPServer hawe dien dit.
Jy kan ook die invoer die eenvoudige http bediener
en dit het 'n baie van die funksies of jy wil om dit aan te pas, of dit verander,
of hardloop it-- inspan om dit te hardloop jou eie bediener dienste.
>> So dit is Python in 'n neutedop.
En dit is CS50.
Dankie.