ROSS RHEINGANS-Yoo: Saluton, mi estas Ross.
Kaj tiu estas CS50 seminario.
Ĝi prenos vin de programado en C programming en Python.
>> Python estas scripting lingvo.
Ĝi estas plejparte kiel C en sintakso, kvankam iuj
de la teknikaj detaloj de ke sintakso gets ekzekutita
estas iomete malsamaj.
Ĝi estas malpli potenca ol C kelkmaniere.
Ĝi estas malpli esprima por kie ĝuste en via komputilo
memoro gets elspezata, kiom gets elspezata,
kiam alvenas libereco kaj tiuj specoj de aferoj.
>> Ĝi estas pli utila ol C kelkmaniere, ĉar ĝi estas pli facile plani en.
La lingvo estas, al iu personoj, pli intuicia.
Kaj vere, la celo estas por ĝin esti rapida por plani
kaj potenciale malrapidaj por ekzekuti.
>> Nun, se vi pensas pri la kvanto de tempo
vi pasigis en via lasta problemo aro skribo
via kodo kontraŭ la kvanto de tempo vi elspezas
sur via lasta problemo fiksita ekzekuti via kodo,
oni kredus imagi ke la lingvo kiuj estis duoble rapida skribi,
kaj duoble malrapida ekzekuti, povus esti plibonigo super C en kelkaj manieroj.
Certe kiam vi provas skribi malgrandaj programoj fari malgrandajn aĵojn,
Python estas utila lingvo de elekto.
>> Post paso de tiu seminario, mi esperas ke vi
povos fari la elekto en estontaj projektoj
pri kiu lingvo estas ĝentile uzi, ne la ideo
ke unu lingvo estas pli korekti la tutan tempon.
Kelkajn aferojn pri kio la seminario estas.
Tiu seminario ne celas instrui vin Python de nulo.
Python estas tre similaj al C, kaj Mi supozas
ke vi estas CS50 studento, aŭ iu kun simila familiareco kun C.
>> Se vi estas CS50 studento ĉirkaŭ problemo aro 6,
Do vi vidas multe da aferoj en C, Mi donos al vi
la gravaj diferencoj, kaj iuj de la aĵoj
kiuj faras Python malsamajn kaj speciala kaj utila,
sed mi ne tuj iri por kio programlingvo estas
kaj kiel skribi programojn.
Tamen, tiu seminario instruos vi skribi Python programoj
se vi estas unu el tiuj malmultaj grupoj.
Denove ni rigardu kiom vi devus apliki psets--
kiuj devus esti 1-6 en Python-- kaj provizas ligoj
al oficiala dokumentaro por estonteco referenco.
La alia afero, ke estas gravaj pri kiel ĉi diskuto estas atribuita,
tiu video estos rete, ĝentileco de CS50,
tiel vi devus ne sentas vi bezonas preni notoj.
Vi ĉiam povas iri reen kaj rigardi ĝin poste kiel aludo.
Aldone la diapozitivojn estas havebla nun
ĉe tiu loko, kiu devus preni vin fari Google Doc.
Estas iomete mallongigita versio kion mi montras sur la ekrano.
>> Unu zorgema averto antaŭ Ni salti en, Python 3
estas malsama lingvo de Python 2.
Ili aspektas multe la sama; estas tre malpeza teknikaj diferencoj
kiu kaŭzos programoj skribita en Python 2
ne povi esti ekzekutita en la Python 3 medion.
>> La CS50 aparaton venas kun Python, implicite uzas Python 2.
Vi povas kontroli tion per tajpado en via komandlinio
python --version, kiu devus eligo 2.7.6 sur la aktuala aparato.
Provu Python 3, kiu faras labori en la aparaton,
se Python implicite 2.X.Y, ĉu sur la aparato aŭ sur via propra maŝinoj.
Vi devus anstataŭi Python 3 aùton en tiu diskuto, ke mi skribas Python.
Se via maŝino estas kurante 2 defaŭlte, tipo
Python 3 por povi reale sekvi kune kaj ekzekuti tion.
>> Aldone, mi atentigi vin ĉe oficiala rimedojn nun.
docs.python.org/3--~~V zorgema ke tio estas 3 kaj ne 2--
havas utilaj referencoj.
Lernilo prenos vin tra multe de la samaj aferoj
ke mi faras nun, krom en teksto formo.
Referenco estas utila kiel Referenco por la lingvo,
kaj la Norma Biblioteko donas vi iuj de la etendoj
kun aldonaj funcionalidad.
>> Do tre unuan Python programo.
Sur la maldekstra havas norma C, sur la dekstra, ni havas Python.
Vi eble rekonis tiun problemon, ĝi estas
unu el la unua problemo aroj en CS50, kaj ĉi tiuj
solvi ĝin uzante la saman solvon.
Nun, la kialo kiun ni estas rigardante tiujn flank
Estas do ni povas rigardi sintaksaj diferencoj.
Unu el la elefantoj en la ĉambro ke vi eble rimarkis dekstra
la batilon, estas ke Python havas nenian ĉefa funkcio kroĉas ĉirkaŭ la kodon.
Do en C, vi skribas faskon de dosierojn, vi ligas ilin kune,
kaj la programo komenciĝas ekzekutinte ĉe tiu afero nomata int main.
>> En Pitono, vi skribos dosieron vi, ekzekuti la dosieron,
la programo komenciĝas ekzekutinte ĉe la supro de la dosiero.
Do ĝi estas tuj komenci ĉe la supro de dosiero
iri malsupren ĝis ĝi trovas ion alian.
Se ĝi trovas funkcio difino, ĝi ne reale ekzekuti tiu kodo,
ĝi simple difini la funkcion.
Sed ĉi tie, kiam la unua programo estas n egalas 10,
la unua kiu ĉi programo faros estas preni tiun valoron de 10
kaj starigis ĝin en variablo nomis n.
>> Parolante pri tiu linio, unu el aliaj things-- sorry-- ĉi
signifas ke C programoj, vi skribas ilin,
vi faros ilin, kiu alpreĝi iuj tin komandojn,
kaj tiam vi devos kuri rezultanta plenumebla.
Python programoj, vi kuras la teksto file-- ĉi mario.py eble
esti tiu dosiero, kiun mi ĵus montris you-- vi kuros ke dosiero
kaj vi ekzekuti, kaj la enhavo de ĝi
lanĉiĝos per la Python interpretisto.
Vi povas fari tion en via IDE.
>> Do se mi havas Saluton dosiero, kiu simple havas ĉi enhavon.
Tiu estas fakte Pitono 2, Ne Python 3, do ne
zorgi pri la sintakso nun.
Sed mi kuros Python, sur hello.py, kaj ĝi kuras.
>> Alia vojo ke mi povas uzi Python kiu Mi ne agos kun tiel en tiu diskuto,
estas kvazaŭ mi ĵus tajpas Python, ĝi drops min en medion kie
Mi povas nutri ĝin Python linion por linio.
Do jen, se mi tajpas en print spaco 'saluton, mondo'.
Tajpu eniri.
Ĝi kraĉis min ke apogi la rezultojn ke individua linio tuj.
>> Jen povas esti utila.
En tiu ĉi prelego mi faros aferojn sur diapozitivoj.
Kaj tiel vi povos sekvi kune aŭ tien, aŭ skribante
fakta dosieroj kaj tiam ekzekuti ilin.
>> Sed, revenanta al tiu kodo, alia aĵo
ke vi havu noticed-- bone, ekzistas
du aĵoj kiuj vi eble rimarkos pri tiuj blokoj.
La unua, prefere pli sekulara, estas ke la Python havas; fina punktokomo.
>> Punktokomojn estas laŭvolaj ĉie kaj sendanĝera ĉie.
Vi povas aldoni ilin.
Ĝi povus igi homojn kiuj skribas Python por vivteni snicker ĉe vi
malantaŭ via dorso, ĉar ili ne estas necesaj.
Ili estas ofte signo de estanta tenita super de C. La diseñadores de la lingvo
sentas ke ĝi estas pli klara cxi tiu vojo kaj ke ĝi ne estas necesa por deklari
ĉiufoje kiam vi finos la linion.
>> Alia stranga afero pri tiu n estas ne havi tipon alfiksis.
Unu el la magio pecoj de Python-- kaj mi tuj vokos ŝin magio,
sed estas tre teknikaj kialoj kial ĝi
works-- unu el la magio pecojn de Python
estas ke variabloj povas pligrandigi aŭ ŝrumpi enhavi ajn datumoj
tipoj vi dezirus ilin.
>> Do tiu estas 10.
Se poste malsupren mi asignita al tiu n 0,5, necesus ke 0.5.
Ne gravas ke temas pri int tie kaj flosi tie, ion kiu uzas ĉi n
havos, pli aŭ malpli, povos chug kune se ĝi alvenas iun el tiuj.
Krom se ekzistas tre reala tial ĝi ne povas uzi la datumojn
tajpu ke n aktuale havas, ĉe kiu punkto ĝi ricevos
wedged kaj ĵeti eraro, kaj tiuj specoj de aferoj.
>> Sed ĉi tie, Pitono ne vere gravas kio
ĝi estas ke mi tuj algluita en ĉi frazo, kiel, vi volas tion?
Tiu afero en tiu?
Jes, ĝi estas speco de afero.
Mi persistos en la fino.
Estos problemo poste, se iu kiu volas uzi tiucele
ne povas pritrakti ĝin.
Tiu estas unu el la gravaj diferencoj inter Python kaj C
ke faciligas skribi tre grandajn C programoj
kaj faciligante skribi tre malgrandaj Python programo.
>> La cxar sintakso estas ne tre malsama en kion ĝi faras.
Ĝi estas iomete malsama en kiel ĝi estas esprimita.
Do temas pri tre, kio konas Pythonic, maniero skribi ĝin.
por vico en gamo (n), tio estas la gamon de nombroj de 0 al n,
inkluziva sur la fundo kaj ekskluziva sur la supro.
Do estas de 0 ĝis n-1, kio estas ĝuste kion la C-kodo estas faranta,
se gxi estas multe pli facile rigardi eble.
>> La koncernajn bloko estas ne ekiris de streĉaj,
anstataŭe ĝi ekiris per ĉi deŝovon.
Do ĉiuj tiuj linioj estas kvar spacoj super al dekstre,
aŭ kiel pri elefanto larĝa.
Kaj tiuj estas tiuj, kiuj estas tuj estos ekzekutita en tiu por.
Se mi fuŝas la deŝovon sur ĉi kaj mi
puŝi ke presaĵo reen al la originalo deŝovon,
ke presaĵo lasos la por buklo.
En kontrasto al C, kie tie mi efektive bezonas movi ke fermitaj krampoj ĉirkaŭ.
>> Tio signifas ke vi ne ricevas eraroj ke salti tra vi ar vi
metis stegon en malĝusta loko.
Ĝi signifas ke vi ricevas eraroj ke salti tra vi ar vi
dentado linion erara.
Do ĝi faras muescas súper zorgema.
Espereble vi esti súper zorgema kun via deŝovon ĉiuokaze,
kaj tiel ĉi tio ne estas ke multe pli de ŝarĝo.
>> Sed baza regulo por Python, kaj ni havas paron de tiuj
ke ni iros tra tra la kurso de la diskuto,
estas provi natura sintakso antaŭ rigardante ion supren.
Do tiu sintakso, por tiun numeron en gamo,
estas tre distingaj en terminoj de stilo.
Multaj aferoj en Python ni vidos prenante tiu formo.
>> Kaj do se vi venis kun nova objekto, kiujn vi
pensi vi devus povi persisti super tiu, en tiu formato,
rezultas probable apogas tiun formaton.
Ni ne tuj iru super profunda en la teknikaj kialoj kial tio estas vera.
>> Sed ĝi estas utila intuicio havi kiam vi alproksimiĝas Python programoj,
ke tiu afero estas nur tuj labori.
Provu ĝin.
Praŝargi la komandlinio Interpretisto, vidi se ĝi funkcias,
pluiru kun aĵoj, antaŭ vi eĉ bezonas malfermi Google kaj diru,
kio estas la sintakson por tiu aparta afero?
Amasoj de Python vi povis malkovri nur provanta.
>> Tiu se estas eĉ pli simila al C tiam la fors estas.
Notu ke ekzistas neniu krampoj.
La krampoj estas, denove, sendanĝera sed nenecesa.
Tie estas dupunkto fine samkiel la por bukloj,
kaj denove, la relativa blokoj estas dentado anstataŭ ekiris per krampoj.
Tiu alia estas je la originala nivelo de deŝovon,
kaj lia rilata bloko dentado denove.
Tiuj laboro ĝuste kiel ili faras en C.
>> Tiu estas efektive tre multe la sama.
Denove, presi perdas unu karakteron for de printf Vi pasas iun kordoj.
Rezultas kordoj povas ĉu esti markita for
per sola citaĵoj aŭ duobla citaĵoj.
Ne estas diferenco, krom ke ene
de sola citaĵoj vi povas uzi citiloj kun forlasi,
prefere ol devi eskapi cxiujn.
Kaj ene de citiloj, vi povas uzi solan citaĵoj kun forlasos
sen devi eskapi ilin.
Se vi volas miksi ili, vi certe povas
rigardi supren rete kiel fari tion.
>> Vi rimarkos ke tien, Mi pasis en fino = tiu afero.
Tiu estas ekzemplo de laŭvola argumento, kiu estas unu el tiuj aferoj
ke Python subtenas ke lasas sufiĉe utila.
Do print reale havas multajn argumentoj, kiuj estas kutime
fiksita al la defaŭltaj valoro, sed tie mi havas
decidis nuligi la nomita fino.
La kialo ke mi devas nuligi ĝin kun malplena kordo
estas ke presaĵo en Python, de Defaŭlte, presas el nova linio
post la afero, kiun vi rakontis ĝin ankaŭ.
>> Do tiu krado estas efektive tuj elprinti hash en nova linio.
Kaj se mi ne volas hash elprinti nova linio post ĝi, tiam mi devas diri
Ne printi unu.
Sed, ankoraŭ tiel, la lasta afero ke tiu programo mankas ke oni estas
oni inkludas en la kolizias.
Presi estas bakita en Python do esence ke ekzistas neniu surskribo aŭ modulo
ke vi bezonas inkluzivi, kvankam se volis
inkluzivi aliajn aferojn en Python skripton,
Mi farus en tre simila format-- la vortoj estas nur iomete malsama.
>> Mi menciis ke ni ne bezonas ĉefaj tie,
ĉar la Python startas plenumiĝi ĉe la supro.
Se mi volis enpaki tiu en funkcio, mi
farus ĝin kiel this-- mi dirus def funkcio nomo,
argumentoj povus iri tien kaj ni vidu kelkajn el tiuj postaj, dupunkto,
kaj tiam denove, tiu tuta ekiris bloko
Estas kio estas la operacia bloki por tiu funkcio.
Do tiu estas la difino de la funkcio.
Kaj estas deklaro, poste malsupren tie, mi povas simple nomas la funkcio.
Kaj denove, la programo interpretisto, komencante ĉe la supro,
vidos ĉi estas la difino.
Ĝi ne agos ĉi ĝis ĝi alvenos, kaj tiam ĝi estas kiel, oh
nun vi jam alvokis ŝin, mi konjektas min devus ekzekuti ĝin.
>> A afero, ke estas tre komuna vidi en Python dosierojn,
speciale Python dosieroj estas liberigitaj al publiko
kaj evoluinta by-- kaj evoluinta kaj subtenis, estas io de tiu formo.
Tiu estas tiel ĉar basically-- Python, vi komenci ĉe la supro
kaj tiam vi ekzekuti malsupren al la fundo, Mi se mi nur havis Mario kriis tie,
tiam ajn mi inkludis tiun dosieron en alia dosiero, ĉar mi volis uzi
estas Mario funkcio, ke aliaj dosier volus ankaŭ havas tiun alvokon al Mario en ĝi.
Kaj kiam mi kuris ke dosiero, ĝi nomos Mario.
>> Do estas eble ke mi nur volas kuri ĉi se mi havas reale
ekzekutitaj tiu aparta dosiero.
Kaj tial mi povas enpaki ĉi en idiomo kiel tiu, kie mi diras,
se la nomo de tiu ekzekuto medio estas ĉefa,
tiam mi volas fari tion.
Alie iu alia povas use-- inkluzivi mian function--
mian dosieron kaj nur akiri aliro al tiuj funkcioj
sen devi kuri tion ke mi volas ekzekuti en tiu dosiero.
Jen, denove, nedeviga sed tre komunaj.
>> Tiuj aferoj estas entirely-- estas ĝuste la sama inter C kaj Python,
certe en 3.
Mi pensas en 2, la divido operatoro kelkfoje donas vin reen flosas kiam
vi operaciita ints, kaj aŭ vi deziris ke aŭ vi ne faris.
Sed plie, minuso, kaj tempoj labori ĝuste kiel vi atendus,
escepti super iomete pli tipoj.
Do vi povas multobligi flosoj ints, kaj tiuj specoj de aferoj.
>> aro funkcias ĝuste la sama.
Vi povas uzi du egalajn signojn.
inequals-- granda ol, malpli ol, tiajn things--
havas la signifojn kiuj vi konas ilin.
>> Kie C uzas tiujn operatoroj, Pitono uzas iomete pli Esperanta
legebla ones.
Do anstataŭ du, ampersands, vi laŭvorte tajpu la vorton "kaj", "aŭ,"
aŭ ne."
Kiel en via if-- en via kondiĉa deklaroj,
Ni vidis antaŭe ke tiu sintakso en C respondas al tiu sintakso en Python.
Kaj tie ne estas multe malsama tie, krom iomete
de interpunkcio flankojn.
Denove, kie C farus alie se, Python uzas elif,
sed tiuj plejmulte surfaca nivelo ŝanĝojn.
>> Ripeto kiel tiu estas ofte skribitajn en tiu idiomaĵo en Python.
Vi povas fabriki tian afero kun dum buklo sur la ekstera
se vi volas, sed vi certe ne devas.
Kaj denove, se vi volis la elprinti elementoj de tabelo en
vi plenumadu ĝin tiamaniere.
Unu el la amuzaj aferoj pri Pitono kvankam,
estas ke vi ne bezonas uzi tiun paradigmon,
kaj vi povas uzi iomete pli eleganta.
Vi diras por en ARY.
>> Do anstataŭ cxirkauxpelataj kaj alveturante la indicoj,
kaj tiam tirante eksteren individuaj elementoj,
vi diru la por reale nur alveturi la elementoj mem.
Kaj tiam kion ajn vi faras ene povas funkcii rekte
sur la elementoj, kiu estas sufiĉe amuza.
Kaj ni vidos Konsideru ni uzos ke idiomo multfoje
marŝante en kodo.
>> Jen, denove, ekzemplo de iu kiun Mi timige
voki Python magio, kvankam ekzistas tre teknikaj kialoj kial ĝi funkcias.
Kaj estas teknika proprajxon bezonas esti vera pri tabelo por
por ĉi labori malantaŭ la scenoj.
La afero estas ke la plimulto de tipoj kion vi atendus ĉi labori
havis tiun implementado por vi en la enkonstruita en lingvo.
>> Alia afero ke estus agrable se tiu laboris en ĉiu lingvo,
Sed estas iuj kialoj kial ĝi ne povas, presi ĉi ŝnuro fojojn tiun nombron.
Rezultas en Python, ĉi faras ĝuste kion vi ŝatus, kio estas nur amuza,
kaj signifas, ke ni povas reale redukti tiun programon, denove mario.c.
Prefere ol ripetanta multajn, ni povas nur diru, mi volas iun numeron de spacoj,
Mi volas la nombro de hashes, kaj iuj hashes fine.
Kaj denove, ni uzas ĉi tiun formaton.
>> Tie, ni pasante en ŝanĝiĝema tiamaniere.
Denove, ni ne bezonas diri kio tipo de variablo estas:
Kaj la nura tempo ni akiri eraroj estas en tempo de ekzekuto.
Kiam iu provas pasi ion,
ĝi venos en la funkcio nur fajna.
Se ni wedge tie ĉar tio ne estas la afero ke vi povas krei rangoj super,
Mi ricevos runtime eraro tie, kaj mi devos elpurigi tiel.
Sed dume mi ne havas esti tre zorgema pri kio
gets pasis en, tiel longe kiel en la reala ekzekuto ĉion funkcias tre pure.
>> Mi povus eĉ fari tiun iom purigisto
uzante apartan prafunkcio sur kordoj, kiu estas Dekstra Justify.
Tiu estas nur utila funkcio kuŝanta ĉirkaŭ la biblioteko.
Ĝi estas en la dokumentado se vi iros serĉi ĝin.
Kaj mi diras, bone mi tuj havi tiu ŝnuro, kelkaj nombro de hashes,
kaj mi ŝatus dekstra pravigi it-- kuseneto aferon per spacoj esti ĉi longo.
>> Denove, tio estas en la dokumentaro, kiu alportas us--
Mi vere klaku tra these-- Kiu alportas nin al nia dua regulo
por Python-- norma biblioteko funkcio metodoj estas viaj amikoj.
Kaj ĝi estas ofte valoras via tempo iri serĉanta Mi scivolas
se estas io ke simple faras tion.
Tie probable estas.
Se vi ŝatus kuseneto el ĉeno, se vi estus
ŝatas preni la dorson duono de kordo, se oni kredus
deziras traserĉi kordo, se Vi ŝatus rompi kelkajn aferojn
kune kun kordo kun komoj inter ili,
ekzistas norma biblioteko funkcioj por fari tion.
>> Kaj ĝi faras vian vivon pli facile se vi uzas ilin
anstataŭ elrulanta ĉion sur via propra
en kvin linioj de kodo tie, kvin linioj de kodo tie.
Tio vere komenciĝas je sumigi al reala tempo.
>> Unu el la interesaj aferoj pri kiel ĉi gets vokis.
Vi rimarkos ke estas punkto ion.
Mi havas kelkajn objekto maldekstre kaj tiam mi vokis skalara funkcio.
Tiu estas unu el la paradigmas ke Pitono uzas por kupli metodoj por objektoj.
Ni parolos pri kion tiu estas tre brevemente fine,
sed scias ke ni povas ambaŭ operacii sur aferoj prenante tion dirante skalara
ajn, aŭ nomante funkcio kiu prenas
ke objekto kaj iuj aliaj argumentoj.
>> Tiuj estas ambaŭ manieroj aĵoj get farita en Python.
Kaj ĉu apartan funcionalidad implementada
en ĉi tiu stilo aŭ tiun stilo estas iu kiu vi
devus serĉi ĝis vi ricevas hang por kiu ĝi estas probable fali en.
Ekzistas pli aŭ malpli kohera filozofio malantaŭ Pitono
ke vi sorbas plejparte skribante multon en ĝi.
En iu punkto, kiun el cxi tiuj io estos implementado kiel
iĝas natura.
Por nun, estas nur io vi lernos kiel vi povas diveni,
ĉiu individua afero.
>> Do norma biblioteko funkcioj estas viaj amikoj,
kaj ili lasos vin skribi aferojn cxi tiun multan spacon vere malmulta,
vere elegante.
Kaj jen estas vere probable pli legebla, mi dirus, ke la C programon
tie.
Ne mencii la fakton kiu estas tiel mallonga povos persvadi tutaĵo elefanto
en la spaco kiu ni ŝparis.
>> Alia afero, tiu estas implementación de mario jen punkto C, kiu miaopinie
Estas la plej mallonga vi povas akiri ĝin.
Ĝi ne havas la get int, sed malfacile kodojn la valoro de 10
la sama maniero kiun ĉi tiu faras.
Rezultas ke ĉi tiu horloĝoj en ĉe 84 karakteroj, dum Python estas 64.
Kaj estas senfine pli legebla ol tiu rubo tie.
Do Python estas pli efika en spaco.
Ĝi estas iomete malpli efika en tempo, sed ne por tre.
>> Listoj estas grava afero en Python.
Ni ne vidis ilin, sed ili funkcii multe kiel arrays faros en C.
Do jen, vi povas deklari ilin, vi povas pasi ilin en ion.
Nun kvadratoj tenas tabelo de tiuj aferoj.
Denove, ni ne deklaris kiel tipo, sed se ni iam provas uzi ĝin,
io ke vi atendus por labori sur tabelo de entjeroj
tuj labori sur tabelo de entjeroj.
>> Jen kion vi absolute ne povas
fari en C, ĉar la memoro estas do manojn sur,
sed estas tre facile fari en Python.
Se mi volas mian tabelo esti pli granda, mi povas append elementon al ĝi kaj ĝi estas bone.
>> Kio okazas malantaŭ la scenoj?
La interpretisto iros eksteren kaj ricevi iun memoron,
kaj eble ricevos iomete de kroma memoro,
do mi ne tiel mi ne havas al realloc ĉiufoje.
Sed des pli memoro faras ĝi bezonas?
Tiu ne estas decidoj ke vi devas fari,
tiuj estas decidoj kiuj la interpretisto tuj faros.
>> Tie ni vidas gamo povas preni du argumentojn,
sed ĝi estas ankoraŭ iranta esti inkluziva de la supro do ni aldonas 1 tie.
Tio estas idiomaĵo, kiu estas eĉ pli ruza maniero skribi aĵojn kiel tiu.
Ĝi nomiĝas listo kompreno, kaj tie kion ni dirante
estas mi ŝatus meti en i kvadrato por ĉiu valoro de i en tiu gamo.
Tion en la dekstra povus esti alia tabelo, kaj tion en la maldekstra
esti ajna aparta funkcio kiu portus en i kiel ŝanĝiĝema
kaj donu al mi iun rezulton.
>> Kion mi tuj faros estas, Mi tuj konstrui
tabelo jen ĉio de tion por ĉiu valoro en tiu gamo.
Kaj tiu estas súper eleganta, super mallonga, kaj ĝi estas tre klara kion ĝi signifas.
Jen unu el la things-- ĉi estas pli,
unu of-- tre emblemático de la kialoj ke homoj kiel Python.
Se vi ŝatas programado tiel, tiam Pitono
estas lingvo vi eble ŝatas lerni.
>> Kaj cetere, jen estas teknika kialoj por tio funkcias.
Sed koncerne ni koncernis, Ni pli aŭ malpli ne zorgas.
>> Do se vi volas presi lertaj, iuj de la samaj idiomoj estas utilaj.
Por i en tiu gamo, ni povis indekso tra ĉiuj aferoj
kaj tiam presi ilin ĉiuj ekstere.
Kaj vi vidos len tie.
Se vi iam volis la longo de la tabelo, kiu estas
tre facila en Python, ĝi estas tre malfacila en C.
Tiu estus presi precize kion vi atendus ĝin.
Ni povis ankaŭ, kiel ni vidis antaŭe, persisti super la elementoj en tabelo
rekte, kaj tiam nur paroli pri ilin, anstataŭ havi la indekso
reen en la tabelo ĉiufoje.
>> Kaj tio estas io kion vi povas fari.
Do en C, se vi petos ion kiel tiu, presi dirus,
ke estas tabelo de entjeroj.
Tio sendube ne kordo, mi ne povas presi ĝin.
Python pli aŭ malpli ne zorgas.
Estas kiel, estas tie ke mi povis turni ĉi en al ĉeno?
Jes, mi faros tion.
Kaj tiel mi nur presi ke eksteren.
Tiu signifas ke vi povas fari aferojn like-- tiuj
estas la plejmulto de la malmolaj partoj de ludo dekkvinjara skribita
tre brevemente en Python.
>> Vi vidos ke estas iomete of-- tie
Mi jxetis entjero al ŝnuro, kaj mi devas fari tion permane.
Kaj mi tuj aldonu al alia ŝnuro,
aŭ alie Python gets konfuzita.
Sed ĉu kiam vi estas aldonante ŝnuro al entjero,
mi supozas akiri entjera dorso aŭ kordo reen?
Sed denove, se vi nur voki str sur aĵo,
kaj ĝi povis en ajna ebla mondo estos igita ŝnuro,
vi, eble igita ŝnuro.
>> Ĉi tie, oni vidas uzon de nestitaj listo kompreno
maldekstre, iuj indeksado, kiu Estas precize kiel vi estus kutimiĝis,
kaj iuj presi el aferojn.
Denove, ni difinis iuj funkcioj kaj ni vokos ilin malsupren
en ĉefaj kiam ni reale preni la dosieron.
reveno laboras ĝuste kiel oni kredus atendi de laboranta kun C. Trovu,
ni povas starigi aĵojn kiel this-- jen lerta kompreno
Tie estas asigno al variablo, kaj ni povas reale fari ĝin eĉ pli facila.
Ni ne bezonas skribi serĉo, ĉar enkonstruita Lingvoprezento
estas se tiu afero estas en ĉi tabelo.
Reiri vera, alie reveno falsa.
Do jen la tuto de trovaĵo.
>> La tuteco de la varo engaĝas nomante varon,
kiu is-- ekzistas implementaciones de tiu konstruita en certa C bibliotekoj.
Se vi ŝatus tiun ia dorsdirekte vi
povas nuligi ĉi nedeviga argumento en reverso kun sincera.
Kaj se vi ŝatus ordigi super kordoj, kiuj estas konstruita-je ankaŭ.
>> Do tiu estas ne diri tiuj estas aferoj, kiujn vi devas fari ĉiun tagon,
sed la ideo estas ke ĉi estas la filozofio de Python,
ke cxio tio, kio vi estus ia volas fari estas enkonstruita.
Kaj plej normaj funkcioj, tiel varon, longo, kio ajn,
apogi plej logike saĝa enigo.
Vi nomas len sur tabelo la sama vojo vi nomas len sur ŝnuro.
Vi multiply-- vi ordigi kordoj la sama maniero vi ordigi tabeloj.
>> Plej normaj funkcioj ke homoj konstruu,
kaj plej triaj bibliotekoj kiuj personoj
konstrui, ĉar ili estas emulando la dezajno de la norma biblioteko,
povas tuŝi ĉiun ke vi estas kiel, kial ne ĉi nur labori,
en C. Pli aŭ malpli, ĝi funkcios en Python
ĉar homoj labori malantaŭ figuro el kio io estas kaj tiam funkcii
taŭge sur ĝi.
Do denove, teknikan fonon, sed faras nian vivon pli facila kiel programistoj.
>> Do jen dosiero / S. file / S havas multajn etulojn kiuj faras ĝin komplika,
kaj do ekzistas rimedoj rete, sed en malmultaj vortoj,
vi nomas malfermitaj sur dosiero enoficigas kun aparta tipo.
Do tio estas legi, legi kaj skribi, skribi aŭ append.
Vi legis certan nombron de karakteroj ekstere kaj vi presi tiuj,
vi ricevos Saluton!
Mi volas diri, kiel la dosiero havis Saluton!
En ĝi, voki legi, kaj kion vi reiros
estas ĉeno kiu havas ĉiuj de la resto de la tabelo,
aŭ ĉiuj de la resto de la dosiero.
Se vi nomas relegi, vi estas ĉe la fino de la dosiero,
kaj tiel vi ne ricevas ion kaj tiel vi fermi.
Denove, tio estas .close anstataŭ fermi dosieron, kiel estus en C.
Ĉi tio estas pli aŭ malpli ĉar f estas afero, kaj vi ŝatus pro f fermi.
Sed baza dosiero mi / O estas ne aparte komplika.
Denove, se vi volas malfermi dosieron, se Vi ŝatus legi apartan linion,
vi povas akiri el aparta line-- ekzistas enkonstruita ins por tio.
Se vi ŝatus skribi aferon, vi povas skribi tion.
Se vi ŝatus skribi individuajn pikoj, vi povas skribi tiujn.
Kaj se vi ŝatus persisti super la linioj de dosiero
individue, kiel ni faris en peco de kelkaj semajnoj, vi povas fari tion por.
Denove, plej celoj kiuj oni kredus ŝati povi persisti super
subteno ripetanta super ili.
En Pythons, dosiero estas eble io kion Mi ŝatus iteracii linion por linio.
Se estis vortaron de vortoj kaj mi
provante atingi tiujn individuajn vortoj eksteren, tiam, ene de ĉi maŝo,
linio ĝi tuj estu ĉiu vorto laŭvice kaj ĉi
tuj estos ekzekutita por ĉiu linio en la dosieron ĝis la fino de la dosiero.
Kaj denove, se mi presas el ĉiu linio, la linioj venas kun novaj linioj,
do mi opcio la fino malantaŭo al io tia.
Tiam mi akirus la enhavon de mia dosiero.
>> La dua afero kiu operacias en kelkmaniere kiel lertaj, kaj kelkmaniere
kiel ion substance pli potenca,
estas vortaroj, kiuj estas vere malvarmeta uzi sed estas esence hash
tabloj maskita.
Vi kreas unu uzante precize du gravuloj, kiu estas timinda
se vi klopodis realigi la hash tablo por via problemo aro,
vi scias multe doloro kiu povas esti.
Sed homoj faris ĝin, kaj faris tiel bone,
ke vi ne devas maltrankviliĝu pri tio plu.
>> Tiam vi povas enmeti individuaj aferoj.
Hash tables-- aŭ vortaroj ne aparte
zorgi kion vi stokante en ili.
Do se iuj elementoj estas nombroj, kaj iuj elementoj estas lertaj,
se iuj elementoj estas aliaj vortaroj, kaj kelkaj enskriboj estas ŝnuroj,
Pitono ne multe zorgo.
>> Denove, se vi eniros en gxin atendante kordo kaj kion vi ricevas reen
estas tabelo, kiu estas via problemo.
Kaj eble estas kulpo de kiu ajn pensis ke estis metanta aferojn
en la vortaro, eble tio estis vi.
Se kiu estis iu alie, espereble ili
bonkonduta pri kio tuj en la vortaro
kaj ne lasi neniun enfaliloj cxar vi povus fali.
>> Sed la normo funkcioj donu vin bonkonduta aferojn.
Do ili diras ĉi revenoj malantaŭeniri vortaro de kordoj,
tiam ĉio vi tuj eliri estas ĉeno.
Se vi faras iujn de ĉi kaj vojaĝoj vin, nu, tio eble estos sur vi.
Python certe donas sufiĉan ŝnuro pendi mem, se vi ŝatus.
Nun ni povas presi individuajn elementoj de ĉi tiu kaj revenoj
precize kion vi atendus.
Precize kion vi atendus, mi supozas, Estas frazo kiu mi uzas multe,
sed tio estas pli aŭ malpli kiom Pitono funkcias.
Se vi petos ion kio ne ĝi, Python faros elĵetas eraro
kaj gxi forlasis vin el ajn programo vi estis en.
Ĝi malebligos reale presi pli da informoj ol tio,
gxi devos atentigi you-- ĝi malebligos aldonu linion, kaj do.
>> Kaj, denove, eble ni volas persisti super vortaroj
kaj trovi ĉion en ĝi.
Jen ni estas ripetanta super du aferojn samtempe.
Kaj tiel ni faros ĝin per ŝlosilo, valoro, sed poste presi ĉiuj el tiuj.
>> Kaj se ni volis cast-- se ni efektive kuris ĉi,
ni havus iun problemon ĉar on-- kiam ni eniris kun David,
ĝi povis add-- se ni ne jxetu gxin al ĉeno unua,
ni ne povis aldoni ke tabelo de kordoj sur ŝnuro.
Sed se ni jxetis gxin al kordo, ni akiras ion
kiel tiu, kiu estas eble kion ni ŝatus legi.
>> Kaj tiu estas literumanto.
Ni ĵus legis en aferoj.
Do ni povas legi en individuajn vortojn kiel linioj.
Ni detranĉus la lasta afero, tiel dupunkto minus 1
chomps for la lasta afero ke we-- la lasta karaktero de kordo.
Ni diros.
OK, ĉiu de tiuj ricevas enmetita en tiun vortaro,
mapado al valoro de 1.
Ni ne aparte zorgas pri tio,
sed ĝi estas nur tie por diri, ho bone, tion mi metos en la vortaro.
Ĉar poste, kion ni estas tuj faros estas ni
intencas diri, nu, se ĝi estas en la vortaro ajn.
>> Denove, tiu ĉeko por membreco estas supren mastruma
uzante tute malsaman algoritmo ol ĝi volo en lerta,
sed ni nomas ĝin la sama vojo, kiun Estas iom de tiu Python sukero tavoleto
aferojn tiel ke ili estas pli facile uzi.
Kaj denove, ni vidis aferojn tiel antaŭe.
Tiu estas esence trovi, aŭ ĝi estas precize la sama sintakso
kiel trovi, sed estas funkcianta super tute malsama strukturo.
Kaj ni ne aparte gravas.
Do tiuj estas la aferoj kiujn vi estis demanditaj implementar por literumanto.
Ĉe tiu rapideco, ni tuj ricevas pli aŭ malpli ĉiujn psets farita.
>> Publiko: Por ke resume nur venas reen
kiel malĝuste literumita se ne kongrui io en la vortaro?
ROSS RHEINGANS-Yoo: Jes, jes.
Kaj do, tio estas adapto de problemo aro
kiu petas vin fari ĝuste tion.
>> Publiko: Kial la linio minus 1 tie?
ROSS RHEINGANS-Yoo: Do kiam vi ripetanta
super dosiero petante por linioj, la linioj
veni kun nova linio karaktero fine de it-- la minus 1
Estas ĝuste al butiko tiuj for.
Kaj tio estas precipe flekseblaj maniero de indeksante en aferoj.
Do se vi havas ĉenon, kaj vi ŝatus, bone mi estas
tuj starti je karaktero tri kaj mi tuj iros al la fino.
3 dupunkto faros tion por vi.
Se vi estas kiel mi volas komenci je la komencante kaj iri al la fina minuso 1
karaktero, dupunkto minus 1.
Kaj se vi volas iri el la tria por la minus unua,
tiam vi dirus 3 minus 1.
>> Aldone, se vi volas indekso en aferoj rakontante de la dorso,
vi nur indekso kun minus nombroj.
Kaj ĉar, kie C eksplodus aŭ eble
pasxtos aliaj memoro vi ne havis aliro al, aŭdi vi povas diri minus 1
signifas la lasta sed 1 karaktero en ĉeno.
>> Moduloj estas version-- estas analogaj al bibliotekoj en C
kaj estas utila por multaj aferoj.
Multon oni kredus ŝatas fari en Python,
krom simplaj manipulado de variabloj,
vi volas enganchar en la grandaj bibliotekoj kun pli granda
interfacoj kaj pli kapabloj por interagi
kun aliaj partoj de la mondo.
sys estas unu el tiuj kun aro da iloj
kiuj estas utilaj por interagi kun la sistemo mem
kaj importi ĝin kiel importado sys.
>> Ekzistas pli dokumentado de ke, kion vi povus iri tien,
aŭ vi povus trovi en Google per googling Python sys.
Vi tajpas eniri.
La unua ligo estas iranta esti la dokumentado en Python 2,
la dua ligilo tuj esti la dokumentado Python 3.
>> Kaj se ni skribis el dosieron kiu rigardis kiel this-- Se en aparta, ni estas
rigardante funkcianta sur komandlinio argumentoj,
kiel ni lernis fari tre frue en tiu klaso.
Tio ne malfacila. Vi povas eliri argv,
kiu estas unu el tiuj aferoj kiuj estas implementado por sys.
Ĝi ne estas korpigita al la bazo pako, sed denove, vi
povas plilongigi ĝin per importanta ke funcionalidad de sys.
Vi nomas ĝin sys.
ajn.
Tie ekzistas argv.
Ekzistas fakte neniu argc en sys, ĉar vi
povas akiri ĝin tiel facile nomante len.
Ni tiam presita ke ekstere, tiam ni kuris sur nia fina stacio echo-args.py.
Ni reiros tabelo, kiu Estas ĉi tiu unua argumento.
Denove, tio estas argv 0, kio estas la nomo de la afero kiu got nomis.
Se ni nomas ĝin kun aldona argumentoj, ni akirus tiujn reen.
Tio estas unu maniero akiri komandliniajn argumentojn.
Se vi volas flagoj kie vi turnas aparta aferojn sur aŭ override
aparta defaŭlta, argparse estas via amiko.
Kaj cetere vi trovas ke enreta ĉe python argparse ĉe Google.
>> Estas paro de utileco moduloj ke vi trovas vin uzanta
kaj denove, se vi elspezas ajnan tempon de tiu lingvo importanta jsons
por legi en kaj el JSON dosieroj, ne ke komplikaj.
Vi malfermu dosieron, nomita json.load en tiu dosiero kaj vi revenas aferon.
Kio estas tiu aĵo?
Ĝi estas JSON objekto.
Kie tiu JSON havas tabelo, la Python havas arrays.
Kie tiu JSON havas asociaj tabeloj, Python
vortaroj, kordoj, kaj nombroj, kaj tiel plu.
Vi volas renversi ke ekstere, vi malfermi novan dosieron, vi nomas Escorial,
kaj ŝarĝoj kaj forĵetas al eniros kaj eliros el kordoj.
>> Simile, piklaĵo gets vokis en esence la sama interfaco.
Ĝi estas iomete pli utila se vi dumpingo Python objektoj.
Do se vi iam volis savi version de la aktuala stato
de variablo por estonteco kuri vian programon,
pekli estas Python biblioteko por fari tion.
>> Se vi havas ia ajn variablo kiu povas esti skribita ekster
en kiel vortoj kaj karakteroj kaj bitokoj kiel tiu vortaro,
ni povis noti, ni skribu ilin kiel
kiel JSON objekto, kiu estis laŭvorte tiujn karakterojn.
Kaj tiam estus tre facila por homa malfermi ĝin up-- malfermiĝi
kaj legis ĝin.
Se ni ne aparte zorgi pri homoj legas ĝin,
ni povis paki eĉ pli kompetente en formoj kiuj povus poste esti malpakis
aŭ kiu povus poste esti ŝveligitaj.
Kaj ĉi savas 80% de la spaco kiu via objektoj povus
preni se vi skribis ilin longhand.
>> Vi nomas piklaĵo tre multe la sama bare Escorial, ŝarĝo,
kaj tiam vi ricevos vian aferojn reen.
Do se vi skribas tre mallonga Python programoj kiuj
volas savi stato, kaj tiam legi ilin reen poste, aferoj tiel
estas viaj amikoj.
Ke vi povis tre facile forĵeti ilin kiel JSON.
Plej Python objektoj povas renversi la JSON
se estas neniu espero, ke strukture ili povus esti prezentita tiel.
>> Tiuj estas nur la pinto de la glacimonto sur moduloj, kiuj estas utilaj.
Do sys, os, multiprocesamiento, estas ia baza workhorses por aĵoj
ni devas interagi kun la dosiersistemon os.,
kiel os.isfile, os.isdirectory, os.makefile, tiuj estas viaj amikoj.
Se vi volas interagi kun aparta dosiertipo,
JSON, piklaĵo, CSV.
Se vi volas interagi kun ttt paĝoj, la urllib por interesigi http
paĝoj. bs4-- BeautifulSoup-- Estas mirinda parser por html.
Vi kuri ĝin sur html kaj vi ricevas tiun nestitaj tabelo objekto nun,
kiun vi povas kruci super Lookin, kun kiel nur serĉanta
se, estas, en, kiu estas mirinda.
>> Ekzistas aro da pakaĵojn por running--
por fari aparte mathy aferojn.
Do se vi volas multipliki, inversigi, transformas matricoj,
numpy estas uzita de personoj ĉiuj trans la mondo pro tio.
scipy estas eĉ pli utilaj iloj en tiu direkto.
sklearn-- maŝino lernado, natura lingvo prilaborado,
súper utilaj aĵoj, ricevas implementado en Python tutan tempon.
>> Kaj denove, prenas iomete plu al write-- bedaŭras,
prenas iomete pli longe kuri, sed la kialo ke reala inĝenieroj emas
uzo Python estas ĉar vi tendencas esti blokita sur vin skribi la kodon, prefere
ol via komputilo kuri la kodon.
Do se vi iras por skribi programo, kiun multaj aliaj personoj
tuj uzos eterne, kiel Linukso, vi
povus skribi ĝin en C. Se vi estus tuj skribos kalkulado motoron,
vi povus skribi en Python se vi bezonas ŝanĝi ĝin ĉiu paro monatoj.
Iuj homoj devus skribi ĝin en C ĉar ili estas tiel.
>> Do ni vidis importado sys kiel maniero de prenanta aferojn
akiri modulon en via programo.
Vi povas ankaŭ importi ĝin alnomo, se vi ŝatus.
Denove multiprocesamiento estas doloro tajpi ĉiun fojon, tiel importi kiel mp
kaj tiam anytime vi uzi gxin en la programon,
vi diros mp.process, aŭ kio havas vin.
Se vi ŝatus importado nur ununura afero,
tiel urllib havas ion nomita peto, do vi povas simple importi ke.
Poste, vi ne alpreĝi ĝin urllib.request, sed nur kiel peto
per sin.
>> Kaj vi povas importi ĉiun de modulo se vi ŝatus.
Tiu estas foje ne bona idea-- Tio kutime ne estas bona ideo, fakte.
Ĉar vi very-- ĉar se io en tiu modulo havas nomon ke vi
volis uzi aliloke en via programo, vi ne povas.
>> Kaj ne estas ĉiam evidenta ke tio estas la kazo.
Por certigi ke kion vi faris estis sekura,
vi devas malfermi la modulo kaj vidi ĉiujn
de la nomoj kiuj finas en there-- ĉiujn la funkcioj,
ĉiuj variabloj kiuj vivas en tiu modulo,
ĉar vi estas alportanta ĉiujn ilin en via loka nomspaco.
>> Do homoj faras tion.
Ĝi estas ĝenerale rekomendita ke vi ne faru tion.
Sed homoj faras ĉi ĉiuj la tempo ĉar ili estas
maldiligenta kaj ne volas tajpi el mp.
io, iam.
>> Ĉiuj ĉi diskuto pri moduloj elirigu min ĉirkaŭe al mallonga diskuto
sur kiom vi desegni programojn en Python.
La unua paŝo estas kontroli ĉu ajnulo jam faris la aferon,
aŭ faris 90% de la afero.
Ŝancoj estas ili probable havas, kaj vi iru akiri sian aferon kaj kuri tion.
Aŭ skribi wrapper ĉirkaŭ ĝi adapti ĝin al via celo.
Ĝi estas nur post tio havas maltrafis ke vi estus tiam
iru kaj write-- komenci pensanta pri kiamaniere vi metus ĉi aferon kune.
Ekzistas multaj aĵoj tie, kaj tio estas
unu el la plej utilaj aferojn pri Python.
Kiel la lingvo estas eleganta, la lingvo
estas facile uzi, sed ankaŭ ĉar estas tiel eleganta kaj facile uzeblan,
personoj estis uzante gxin kiel longa tempo kaj ekzistas multe da taskoj
tie ke vi povas jungi por via propra uzo.
>> Do lasta regulo de Python estas, iu intertempe jam probable verkita
modulon por tio, iu alia havas jam
verŝajne skribita biblioteko por tio.
Antaŭ vi provu fari ion, rigardi ĉu ĝi estas realigita.
Ĝi ne estas tiel malfacila.
Ĉiuj de la moduloj kiuj mi arangxis antaŭe, kun eble unu escepto,
venas pre-instalita en ĉiu norma Python instalado.
Kaj tial kun alvoko al importi ajn, vi
havas ĉiuj de tiu funcionalidad ĉemane.
>> Komencante por envolver supren ĉi diskuto, ekzistas malmultaj aferoj
ke mi lasis kiel nigraj skatoloj kaj ia glosada super,
kaj estas kelkaj blankaj kuŝas ke mi havas sciigis ke pro honesteco,
Mi timige almenaŭ punkto je tie, eĉ se mi ne
iri súper profunde en ĉiuj el ili kaj ilia teknika klarigoj.
>> Multa la aferoj ke mi nomas magio
kion aliaj homoj vokus objektema programado.
Do estas multaj things-- tiel variabloj estas tre ofte ne
simpla bajtoj sidis, memoro, sed estas tre komplika
objektoj kiuj havas internajn stato pri funkcioj kaj terenoj
de kaŝitaj variabloj, Multa kaŝita funcionalidad, kiu
Lasas vin turni ilin en kordoj, kiu permesas persisti super ili.
Kaj se vi writing-- kaj la kialo ke ili
havas ĉiujn ĉi riĉaj funcionalidad Estas ĉar la people--
la arkitektoj de la language-- irinta
per kaj por ĉiu normo objekto, metas en la funkciaro
diri jen kiel tio estas kiamaniere tiu tuj funkcii
se iu volas persisti super ĝi.
>> Do ĉio ke iu povus eble volas persisti super,
estas logiko skribita en permane sur kiel vi estas
supozis persisti super tiu objekto.
Ĉio ke vi povus eble volas forĵetitaj en ŝnuro havas logikon skribita.
Jen la funkcio kiun vi nomas se vi volas renversi ĉi ekstere al ĉeno.
Jen kial vi ne povas voki len sur aĵoj, tiu
Tial vi povas peti en, tiu estas kial vi povas nomi, se en ĉio sur
ke vi dezirus, ĉar tiuj ĉiuj estas portantinoj kun ili,
la teknikan scii-kiel fari tion.
>> Tiu estas iu kiu mi estas súper ne tuj eniros en.
Sed por io en listo estas subtile malsama C stilo por bukloj,
kaj vi povas legi ĉion pri tiu sur la interreto, se vi estas interesata.
Estas malluma flanko al ĉiuj de tiu, kiun mi menciis,
do ekzistas du aferojn.
La unua estas ke tiu objektema programado aldonas multan superkape
al hazarda aferojn, do vi finas uzante multe pli memoro;
Vi fini uzante malgrandan pli tempo ol vi farus alie.
La alia lando sed la pli insida malluma flanko al tiu
estas, se aferoj nur agi kiel vi volas ilin
sen vi devi pensi súper malfacile pri ĉu tio devus esti int
aŭ ĉu devus esti kaleŝego, ĝi eblus ke tien
vi produkti int sed tien vi pensi sed ili devos always-- bedaŭras,
ĝi povus esti ke tie vi produkti kaleŝego,
sed kiam vi atingos la dua parto de via programo, vi pensas,
Oh bone, sed ili devos ĉiam pasas min int.
Kaj se ili ne, ĝi estas ebla ke vi wedged ie,
se vi provas uzi tiun indeksi en tabelo, aŭ kio havas vin.
>> Do unu el la reala utilajn aferojn pri C estas
ĝi igas vin pensi vere forte antaux vi fari any--
antaŭ vi alportos ajna variablo en ekziston, kiel kion
Estas la tipo de tiu variablo.
Kaj ĝi tuj havis ke tipo de ĉiuj tempoj.
>> Tio estas ne vera Python, kaj fakte, vi
can-- se vi estas nur ia preterirantan orelon,
kaj vi fari iujn decidojn unu vojo en unu loko,
kaj iuj decidoj unu vojo en la alia loko
sen meti sufiĉan materialon malantaŭ la scenoj en la alia loko
kapti aferojn taŭge, vi povas akiri kelkaj tre strangaj eraroj.
Kaj la programo povas Lasi ruliĝi por tre longa tempo, ĉar ĝi estas
faranta multan laboron diri, bone tiu afero povus funkcii tiel,
do mi tuj kuri tiel.
>> Kaj fakte, la fakto kiu pelas plusendu tra multaj malgrandaj eraroj
signifas ke, ofte, kiam Eraro estas fakte malbona
kaj vi vere volas ripari ŝin, finu mejloj away-- la programo
finas haltante mejlojn for de kiam vi havis vian eraron.
Kaj tiel unu afero ke ni ŝatus programojn por fari, sometimes-- unu afero
ke ni ŝatus programoj fari kiam ni elpurigi
estas malsukcesos laŭte kaj malsukcesi tre rapide kiam iu eliras malbone.
>> Python estas tre malbona en tiu.
Python estas tre bona en ne malsukcesanta kaj ruliĝante antaŭen
tra neatenditaj aferoj.
Do tiu estas utila ĉar kiam vi skribas malgrandajn programojn.
Kiam vi ricevas komplika cimoj ĝi kelkfoje
prenas longan tempon por inciteti ilin.
>> Do ekzistas malhela flanko al ĉiuj de tio, kiel ĝi ĝuste funkcias.
Ĝi nur funkcias kiel vi atendus ke ĝi.
Krom ke kiam lin faras ne, vi finas supren en tute malsama loko
kaj provi elkompreni kie ĝi estis ke vi iris malbone.
>> Garbage kolekto is-- tiel unu afero, ke vi rimarkos
estas ke neniu el tiuj aferoj kiu Mi enportis en existence--
tiuj aroj, tiuj vortaroj, tiuj objektoj, tiuj files-- neniam akiri liberiĝita.
Ekzistis neniu alvoko al libera en ajna de tiu diskuto.
Kaj kio estis sur la C-flanko, ĉar ni neniam alvenis en tion.
>> Sed en Python-flanko, estas ne libera.
Aĵoj akiri aŭtomate liberigita kiam Pitono
pensas vi ne rigardante ilin.
Ĝi estas vere bona ne liberigante proprajxon vi eble ankoraŭ eble estos rigardante,
sed tio signifas, ke se vi estus tuj rezervu tiu granda afero,
kaj vi estas kiel, oh Mi faris kun gxi nun,
ĝi estas malfacila diri Pitono ke vi faris kun gxi nun.
>> Vi povas iam metita tiu variablo estos neniu,
kaj tiam esperas ke fine la rubo kolektilo
venas tra kaj purigas gxin.
Sed denove, vi ne havi kontrolon super tiu.
Kaj unu el la kialoj ke homoj uzas C por vere okupas kritika aferojn,
Estas ĉi kapablo vere scias kiam memoro estas asignita
kaj kiam ĝi estos liberigita, kaj havas multajn kontrolo super dirante:
Mi uzas ne pli memoro ol mi bezonas.
Kiu estas io kiu Pitono ne ke granda en.
Spektantaro: Ĉu mi vi demandon?
Kion vi volis diri per malsukcesos laŭte?
>> ROSS RHEINGANS-Yoo: Do ​​se io tuj erara
kaj vi estas en elpuriganta mode, vi farus tre ofte
volas vian programon rakonti kie precize ĝi okazis,
kaj ne nur silente ĉesi kuri.
Sed oni kredus reale ĝi presi el ĉiaj informoj pri
kiel, tie estis tiu.
Tiu afero okazis Se vi videbligi a wen-- se vi uzas TTT server--
>> Spektantaro: [inaudible]
>> ROSS RHEINGANS-Yoo: Yeah, se vi uzas retservilo,
ĝi estas kelkfoje malbone se vi estas ĉiam forĵetante eraroj,
kaj vi diras, bone ke ne funkciis.
Mi tuj halti.
Mi simple tuj ignori kaj gardi okazas.
Ĉar tiam vi povas akiri en centojn de tiuj eraroj kaj ne vidi ilin.
>> Ĝi certe estus utila por elpuriganta celoj
se ĉiu tempo via retservilo faris eraro, vi havis durable notoj pri tio.
Eble vi eĉ deziras la programo halti, tiel ke tiuj rekordoj
Ne akiras entombigita sub aferojn.
Sed denove, tio estas en elpuriganta manieron.
>> Ofte en produktado maniero, La mondo estas iom malsama.
Kaj en etaj skriptoj kiuj Mi kuras, kie la afero, kiun mi diris al fari
povus esti nur iomete for el kio mi ŝatus ĝin fari,
tiam ia puŝanta tra eraroj estas io vi eble volas.
Kaj en tiuj kazoj, certe Python vere perlaboras liaj komencoj.
>> La lasta afero kiun mi ne parolas en this-- ke mi ne paroli pri
sed povas esti vere exasperante la unua tempo vi havas unu el ĉi tiuj eraroj,
kaj la dua kaj tria kaj kvara tempo vi havas unu tiuj eraroj.
Python, mi menciis ke ĝi uzas blankan spacon
al vi kiujn nivelo de deŝovon kaj kion funkcia bloko vi estas en,
ĝi traktas taboj kaj spacoj malsame.
Do se vi langeto super kvar, kaj tiam la sekva linio havas kvar spacoj,
eĉ se ili montras supren kiel la saman kvanton en via redaktilo,
Pitono ne traktas ilin same.
>> Fakte, Pitono traktas langetoj kaj spacoj kiel oleo kaj akvo.
Ili estas nur malsamaj aferoj.
Ne estas aparta longa kiu langeto estas,
do ĝi ne estas kiel langeto egalas 8 spacoj, kaj tiel vi akirus ĉirkaŭ ĝi
tiamaniere.
Kiel, kiam ĝi diras, kion nivelo de blanka spaco mi estas ĉe,
ĝi estas efektive serĉanta desegnon de spacoj kaj klapetoj.
Kaj do, la plej bona maniero trakti tiun estas ĉiam uzi spacoj tutan tempon.
>> Kaj fakte, en la Cloud9 IDE kaj la CS50 IDE,
via Tab ŝlosilo inserta kvar spacoj anstataŭe
de pestaña, kiu estas super utila.
Kvankam denove, se vi skribis Pitono programo kun langetoj estus bonege,
ĝi estas nur se iu eniris kaj provis aldoni
unu linion al via programo kiu havis kvar spacoj por ĉiu langeto,
ĝi rompus.
Kaj rompigxus en maniero ke vere ne estas videbla.
Kvankam la fakta eraro mesaĝon ke ĝi ĵetas
devas vidi kun nova indent ne atendis tie,
or-- se ĝi parolas pri skriptoj kaj ĝi aspektas kiel ĝi estas erara,
ĝi estas probable ĉar Tie estas langeto-spaco problemo.
Ili ankoraŭ exasperante elpurigi.
La plej granda aro en tiu diskuto, kiun mi ne
atingi ĉar estas vere komplika, subtila temo,
kaj ne estis necese fari ajnan de la aferoj ni faris ĝis nun,
estas koncepto nomita opoj.
Ili estas tie multe kiel la arrays ke vi ne povas modifi.
Ili kutimiĝas tuta loko ĉar ili estas utilaj por multaj eventoj
ke tabeloj ne estas utilaj por.
>> Sed se vi ŝatus fari tabelo, kaj tiam promesos la interpretisto ke vi
estas neniam tuj volas modifi ke thing-- fakte, se vi volas modifi,
vi faros nova kun la nova valoroj en it-- tiuj estas opoj.
Prefere ol produkti ilin kun kvadrataj krampoj,
vi produktas ilin per rondaj krampoj.
Kial vi uzus tion, Estas iomete de demando. .
La sola afero kiun mi diru pri kiu vi
povas uzi opoj kiel indeksoj por vortaroj.
Vi ne povas uzi tabeloj kiel indeksoj por vortaroj.
Kaj kial estas, denove, teknika kaj Mi ne tuj kuri en ĝin.
>> La pset ke mi ne tuŝis en tiu ĉi diskuto estas pset6.
Do jen kiel vi 'D efektivigu a-- jen
kiel vi volus apliki pset6 en Python.
Konsiderante la Python dezajno ciklo, la unua afero
ke vi faras kiam vi estas skribo programoj estas ĉeko
vidi se iu estas farita jam.
>> Fakte, se vi volas al serve-- Apache 50
faras proksimume tion, se gxi ne venas
norma instalita sur Linukso maŝinoj.
Python faras, kaj la Pitono simpla http servilo faras tiel.
Se vi estas iam sur Linukso maŝino, aŭ la Cloud9 IDE ekster CS50
kaj vi ŝatus servi tiu fluo dosierujo al aparta haveno,
python-m SimpleHTTPServer haveno servas tiu.
Vi povas ankaŭ importi la simpla http servilo
kaj ĝi estas atingis multajn funkciojn se vi volas personecigi ĝin, aŭ ŝanĝi ĝin,
aŭ ili kuros it-- jungi ĝin al kuri vian propran servilon servoj.
>> Do jen Python en malmultaj vortoj.
Kaj tiu estis CS50.
Dankon.