1 00:00:00,000 --> 00:00:05,426 2 00:00:05,426 --> 00:00:06,800 ROSS RHEINGANS-YOO: Hoi, ik ben Ross. 3 00:00:06,800 --> 00:00:08,570 En dit is een CS50 seminar. 4 00:00:08,570 --> 00:00:12,100 Het zal u van de programmering in C te programmeren in Python. 5 00:00:12,100 --> 00:00:15,120 >> Python is een scripttaal. 6 00:00:15,120 --> 00:00:17,870 Het is grotendeels zoals C in syntax, hoewel sommige 7 00:00:17,870 --> 00:00:20,390 van de technische details van hoe dat syntax wordt uitgevoerd 8 00:00:20,390 --> 00:00:22,240 zijn iets anders. 9 00:00:22,240 --> 00:00:24,780 Het is minder krachtig dan C in sommige opzichten. 10 00:00:24,780 --> 00:00:28,130 Het is minder expressief voor waar precies in uw computer 11 00:00:28,130 --> 00:00:30,030 geheugen wordt aangelegd, hoe het wordt aangelegd, 12 00:00:30,030 --> 00:00:32,030 wanneer het de vrijheid en dat soort dingen. 13 00:00:32,030 --> 00:00:36,150 >> Het is nuttiger dan C in sommige opzichten, want het is makkelijker om te programmeren. 14 00:00:36,150 --> 00:00:39,920 De taal, wat mensen, meer intuïtief. 15 00:00:39,920 --> 00:00:44,820 En echt, het doel is voor dat het sneller programmeren 16 00:00:44,820 --> 00:00:46,490 en mogelijk langzamere te voeren. 17 00:00:46,490 --> 00:00:48,198 >> Nu, als u denkt over de tijd 18 00:00:48,198 --> 00:00:50,514 u besteed aan uw laatste probleem set schrijven 19 00:00:50,514 --> 00:00:52,430 uw code tegen de hoeveelheid tijd die je besteedt 20 00:00:52,430 --> 00:00:55,310 op uw laatste probleem stellen de uitvoering van uw code, 21 00:00:55,310 --> 00:00:58,300 je zou denken dat de taal die tweemaal zo snel te schrijven, 22 00:00:58,300 --> 00:01:02,170 en tweemaal zo langzaam uit te voeren, kan zijn een verbetering ten opzichte C in sommige opzichten. 23 00:01:02,170 --> 00:01:05,730 Zeker als je probeert te schrijven kleine programma's kleine dingen doen, 24 00:01:05,730 --> 00:01:08,520 Python is een nuttige taal naar keuze. 25 00:01:08,520 --> 00:01:10,620 >> Aan het eind van deze seminarie, Ik hoop dat je 26 00:01:10,620 --> 00:01:12,950 in staat zijn om het te maken keuze in toekomstige projecten 27 00:01:12,950 --> 00:01:17,710 over welke taal correct gebruik, geen idee 28 00:01:17,710 --> 00:01:21,405 dat één taal is corrigeren de hele tijd. 29 00:01:21,405 --> 00:01:23,030 Een paar dingen over wat het seminar is. 30 00:01:23,030 --> 00:01:25,910 Dit seminar is niet bedoeld om leer je Python vanaf nul. 31 00:01:25,910 --> 00:01:28,310 Python is zeer vergelijkbaar C, en ik ga ervan uit 32 00:01:28,310 --> 00:01:34,056 dat je een CS50 student, of iemand met eenzelfde bekendheid met C. 33 00:01:34,056 --> 00:01:36,700 >> Als je CS50 student probleem rond set 6, 34 00:01:36,700 --> 00:01:38,866 dus je hebt zien veel dingen in C, ik geef je 35 00:01:38,866 --> 00:01:40,740 de grote verschillen, en enkele van de dingen 36 00:01:40,740 --> 00:01:42,840 dat Python verschillende maken en speciale en nuttig, 37 00:01:42,840 --> 00:01:45,256 maar ik ben niet van plan te gaan voor wat een programmeertaal is 38 00:01:45,256 --> 00:01:46,920 en hoe programma's te schrijven. 39 00:01:46,920 --> 00:01:49,820 Toch zal dit seminar leren u een Python-programma's te schrijven 40 00:01:49,820 --> 00:01:52,310 als je een van de weinige groepen. 41 00:01:52,310 --> 00:01:54,820 Opnieuw zullen we kijken naar hoe zou je psets-- implementeren 42 00:01:54,820 --> 00:01:57,550 die moeten 1-6 in Python-- en bieden pointers 43 00:01:57,550 --> 00:02:00,322 de officiële documentatie voor toekomstig gebruik. 44 00:02:00,322 --> 00:02:03,030 Het andere ding dat is belangrijk over de manier waarop dit gesprek is toegewezen, 45 00:02:03,030 --> 00:02:05,360 Deze video zal worden online, met dank aan CS50, 46 00:02:05,360 --> 00:02:07,550 dus je moet niet het gevoel dat je nodig hebt om notities te maken. 47 00:02:07,550 --> 00:02:11,180 U kunt altijd terug gaan en kijken ernaar later als referentie. 48 00:02:11,180 --> 00:02:13,340 Daarnaast zijn de slides zijn nu beschikbaar 49 00:02:13,340 --> 00:02:16,480 op deze site, die moet neem je een Google-doc doen. 50 00:02:16,480 --> 00:02:21,010 Het is een iets verkorte versie van wat ik heb laten zien op het scherm. 51 00:02:21,010 --> 00:02:24,850 >> Men voorzichtig waarschuwing voordat we springen, Python 3 52 00:02:24,850 --> 00:02:26,700 is een andere taal in Python 2. 53 00:02:26,700 --> 00:02:30,020 Ze zien er een stuk hetzelfde; er zijn zeer lichte technische verschillen 54 00:02:30,020 --> 00:02:32,530 dat de programma's zal leiden geschreven in Python 2 55 00:02:32,530 --> 00:02:37,140 niet kunnen worden uitgevoerd in de Python 3 milieu. 56 00:02:37,140 --> 00:02:41,969 >> De CS50 apparaat wordt geleverd met Python standaard maakt gebruik van Python 2. 57 00:02:41,969 --> 00:02:44,010 U kunt dit controleren door typen in de opdrachtregel 58 00:02:44,010 --> 00:02:51,310 python version, die moet geven 2.7.6 van het huidige apparaat. 59 00:02:51,310 --> 00:02:53,580 Probeer Python 3, die wel werken in het toestel, 60 00:02:53,580 --> 00:02:58,500 Als Python standaard 2.X.Y, hetzij op het apparaat of op uw eigen machines. 61 00:02:58,500 --> 00:03:03,730 Je moet Python 3 altijd vervangen in dit gesprek dat ik schrijf Python. 62 00:03:03,730 --> 00:03:05,760 Als uw machine running 2 standaard type 63 00:03:05,760 --> 00:03:09,770 Python 3 om te kunnen daadwerkelijk volgen langs en deze dingen uit te voeren. 64 00:03:09,770 --> 00:03:12,280 >> Daarnaast zal ik u wijzen op nu officieel middelen. 65 00:03:12,280 --> 00:03:16,082 docs.python.org/3--~~V zorgvuldige dat is een 3 en niet een 2-- 66 00:03:16,082 --> 00:03:17,030 heeft nuttig gevonden. 67 00:03:17,030 --> 00:03:19,280 Tutorial zal u door veel van dezelfde dingen 68 00:03:19,280 --> 00:03:21,460 dat ik nu doe, behalve in de vorm van tekst. 69 00:03:21,460 --> 00:03:23,725 Reference is bruikbaar als een referentie voor de taal, 70 00:03:23,725 --> 00:03:26,100 en Standard Library geeft u een aantal van de extensies 71 00:03:26,100 --> 00:03:27,770 met extra functionaliteit. 72 00:03:27,770 --> 00:03:31,300 >> Dus een eerste Python programma. 73 00:03:31,300 --> 00:03:34,410 Aan de linker hebben wij standaard C, aan de rechterkant, hebben we Python. 74 00:03:34,410 --> 00:03:36,780 Je zou hebben erkend dit probleem is het 75 00:03:36,780 --> 00:03:40,760 een van de eerste opgave sets in CS50, en deze 76 00:03:40,760 --> 00:03:42,677 oplossen behulp van dezelfde oplossing. 77 00:03:42,677 --> 00:03:45,010 Nu, de reden dat we kijken naar deze naast elkaar 78 00:03:45,010 --> 00:03:46,830 is, zodat we kunnen kijken naar syntactische verschillen. 79 00:03:46,830 --> 00:03:49,580 Eén van de olifanten in de kamer dat u recht zou hebben opgemerkt 80 00:03:49,580 --> 00:03:56,350 van de vleermuis, is dat Python heeft geen hoofdfunctie wikkelen rond de code. 81 00:03:56,350 --> 00:03:59,170 Dus in C, een bos van je schrijft bestanden, je ze met elkaar te verbinden, 82 00:03:59,170 --> 00:04:02,590 en het programma begint met de uitvoering op dit ding heet int main. 83 00:04:02,590 --> 00:04:04,930 >> In Python, schrijf je een bestand dat u het bestand uit te voeren, 84 00:04:04,930 --> 00:04:07,882 het programma begint met de uitvoering aan het begin van het bestand. 85 00:04:07,882 --> 00:04:09,590 Dus het gaat om te beginnen bovenaan bestand 86 00:04:09,590 --> 00:04:11,280 ga naar beneden totdat het iets anders vinden. 87 00:04:11,280 --> 00:04:14,440 Indien hij constateert een functie-definitie, het zal niet eigenlijk dat code uit te voeren, 88 00:04:14,440 --> 00:04:15,940 zal eenvoudig de functie te definiëren. 89 00:04:15,940 --> 00:04:18,459 Maar hier, toen de eerste programma is n gelijk aan 10, 90 00:04:18,459 --> 00:04:21,273 het eerste ding dat dit programma zal doen is deze waarde van 10 91 00:04:21,273 --> 00:04:24,120 en zet het in een variabele genaamd n. 92 00:04:24,120 --> 00:04:27,690 >> Spreken van die lijn, een van andere things-- dit sorry-- 93 00:04:27,690 --> 00:04:31,040 betekent dat C's, je ze schrijven, 94 00:04:31,040 --> 00:04:34,899 je zult ze maken, dat zal beroepen sommige clang commando's, 95 00:04:34,899 --> 00:04:36,690 en dan zul je een run resulterende executable. 96 00:04:36,690 --> 00:04:41,030 Python-programma's, je loopt de tekst file-- dit mario.py misschien 97 00:04:41,030 --> 00:04:44,900 zijn dit bestand dat liet ik gewoon u-- je dat bestand uitvoeren 98 00:04:44,900 --> 00:04:47,450 en je zult uitvoeren, en de inhoud ervan 99 00:04:47,450 --> 00:04:50,390 zal worden uitgevoerd door de Python-interpreter. 100 00:04:50,390 --> 00:04:52,470 U kunt dit doen in je IDE. 101 00:04:52,470 --> 00:05:02,260 >> Dus als ik een bestand Hallo, die heeft gewoon deze inhoud. 102 00:05:02,260 --> 00:05:04,840 Dit is eigenlijk Python 2, 3 niet Python, dus niet doen 103 00:05:04,840 --> 00:05:06,600 zorgen over de syntaxis voor nu. 104 00:05:06,600 --> 00:05:14,230 Maar ik zal lopen Python, op hello.py en het loopt. 105 00:05:14,230 --> 00:05:18,890 >> Een andere manier die ik kan gebruiken Python dat Ik zal niet omgaan met zo veel in dit gesprek, 106 00:05:18,890 --> 00:05:21,840 is als ik typ Python, is het zakt me in een omgeving waar 107 00:05:21,840 --> 00:05:24,370 Ik kan het voeden Python lijn per lijn. 108 00:05:24,370 --> 00:05:31,260 Dus hier, als ik typ afdrukken ruimte 'hello, world'. 109 00:05:31,260 --> 00:05:32,360 Typ in te voeren. 110 00:05:32,360 --> 00:05:37,430 Het zal me spuwen dat de resultaten terug dat individuele lijn onmiddellijk. 111 00:05:37,430 --> 00:05:38,470 >> Dit kan nuttig zijn. 112 00:05:38,470 --> 00:05:40,700 In deze lezing zal ik dingen op dia's. 113 00:05:40,700 --> 00:05:43,940 En dus je zult in staat zijn om te volgen langs ofwel hier, of door te schrijven 114 00:05:43,940 --> 00:05:45,725 eigenlijke bestanden en het uitvoeren van hen. 115 00:05:45,725 --> 00:05:48,340 116 00:05:48,340 --> 00:05:50,995 >> Maar, terug te gaan naar deze code, een ander ding 117 00:05:50,995 --> 00:05:53,230 dat je zou kunnen hebben noticed-- goed, er is 118 00:05:53,230 --> 00:05:55,980 twee dingen die je misschien opvalt aan deze blokken. 119 00:05:55,980 --> 00:05:59,280 De eerste, eerder meer alledaagse, dat de Python heeft geen trailing puntkomma. 120 00:05:59,280 --> 00:06:02,630 >> Puntkomma zijn optioneel overal en onschadelijk overal. 121 00:06:02,630 --> 00:06:03,722 Je kunt ze toevoegen. 122 00:06:03,722 --> 00:06:06,430 Het zou de mensen die schrijven maken Python voor een leven snicker naar je 123 00:06:06,430 --> 00:06:08,860 achter je rug, want ze zijn niet nodig. 124 00:06:08,860 --> 00:06:13,497 Ze zijn vaak een teken van wordt gehouden over uit C. De ontwerpers van de taal 125 00:06:13,497 --> 00:06:16,580 het gevoel dat het meer duidelijk op deze manier en dat het niet nodig is te verklaren 126 00:06:16,580 --> 00:06:18,700 elke keer als je eindigt een lijn. 127 00:06:18,700 --> 00:06:21,799 >> Een ander vreemde ding over deze n is het geen type bevestigd. 128 00:06:21,799 --> 00:06:24,590 Een van de magische stukken Python-- en ik ga het magie noemen, 129 00:06:24,590 --> 00:06:26,381 maar er zijn zeer technische redenen waarom het 130 00:06:26,381 --> 00:06:28,560 works-- een van de magie stukjes Python 131 00:06:28,560 --> 00:06:32,700 dat variabelen kunnen uitbreiden of krimpen tot welke data bevatten 132 00:06:32,700 --> 00:06:34,530 soorten je zou hen willen. 133 00:06:34,530 --> 00:06:35,580 >> Dus dit is een 10. 134 00:06:35,580 --> 00:06:40,060 Als later neer ik toegewezen aan deze n 0.5, zou het dat 0,5. 135 00:06:40,060 --> 00:06:43,770 Het maakt niet uit dat het een int hier en zweven er, iets dat dit n gebruikt 136 00:06:43,770 --> 00:06:47,057 zal, min of meer, kunnen puffen mee als het wordt van beide. 137 00:06:47,057 --> 00:06:49,640 Tenzij er een aantal zeer reële reden waarom het de gegevens niet kunnen gebruiken 138 00:06:49,640 --> 00:06:52,170 typt dat n momenteel heeft, op welk punt het zal krijgen 139 00:06:52,170 --> 00:06:54,490 ingeklemd en gooi een fout, en dat soort dingen. 140 00:06:54,490 --> 00:06:57,050 >> Maar hier, Python niet echt schelen wat 141 00:06:57,050 --> 00:06:59,140 het is dat ik ga aan de stok in deze zin, als je dit ding wilt? 142 00:06:59,140 --> 00:06:59,840 Dit ding in dat? 143 00:06:59,840 --> 00:07:00,640 Ja, het is een soort van een ding. 144 00:07:00,640 --> 00:07:01,810 Ik zal het blijven in het einde. 145 00:07:01,810 --> 00:07:04,740 Het zal een probleem later, als iemand die wil dat doel gebruiken 146 00:07:04,740 --> 00:07:05,710 kan niet omgaan. 147 00:07:05,710 --> 00:07:08,500 Dit is een van de belangrijkste verschillen tussen de Python en C 148 00:07:08,500 --> 00:07:10,790 dat maakt het eenvoudig om schrijf zeer grote C-programma's 149 00:07:10,790 --> 00:07:15,120 en vergemakkelijkt schrijven zeer kleine Python programma. 150 00:07:15,120 --> 00:07:19,564 >> De voor de syntax is niet erg verschillend in wat het doet. 151 00:07:19,564 --> 00:07:21,480 Het is iets anders in de manier waarop het wordt uitgedrukt. 152 00:07:21,480 --> 00:07:25,370 Dus dit is een zeer, zogenoemde Pythonic, manier van schrijven. 153 00:07:25,370 --> 00:07:28,969 voor rij in het bereik (n), is de scala van nummers van 0 tot en met n, 154 00:07:28,969 --> 00:07:31,010 inclusive onderaan en exclusief de top. 155 00:07:31,010 --> 00:07:34,790 Het is dus van 0 tot n-1, dat is precies wat de C-code aan het doen is, 156 00:07:34,790 --> 00:07:38,690 behalve dat het een stuk makkelijker om naar te kijken misschien. 157 00:07:38,690 --> 00:07:42,710 >> Het betreffende blok is niet afgezet met bretels, 158 00:07:42,710 --> 00:07:44,540 maar het is op weg door deze inspringen. 159 00:07:44,540 --> 00:07:47,580 Dus al deze lijnen vier plaatsen naar rechts, 160 00:07:47,580 --> 00:07:50,410 of als over een olifant breedte. 161 00:07:50,410 --> 00:07:54,570 En dat zijn degenen die zijn zal worden uitgevoerd voor dit. 162 00:07:54,570 --> 00:07:57,020 Als ik verknoeien de inspringen op deze en I 163 00:07:57,020 --> 00:08:01,420 duwen die printen terug naar de oorspronkelijke inspringen, 164 00:08:01,420 --> 00:08:04,320 die afdruk laat de lus. 165 00:08:04,320 --> 00:08:08,560 In tegenstelling tot C, waarbij ik hier eigenlijk moet dat gesloten brace bewegen. 166 00:08:08,560 --> 00:08:11,820 >> Dit betekent dat je geen fouten krijg dat uit springen op je omdat je 167 00:08:11,820 --> 00:08:13,580 zet een brace in verkeerde plaats. 168 00:08:13,580 --> 00:08:16,460 Het betekent wel dat je fouten krijgen dat uit springen op je omdat je 169 00:08:16,460 --> 00:08:17,620 ingesprongen een lijn verkeerd. 170 00:08:17,620 --> 00:08:19,290 Dus het maakt inkepingen super voorzichtig. 171 00:08:19,290 --> 00:08:22,123 Hopelijk was je zijn super voorzichtig met je inspringen toch, 172 00:08:22,123 --> 00:08:25,300 en dus dit is niet zo veel meer van een last. 173 00:08:25,300 --> 00:08:28,762 >> Maar een basisregel voor Python, en we zullen een paar van deze hebben 174 00:08:28,762 --> 00:08:30,970 dat we door zullen gaan door de loop van het gesprek, 175 00:08:30,970 --> 00:08:33,840 is proberen natuurlijke syntax voordat er iets opzoeken. 176 00:08:33,840 --> 00:08:37,610 Dus deze syntaxis, voor dit aantal in het bereik, 177 00:08:37,610 --> 00:08:41,460 is zeer onderscheidend qua stijl. 178 00:08:41,460 --> 00:08:45,260 Veel dingen in Python we zullen zien het nemen van dit formulier. 179 00:08:45,260 --> 00:08:47,420 >> En dus als je komen met een nieuw object 180 00:08:47,420 --> 00:08:50,870 dat moet je in staat zijn om itereren over deze, in dit formaat, 181 00:08:50,870 --> 00:08:53,720 blijkt dat het waarschijnlijk ondersteunt dat formaat. 182 00:08:53,720 --> 00:08:56,990 We gaan niet super diep in te gaan de technische redenen waarom dat is waar. 183 00:08:56,990 --> 00:09:00,167 >> Maar het is een handig intuïtie te hebben als je het naderen van Python-programma's, 184 00:09:00,167 --> 00:09:01,750 dat dit ding gewoon gaat werken. 185 00:09:01,750 --> 00:09:03,020 Probeer het. 186 00:09:03,020 --> 00:09:06,480 Opstarten van de Command Line Tolk, zien of het werkt, 187 00:09:06,480 --> 00:09:09,827 verder gaan met de dingen, voordat u het zelfs nodig om de openstelling van Google en zeggen: 188 00:09:09,827 --> 00:09:11,660 wat is de syntaxis voor dit bijzondere ding? 189 00:09:11,660 --> 00:09:14,740 Veel Python je kon ontdekken gewoon door te proberen. 190 00:09:14,740 --> 00:09:19,005 >> Dit is als nog vergelijkbaar C dan de fors zijn. 191 00:09:19,005 --> 00:09:20,380 Merk op dat er geen haakjes. 192 00:09:20,380 --> 00:09:23,490 De haakjes, weer, onschadelijk maar overbodig. 193 00:09:23,490 --> 00:09:25,750 Er is een dubbele punt aan het einde net als de lussen, 194 00:09:25,750 --> 00:09:30,800 opnieuw, de relatieve blokken ingesprongen plaats afgezet met bretels. 195 00:09:30,800 --> 00:09:33,080 Dit is anders bij de oorspronkelijke niveau van inspringen, 196 00:09:33,080 --> 00:09:35,930 en de relevante blok weer ingesprongen. 197 00:09:35,930 --> 00:09:41,720 Die werken precies zoals ze doen in C. 198 00:09:41,720 --> 00:09:44,520 >> Dit is eigenlijk heel veel hetzelfde. 199 00:09:44,520 --> 00:09:49,430 Nogmaals, print verliest één teken off van printf Je passeert enkele snaren. 200 00:09:49,430 --> 00:09:51,520 Het blijkt strings kan ofwel worden gemarkeerd 201 00:09:51,520 --> 00:09:53,562 door enkele aanhalingstekens of dubbele aanhalingstekens. 202 00:09:53,562 --> 00:09:55,270 Er is geen verschil, behalve dat binnen 203 00:09:55,270 --> 00:09:57,722 van enkele aanhalingstekens u kunt gebruiken dubbele aanhalingstekens met overgave, 204 00:09:57,722 --> 00:09:59,430 en niet hoeven te ontsnappen allemaal. 205 00:09:59,430 --> 00:10:01,480 En de binnenkant van dubbele aanhalingstekens, je kan enkele aanhalingstekens met overgave te gebruiken 206 00:10:01,480 --> 00:10:02,420 zonder ze te ontsnappen. 207 00:10:02,420 --> 00:10:04,253 Als je wilde mengen hen, kunt u zeker 208 00:10:04,253 --> 00:10:06,100 opzoeken online hoe dat te doen. 209 00:10:06,100 --> 00:10:09,581 >> Je zult zien dat hier opmerken, Ik heb aangenomen in eind = deze zaak. 210 00:10:09,581 --> 00:10:12,580 Dit is een voorbeeld van een facultatieve argument, dat is een van die dingen 211 00:10:12,580 --> 00:10:14,990 dat Python ondersteunt die maakt het heel nuttig. 212 00:10:14,990 --> 00:10:18,240 Zo druk heeft eigenlijk een heleboel argumenten, die gewoonlijk 213 00:10:18,240 --> 00:10:20,140 ingesteld op hun standaard waarde, maar ik heb hier 214 00:10:20,140 --> 00:10:21,924 besloten om het een zogenaamde einde overschrijven. 215 00:10:21,924 --> 00:10:24,340 De reden dat ik overschrijven met een lege string 216 00:10:24,340 --> 00:10:26,756 is dat print in Python, door Standaard drukt een nieuwe lijn 217 00:10:26,756 --> 00:10:28,630 nadat het ding dat je het ook verteld. 218 00:10:28,630 --> 00:10:31,462 >> Dus deze hash is eigenlijk gaat afdrukken van een hash in een nieuwe regel. 219 00:10:31,462 --> 00:10:34,670 En als ik niet wil hash uit te printen een nieuwe regel na, dan moet ik zeggen 220 00:10:34,670 --> 00:10:35,340 niet afgedrukt één. 221 00:10:35,340 --> 00:10:37,980 222 00:10:37,980 --> 00:10:43,690 Maar toch zo, het een laatste ding dat Dit programma mist dat men is 223 00:10:43,690 --> 00:10:44,960 include bovenaan. 224 00:10:44,960 --> 00:10:48,120 Print wordt gebakken in Python dus in principe dat er geen koptekst of module 225 00:10:48,120 --> 00:10:49,869 die je nodig hebt om te omvatten, hoewel indien gewenst 226 00:10:49,869 --> 00:10:52,029 om andere dingen te omvatten in een Python-script, 227 00:10:52,029 --> 00:10:55,320 Ik zou het doen in een zeer vergelijkbare format-- de woorden zijn net iets anders. 228 00:10:55,320 --> 00:10:58,840 229 00:10:58,840 --> 00:11:01,360 >> Ik heb gezegd dat we niet een van de belangrijkste hier nodig, 230 00:11:01,360 --> 00:11:03,372 omdat de Python begint uitvoeren bovenaan. 231 00:11:03,372 --> 00:11:05,080 Als ik wilde wrap dit in functie ik 232 00:11:05,080 --> 00:11:07,667 zou het doen als ik dit-- zou zeker functie naam te zeggen, 233 00:11:07,667 --> 00:11:10,500 argumenten zou hier gaan en we zullen zie een aantal van die later, colon, 234 00:11:10,500 --> 00:11:13,040 en dan weer, dit hele set off block 235 00:11:13,040 --> 00:11:16,810 wat is operationeel blokkeren voor die functie. 236 00:11:16,810 --> 00:11:18,560 Dus dit is de definitie van de functie. 237 00:11:18,560 --> 00:11:21,587 En er is een verklaring, dan naar beneden hier, kan ik gewoon bellen met de functie. 238 00:11:21,587 --> 00:11:23,920 En nogmaals, het programma interpreter, beginnend aan de bovenzijde, 239 00:11:23,920 --> 00:11:25,280 ziet dit is de definitie. 240 00:11:25,280 --> 00:11:27,960 Het zal deze niet uitgevoerd totdat hier te komen, en dan is het net, oh 241 00:11:27,960 --> 00:11:30,860 nu heb je noemde, heb ik denk dat ik moet het uit te voeren. 242 00:11:30,860 --> 00:11:33,850 >> Een ding dat is heel gebruikelijk te zien in Python-bestanden, 243 00:11:33,850 --> 00:11:36,700 vooral Python bestanden die worden vrijgegeven aan het publiek 244 00:11:36,700 --> 00:11:41,650 en ontwikkelde by-- en ontwikkeld en gehandhaafd, is iets van dit formulier. 245 00:11:41,650 --> 00:11:44,540 Dit is zo omdat basically-- Python, begin je aan de top 246 00:11:44,540 --> 00:11:50,310 en dan naar beneden te voeren naar de bodem, Ik als ik had net Mario riep hier 247 00:11:50,310 --> 00:11:54,190 dan is elke keer dat ik opgenomen in dit bestand een ander bestand, want ik wilde gebruiken 248 00:11:54,190 --> 00:11:58,580 is Mario functie, dat andere bestand zou hebben ook deze oproep aan Mario in. 249 00:11:58,580 --> 00:12:01,000 En toen ik liep, dat bestand, zou Mario noemen. 250 00:12:01,000 --> 00:12:04,520 >> Dus het is mogelijk dat slechts I wil dit uitvoeren als ik heb eigenlijk 251 00:12:04,520 --> 00:12:07,290 geëxecuteerd dit specifieke bestand. 252 00:12:07,290 --> 00:12:11,520 En zo kan ik dit verpakken in een idioom als deze, waar ik zeg, 253 00:12:11,520 --> 00:12:14,820 Als de naam van deze executie milieu is de belangrijkste, 254 00:12:14,820 --> 00:12:16,200 dan wil ik deze dingen te doen. 255 00:12:16,200 --> 00:12:18,710 Anders iemand anders kan use-- onder mijn function-- 256 00:12:18,710 --> 00:12:22,510 Mijn bestand, en alleen maar om toegang tot deze functies 257 00:12:22,510 --> 00:12:25,552 zonder de dingen lopen dat ik wil uitvoeren in dit bestand. 258 00:12:25,552 --> 00:12:27,260 Dit is weer optioneel maar heel gebruikelijk. 259 00:12:27,260 --> 00:12:30,450 260 00:12:30,450 --> 00:12:33,840 >> Deze dingen zijn entirely-- zijn precies het zelfde tussen C en Python, 261 00:12:33,840 --> 00:12:35,100 zeker in 3. 262 00:12:35,100 --> 00:12:38,610 Ik denk dat in 2, de divisie operator Soms geeft u terug drijft wanneer 263 00:12:38,610 --> 00:12:41,450 u geopereerd ints, en ofwel je dat wilde of je dat niet deed. 264 00:12:41,450 --> 00:12:44,777 Maar plus, min, en tijden werkt precies zoals je zou verwachten, 265 00:12:44,777 --> 00:12:46,110 behalve op iets meer soorten. 266 00:12:46,110 --> 00:12:49,740 Dus je kunt praalwagens vermenigvuldigen met ints, en dat soort dingen. 267 00:12:49,740 --> 00:12:52,480 >> set werkt precies hetzelfde. 268 00:12:52,480 --> 00:12:54,310 U kunt twee gelijke tekens te gebruiken. 269 00:12:54,310 --> 00:12:59,000 inequals-- groter dan, minder dan, dit soort things-- 270 00:12:59,000 --> 00:13:02,580 de betekenissen die U bent vertrouwd met hen. 271 00:13:02,580 --> 00:13:05,770 >> Indien C gebruik maakt van deze operatoren, Python maakt gebruik van iets meer Engels 272 00:13:05,770 --> 00:13:06,390 leesbaar degenen. 273 00:13:06,390 --> 00:13:09,348 Dus in plaats van twee, ampersands, u letterlijk typ het woord "en", "of" 274 00:13:09,348 --> 00:13:10,740 of niet." 275 00:13:10,740 --> 00:13:13,420 Net als in uw if-- in uw voorwaardelijke verklaringen, 276 00:13:13,420 --> 00:13:17,670 we eerder zagen dat deze syntaxis in C correspondeert met de syntaxis in Python. 277 00:13:17,670 --> 00:13:21,010 En er is niet veel anders daar, met uitzondering van een klein beetje 278 00:13:21,010 --> 00:13:24,780 interpunctie rond de zijkanten. 279 00:13:24,780 --> 00:13:28,890 Nogmaals, waarbij C zou anders indien, Python gebruikt elif, 280 00:13:28,890 --> 00:13:33,960 maar deze zijn meestal maaiveld veranderingen. 281 00:13:33,960 --> 00:13:38,450 >> Iteratie als dit is vaak geschreven in dit idioom in Python. 282 00:13:38,450 --> 00:13:42,350 U kunt dit soort vervaardigen ding met een while lus aan de buitenkant 283 00:13:42,350 --> 00:13:46,387 als je wilde, maar u zeker niet hoeft te doen. 284 00:13:46,387 --> 00:13:48,970 En nogmaals, als je wilde de printen elementen van een array 285 00:13:48,970 --> 00:13:50,560 je zou doen op deze manier. 286 00:13:50,560 --> 00:13:52,927 Een van de leuke dingen over Python hoewel, 287 00:13:52,927 --> 00:13:54,760 is dat je niet nodig hebt dit paradigma gebruiken, 288 00:13:54,760 --> 00:13:57,290 en u kunt gebruik maken van een iets meer elegant één. 289 00:13:57,290 --> 00:13:59,370 U zegt dat voor een in Ary. 290 00:13:59,370 --> 00:14:02,980 >> Dus in plaats van hier te gaan en loopt over de indexen, 291 00:14:02,980 --> 00:14:05,630 en dan uit te trekken afzonderlijke elementen, 292 00:14:05,630 --> 00:14:08,644 vertel je de voor te eigenlijk alleen lopen over de elementen zelf. 293 00:14:08,644 --> 00:14:11,060 En dan wat u ook doet binnenkant kan direct opereren 294 00:14:11,060 --> 00:14:13,260 op de elementen, dat is vrij leuk. 295 00:14:13,260 --> 00:14:16,710 En we zullen see-- we zullen gebruiken opnieuw en opnieuw dat idioom 296 00:14:16,710 --> 00:14:18,050 als we door code. 297 00:14:18,050 --> 00:14:20,091 >> Dit is weer een voorbeeld van iets dat ik zal 298 00:14:20,091 --> 00:14:23,300 bellen Python magie, maar er zijn zeer technische redenen waarom het werkt. 299 00:14:23,300 --> 00:14:26,340 En er zijn technische dingen die nodig hebt om waar over array in orde 300 00:14:26,340 --> 00:14:28,340 dit te laten werken achter de schermen. 301 00:14:28,340 --> 00:14:31,390 Het ding is dat de meeste soorten die je zou verwachten dit te laten werken 302 00:14:31,390 --> 00:14:36,610 hebben gehad voor deze geïmplementeerd u in de ingebouwde taal. 303 00:14:36,610 --> 00:14:40,030 >> Een ander ding dat het leuk zou zijn als dit werkt in elke taal, 304 00:14:40,030 --> 00:14:45,460 maar er zijn een aantal redenen waarom het niet kan, afdrukken deze string keer dit aantal. 305 00:14:45,460 --> 00:14:48,860 Blijkt dat in Python, dit precies doet wat je wilt, dat is gewoon leuk, 306 00:14:48,860 --> 00:14:52,840 en betekent dat we kunnen eigenlijk dit programma te verminderen, opnieuw mario.c. 307 00:14:52,840 --> 00:14:57,150 Eerder dan iteratie veel, we kunnen gewoon zeggen, ik wil wat aantal, 308 00:14:57,150 --> 00:15:01,120 Ik wil het aantal hashes, en sommige hashes eind. 309 00:15:01,120 --> 00:15:02,640 En nogmaals, maken we gebruik van dit formaat. 310 00:15:02,640 --> 00:15:05,340 >> Hier, we passeren in een variabele op deze manier. 311 00:15:05,340 --> 00:15:08,050 Nogmaals, we hoeven niet te zeggen wat voor soort variabele het is, 312 00:15:08,050 --> 00:15:11,322 en de enige keer dat we krijgt fouten tijdens runtime. 313 00:15:11,322 --> 00:15:13,030 Als iemand probeert om iets te gaan, 314 00:15:13,030 --> 00:15:14,860 het zal prima in de functie komen. 315 00:15:14,860 --> 00:15:18,240 Als we hier wig omdat dit niet het ding dat je bereiken dan kunt maken, 316 00:15:18,240 --> 00:15:22,100 Ik zal een runtime error er te komen, en ik moet het debuggen op die manier. 317 00:15:22,100 --> 00:15:25,050 Maar in de tussentijd heb ik niet heel voorzichtig te zijn wat 318 00:15:25,050 --> 00:15:32,800 wordt doorgegeven, mits de feitelijke uitvoering het allemaal werkt zeer netjes. 319 00:15:32,800 --> 00:15:35,080 >> Ik kon dit zelfs een beetje schoner 320 00:15:35,080 --> 00:15:41,770 gebruik van een bepaalde ingebouwde functie op strings, die recht rechtvaardigen. 321 00:15:41,770 --> 00:15:45,250 Dit is slechts een nuttige functie rondslingeren de bibliotheek. 322 00:15:45,250 --> 00:15:47,660 Het is in de documentatie als je gaan zoeken. 323 00:15:47,660 --> 00:15:51,650 En ik zeg, nou ik ga moeten deze string, een getal van hashes, 324 00:15:51,650 --> 00:15:56,390 en ik zou graag het-- pad rechts te rechtvaardigen het uit met spaties om deze lengte. 325 00:15:56,390 --> 00:16:00,584 >> Ook dit is in het documentatie, die ons-- brengt 326 00:16:00,584 --> 00:16:03,500 Ik kom eigenlijk doorklikken these-- die brengt ons bij onze tweede regel 327 00:16:03,500 --> 00:16:06,990 voor Python-- standaard bibliotheek functie methoden zijn uw vrienden. 328 00:16:06,990 --> 00:16:09,880 En het is vaak de moeite waard op zoek gaan naar Ik vraag me af 329 00:16:09,880 --> 00:16:12,310 als er een ding dat alleen dit doet. 330 00:16:12,310 --> 00:16:13,830 Er is waarschijnlijk. 331 00:16:13,830 --> 00:16:15,990 Als je wilt naar pad uit een string, als je wilt 332 00:16:15,990 --> 00:16:17,470 graag het terug te nemen de helft van een string, als je wilt 333 00:16:17,470 --> 00:16:20,370 graag te zoeken door een string, als u wilt een paar dingen smash 334 00:16:20,370 --> 00:16:22,420 samen met een string met een komma tussen hen, 335 00:16:22,420 --> 00:16:24,640 Er zijn standaard bibliotheek functies hiervoor. 336 00:16:24,640 --> 00:16:27,190 >> En het maakt je leven makkelijker als je ze kunt gebruiken 337 00:16:27,190 --> 00:16:29,240 in plaats van het uit te rollen alles op je eigen 338 00:16:29,240 --> 00:16:31,650 op de vijf regels code hier, vijf regels code hier. 339 00:16:31,650 --> 00:16:34,430 Dat begint eigenlijk bij optellen tot real time. 340 00:16:34,430 --> 00:16:37,430 >> Een van de interessante dingen over hoe dit wordt genoemd. 341 00:16:37,430 --> 00:16:39,980 Je zult merken dat er een dot ding. 342 00:16:39,980 --> 00:16:43,490 Ik heb een object aan de linkerkant, en dan riep ik een dot van een functie. 343 00:16:43,490 --> 00:16:49,780 Dit is één van de paradigma's die Python gebruikt voor het bevestigen van methoden om objecten. 344 00:16:49,780 --> 00:16:54,410 We zullen praten over wat dit is heel kort eind, 345 00:16:54,410 --> 00:16:58,510 maar weet dat we kunnen beide werken op dingen door het nemen van dat ding te zeggen dot 346 00:16:58,510 --> 00:17:01,690 wat dan ook, of door te bellen een functie die neemt 347 00:17:01,690 --> 00:17:04,339 dat object en een aantal andere argumenten. 348 00:17:04,339 --> 00:17:07,450 >> Dit zijn dus twee manieren dingen gedaan te krijgen in Python. 349 00:17:07,450 --> 00:17:09,780 En of een bepaald functionaliteit geïmplementeerd 350 00:17:09,780 --> 00:17:14,230 in deze stijl of dit stijl is iets dat je 351 00:17:14,230 --> 00:17:19,990 moeten kijken omhoog totdat u een knie te krijgen waarvoor men is het waarschijnlijk te vallen. 352 00:17:19,990 --> 00:17:22,660 Er is een min of meer samenhangende filosofie achter Python 353 00:17:22,660 --> 00:17:24,930 dat je vooral absorberen door het schrijven van een stuk in. 354 00:17:24,930 --> 00:17:28,190 Op een gegeven moment, welke van deze iets zullen zo worden uitgevoerd 355 00:17:28,190 --> 00:17:29,470 wordt natuurlijk. 356 00:17:29,470 --> 00:17:32,420 Voor nu, het is gewoon iets je leert als je erachter 357 00:17:32,420 --> 00:17:34,140 elke individuele zaak. 358 00:17:34,140 --> 00:17:36,420 >> Dus standaard bibliotheek functies zijn je vrienden, 359 00:17:36,420 --> 00:17:41,320 en ze laten je dingen schrijven dat nemen dit veel ruimte echt kort, 360 00:17:41,320 --> 00:17:42,040 echt elegant. 361 00:17:42,040 --> 00:17:45,670 En dit is in feite waarschijnlijk leesbaar, zou ik zeggen, dan de C-programma 362 00:17:45,670 --> 00:17:46,780 daar. 363 00:17:46,780 --> 00:17:49,730 Niet aan het feit dat zo noemen kort u een hele olifant passen 364 00:17:49,730 --> 00:17:52,250 in de ruimte die we hebben gered. 365 00:17:52,250 --> 00:17:56,270 >> Een ander ding, dit is een implementatie van mario dat is punt C, waarvan ik denk dat 366 00:17:56,270 --> 00:17:57,890 is de kortste kun je het krijgen. 367 00:17:57,890 --> 00:18:00,757 Het heeft niet het get int, maar het moeilijk codes van de waarde van 10 368 00:18:00,757 --> 00:18:02,090 Net zoals dit doet. 369 00:18:02,090 --> 00:18:06,080 Blijkt dat deze klokken in op 84 karakters, terwijl Python is 64. 370 00:18:06,080 --> 00:18:11,490 En dit is oneindig veel meer leesbaar dan dit afval hier. 371 00:18:11,490 --> 00:18:14,610 Dus Python is efficiënter in de ruimte. 372 00:18:14,610 --> 00:18:17,260 Het is iets minder efficiënt in de tijd, maar niet veel. 373 00:18:17,260 --> 00:18:18,890 >> Lijsten zijn een belangrijk ding Python. 374 00:18:18,890 --> 00:18:21,540 375 00:18:21,540 --> 00:18:24,587 We hebben ze niet gezien, maar ze werken net als arrays doen in C. 376 00:18:24,587 --> 00:18:27,170 Dus hier, kunt u verklaren ze, je kunt ze overgaan in een ding. 377 00:18:27,170 --> 00:18:29,810 Nu pleinen heeft een scala aan deze dingen. 378 00:18:29,810 --> 00:18:33,480 Nogmaals, we hebben niet verklaard type, maar als we ooit proberen om het te gebruiken, 379 00:18:33,480 --> 00:18:36,260 iets dat je zou verwachten werken op een array van integers 380 00:18:36,260 --> 00:18:40,130 gaat werken een reeks integers. 381 00:18:40,130 --> 00:18:42,030 >> Dit is een ding dat je absoluut niet kan 382 00:18:42,030 --> 00:18:47,390 in C, omdat de geheugen is het zo handen op, 383 00:18:47,390 --> 00:18:48,950 maar is zeer gemakkelijk te doen in Python. 384 00:18:48,950 --> 00:18:55,310 Als ik wil dat mijn array groter, ik kan voegt een element aan het en het is prima. 385 00:18:55,310 --> 00:18:57,150 >> Wat gebeurt er achter de schermen? 386 00:18:57,150 --> 00:18:59,150 De tolk zal gaan buiten en krijgen wat geheugen, 387 00:18:59,150 --> 00:19:00,860 en misschien zal het een te krijgen beetje extra geheugen, 388 00:19:00,860 --> 00:19:03,090 dus ik denk niet dat ik niet heb elke keer realloc. 389 00:19:03,090 --> 00:19:04,897 Maar hoeveel meer geheugen is het nodig? 390 00:19:04,897 --> 00:19:06,730 Dit zijn geen beslissingen die je moet maken, 391 00:19:06,730 --> 00:19:10,540 Dit zijn beslissingen die de tolk gaat doen. 392 00:19:10,540 --> 00:19:12,270 >> Hier zien we bereik kan neem twee argumenten, 393 00:19:12,270 --> 00:19:16,430 maar het is nog steeds inbegrepen zijn van de top, zodat we daar voeg 1. 394 00:19:16,430 --> 00:19:21,970 Dit is een idioom, dat een nog slimme manier om dit soort dingen te schrijven. 395 00:19:21,970 --> 00:19:25,980 Het heet lijst begrip, en hier wat we zeggen 396 00:19:25,980 --> 00:19:32,560 is Ik wil graag in te zetten i kwadraat voor elke waarde van i in dit bereik. 397 00:19:32,560 --> 00:19:35,770 Deze zaak aan de rechter zou een andere zijn array, en dit ding aan de linkerzijde 398 00:19:35,770 --> 00:19:40,740 voor een bepaalde functie dat zou ik in een variabele 399 00:19:40,740 --> 00:19:42,250 en geef me een aantal resultaat. 400 00:19:42,250 --> 00:19:43,480 >> Wat ik ga doen is, Ik ga bouwen 401 00:19:43,480 --> 00:19:46,200 een array dat al deze dingen voor elke waarde in dit bereik. 402 00:19:46,200 --> 00:19:48,960 403 00:19:48,960 --> 00:19:55,670 En dit is super elegant, super korte, en het is heel duidelijk wat het betekent. 404 00:19:55,670 --> 00:19:59,190 Dit is een van de things-- dit weer, 405 00:19:59,190 --> 00:20:03,860 één van-- zeer karakteristiek van de redenen dat mensen zoals Python. 406 00:20:03,860 --> 00:20:05,900 Als je van de programmering als dit, dan Python 407 00:20:05,900 --> 00:20:07,830 is een taal die je misschien leuk om te leren. 408 00:20:07,830 --> 00:20:10,950 >> En nogmaals, er zijn technische redenen waarom dit werkt. 409 00:20:10,950 --> 00:20:14,730 Maar wat ons betreft, we meer of minder niet schelen. 410 00:20:14,730 --> 00:20:18,500 >> Dus als je wilt afdrukken lijsten, een aantal van dezelfde uitdrukkingen bruikbaar. 411 00:20:18,500 --> 00:20:20,940 Voor ik in deze reeks, konden we index door alle dingen 412 00:20:20,940 --> 00:20:23,140 en dan print ze allemaal uit. 413 00:20:23,140 --> 00:20:24,650 En je zult zien hier len. 414 00:20:24,650 --> 00:20:27,150 Als u ooit hebt willen krijgen de lengte van de array, die 415 00:20:27,150 --> 00:20:31,150 zeer gemakkelijk in Python, het is heel moeilijk in C. 416 00:20:31,150 --> 00:20:33,720 Dit zou precies uitprinten wat je zou verwachten. 417 00:20:33,720 --> 00:20:36,986 Wij konden ook, zoals we eerder hebben gezien, itereren over de elementen in matrix 418 00:20:36,986 --> 00:20:39,860 direct, en dan gewoon praten over hen, in plaats van de index 419 00:20:39,860 --> 00:20:43,190 terug in de matrix telkens. 420 00:20:43,190 --> 00:20:45,990 >> En dit is een ding dat je kunt doen. 421 00:20:45,990 --> 00:20:49,984 Dus in C, als je vraagt ​​om iets als dit, zou druk zeggen, 422 00:20:49,984 --> 00:20:51,150 dat is een array van integers. 423 00:20:51,150 --> 00:20:53,456 Dat is zeker niet een touwtje, ik kan niet afdrukken. 424 00:20:53,456 --> 00:20:54,830 Python meer of minder niet schelen. 425 00:20:54,830 --> 00:20:57,496 Het is net als, is er een manier die ik kan dit tot een koord draaien in? 426 00:20:57,496 --> 00:20:58,500 Ja, ik zal dat doen. 427 00:20:58,500 --> 00:21:01,600 En dus zal ik gewoon af te drukken dat uit. 428 00:21:01,600 --> 00:21:03,640 Dit betekent dat u kunt like-- deze dingen doen 429 00:21:03,640 --> 00:21:06,530 de meeste van de harde delen van het spel van de vijftien, schriftelijke 430 00:21:06,530 --> 00:21:08,930 heel kort in Python. 431 00:21:08,930 --> 00:21:11,320 >> Je zult zien dat er een beetje van-- hier 432 00:21:11,320 --> 00:21:14,441 Ik heb een geheel getal geworpen naar een string, en ik moet dat handmatig doen. 433 00:21:14,441 --> 00:21:16,190 En ik ga toe te voegen aan een andere reeks, 434 00:21:16,190 --> 00:21:17,590 of anderszins Python in de war raakt. 435 00:21:17,590 --> 00:21:19,840 Maar of als je toevoegen van een string naar een integer, 436 00:21:19,840 --> 00:21:22,630 ben ik veronderstel om een ​​te krijgen integer rug of een string terug? 437 00:21:22,630 --> 00:21:24,480 Maar nogmaals, als je gewoon str bellen op een ding, 438 00:21:24,480 --> 00:21:27,240 en het kan in elke mogelijke wereld worden omgezet in een tekenreeks, 439 00:21:27,240 --> 00:21:30,390 het zal waarschijnlijk omgezet in een tekenreeks. 440 00:21:30,390 --> 00:21:33,120 >> Hier zien we het gebruik van geneste lijst begrip 441 00:21:33,120 --> 00:21:38,690 links, wat indexeren, waarvan is precies zoals je zou worden gebruikt om het, 442 00:21:38,690 --> 00:21:40,060 en sommige afdrukken uit dingen. 443 00:21:40,060 --> 00:21:42,560 Nogmaals, we hebben gedefinieerd wat functies en wij noemen ze neer 444 00:21:42,560 --> 00:21:45,820 in de belangrijkste toen we eigenlijk het bestand. 445 00:21:45,820 --> 00:21:52,004 return werkt precies zoals je zou verwachten van het werken met C. zoeken, 446 00:21:52,004 --> 00:21:54,420 we kunnen opzetten dingen zoals dit-- hier is de lijst begrip 447 00:21:54,420 --> 00:21:59,245 Er is een opdracht aan een variabele, en kunnen we eigenlijk doen het nog gemakkelijker. 448 00:21:59,245 --> 00:22:01,870 We hoeven niet te zoeken te schrijven, omdat ingebouwd in de taal 449 00:22:01,870 --> 00:22:04,230 is als dit ding is in deze array. 450 00:22:04,230 --> 00:22:05,680 Return true, anders return false. 451 00:22:05,680 --> 00:22:08,830 Dus dat is het geheel van de vondst. 452 00:22:08,830 --> 00:22:12,230 >> Het geheel van de soort impliceert bellen sorteren, 453 00:22:12,230 --> 00:22:15,462 die is-- er implementaties dit ingebouwd in bepaalde C libraries. 454 00:22:15,462 --> 00:22:17,170 Als u dit wilt soort achteruit, je 455 00:22:17,170 --> 00:22:20,450 kan overschrijven deze optionele argument in omgekeerde met een ware. 456 00:22:20,450 --> 00:22:23,350 457 00:22:23,350 --> 00:22:27,860 En als je wilt over te sorteren strings, dat is ingebouwd in ook. 458 00:22:27,860 --> 00:22:31,950 >> Dus dit is niet te zeggen dat zijn dingen die je nodig hebt om elke dag doen, 459 00:22:31,950 --> 00:22:34,280 maar het idee is dat deze is de filosofie van Python, 460 00:22:34,280 --> 00:22:37,530 dat al deze dingen die je zou soort van willen doen zijn ingebouwd. 461 00:22:37,530 --> 00:22:42,410 En de meeste standaard functies, dus een soort, lengte, wat dan ook, 462 00:22:42,410 --> 00:22:44,380 ondersteunen de meeste logisch zinvolle inbreng. 463 00:22:44,380 --> 00:22:49,020 U belt len ​​op een array dezelfde zoals je oproep Len op een string. 464 00:22:49,020 --> 00:22:55,785 Je multiply-- je snaren afstand op dezelfde manier als arrays afstand. 465 00:22:55,785 --> 00:22:58,930 466 00:22:58,930 --> 00:23:00,740 >> De meeste standaard functies dat mensen op te bouwen, 467 00:23:00,740 --> 00:23:03,000 en de meeste third-party bibliotheken die mensen 468 00:23:03,000 --> 00:23:06,980 bouwen, omdat ze emuleren het ontwerp van de standaard bibliotheek, 469 00:23:06,980 --> 00:23:10,190 genoemd kan worden op alles wat je bent zoals, waarom dit niet gewoon werken, 470 00:23:10,190 --> 00:23:12,800 in C. Min of meer, het zal werken in Python 471 00:23:12,800 --> 00:23:15,930 omdat mensen werken achter de figuur wat een ding is en dan werken 472 00:23:15,930 --> 00:23:17,510 adequaat op. 473 00:23:17,510 --> 00:23:22,760 Dus nogmaals, technische achtergrond, maar het maakt ons leven gemakkelijker als programmeurs. 474 00:23:22,760 --> 00:23:26,820 >> Dus hier is bestand I / O. file I / O heeft veel kleine dingen die het ingewikkeld te maken, 475 00:23:26,820 --> 00:23:29,890 en dus zijn er middelen online, maar in een notendop, 476 00:23:29,890 --> 00:23:33,010 bel je open op een bestand naam van een bepaald type. 477 00:23:33,010 --> 00:23:37,640 Dus dat is te lezen, lezen en schrijven, schrijven of toevoegen. 478 00:23:37,640 --> 00:23:41,790 Je leest een aantal personages uit en je afdrukken die, 479 00:23:41,790 --> 00:23:42,595 krijg je Hello! 480 00:23:42,595 --> 00:23:43,970 Ik bedoel, als dit bestand had Hello! 481 00:23:43,970 --> 00:23:46,480 Daarin roepen om te lezen, en wat je terug krijgt 482 00:23:46,480 --> 00:23:49,520 een tekenreeks die alle over de rest van de matrix, 483 00:23:49,520 --> 00:23:50,860 of alle overige bestanden. 484 00:23:50,860 --> 00:23:53,805 485 00:23:53,805 --> 00:23:56,055 Als u opnieuw te bellen lezen, je bent aan het einde van het bestand, 486 00:23:56,055 --> 00:23:58,138 en zo krijg je niet alles en dus je zult sluiten. 487 00:23:58,138 --> 00:24:02,510 Nogmaals, dit is .close plaats dicht bestand, zoals het in C. zou zijn 488 00:24:02,510 --> 00:24:07,190 Dit is min of meer omdat f een ding, en je wilt voor f te sluiten. 489 00:24:07,190 --> 00:24:12,092 Maar basic file I / O is niet bijzonder ingewikkeld. 490 00:24:12,092 --> 00:24:15,300 Nogmaals, als je wilt een bestand te openen, indien u wilt een bepaalde lijn te lezen, 491 00:24:15,300 --> 00:24:17,870 je kunt krijgen van bepaalde line-- er ingebouwde plug-ins voor. 492 00:24:17,870 --> 00:24:19,995 Als je wilt naar een schrijven ding, kunt u dit schrijven. 493 00:24:19,995 --> 00:24:23,412 Indien u graag individuele uit te schrijven beten, kunt u die schrijven. 494 00:24:23,412 --> 00:24:25,620 En als u wilt herhalen via lijnen van een bestand 495 00:24:25,620 --> 00:24:29,557 individueel, zoals wij deden in een stuk van een paar weken geleden, kun je dat doen om. 496 00:24:29,557 --> 00:24:32,140 Nogmaals, de meeste objecten die je zou graag in staat zijn om over te herhalen 497 00:24:32,140 --> 00:24:33,780 ondersteuning itereren over hen. 498 00:24:33,780 --> 00:24:37,430 In Pythons, een bestand is misschien een wat Ik wil graag herhalen dan regel voor regel. 499 00:24:37,430 --> 00:24:39,138 Als het een woordenboek van woorden en ik was 500 00:24:39,138 --> 00:24:42,181 proberen om deze individuele krijgen woorden uit, dan, binnen deze lus, 501 00:24:42,181 --> 00:24:44,180 lijn Het gaat worden elk woord op zijn beurt en dit 502 00:24:44,180 --> 00:24:47,880 zal worden uitgevoerd voor elke lijn in het bestand tot het einde van het bestand. 503 00:24:47,880 --> 00:24:52,280 En nogmaals, als ik uitgeprint elk lijn, de lijnen komen met nieuwe lijnen, 504 00:24:52,280 --> 00:24:54,740 dus ik ben het instellen van het einde terug naar een zaak als deze. 505 00:24:54,740 --> 00:24:56,580 Dan zou ik de inhoud van mijn bestand. 506 00:24:56,580 --> 00:25:03,610 507 00:25:03,610 --> 00:25:07,480 >> Het tweede ding die actief is in sommige opzichten, zoals lijsten, en in sommige opzichten 508 00:25:07,480 --> 00:25:11,870 als iets substantieel krachtiger, 509 00:25:11,870 --> 00:25:16,170 zijn woordenboeken, die echt zijn cool om te gebruiken, maar zijn in principe hash 510 00:25:16,170 --> 00:25:17,670 tafels in vermomming. 511 00:25:17,670 --> 00:25:23,330 Je één met precies creëren twee karakters, dat is geweldig 512 00:25:23,330 --> 00:25:25,959 Als u geprobeerd om het uit te voeren hash tabel voor uw probleem set, 513 00:25:25,959 --> 00:25:27,250 weet je veel pijn, dat kan zijn. 514 00:25:27,250 --> 00:25:29,390 Maar mensen hebben gedaan het, en deed het zo goed, 515 00:25:29,390 --> 00:25:32,260 dat je niet hoeft te zorgen over het meer. 516 00:25:32,260 --> 00:25:35,180 >> Dan kunt u individuele zaken te voegen. 517 00:25:35,180 --> 00:25:38,110 Hash tables-- of woordenboeken niet bijzonder 518 00:25:38,110 --> 00:25:40,240 schelen wat je opslaan in hen. 519 00:25:40,240 --> 00:25:44,210 Dus als sommige inzendingen zijn nummers, en sommige inzendingen zijn lijsten, 520 00:25:44,210 --> 00:25:47,360 als sommige inzendingen zijn ook andere woordenboeken, en sommige inzendingen zijn strings, 521 00:25:47,360 --> 00:25:49,930 Python niet veel zorg. 522 00:25:49,930 --> 00:25:53,460 >> Nogmaals, als je erin verwacht een string en wat je terug te krijgen 523 00:25:53,460 --> 00:25:56,269 is een array, dat is jouw probleem. 524 00:25:56,269 --> 00:25:58,810 En misschien is het de schuld van degene dacht dat het was om dingen 525 00:25:58,810 --> 00:26:00,476 in het woordenboek, misschien was u. 526 00:26:00,476 --> 00:26:02,350 Als dat was iemand anders, hopelijk waren ze 527 00:26:02,350 --> 00:26:04,520 goed gedragen over wat ging in het woordenboek 528 00:26:04,520 --> 00:26:07,420 en geen valkuilen te verlaten voor u om te vallen. 529 00:26:07,420 --> 00:26:10,890 >> Maar de standaard functies geef je terug goed opgevoede dingen. 530 00:26:10,890 --> 00:26:13,500 Dus ze zeggen dat dit rendement terug een woordenboek van strijkers, 531 00:26:13,500 --> 00:26:15,860 dan alles wat je gaat om eruit te komen van een string. 532 00:26:15,860 --> 00:26:20,710 Als je een deel van dit doen en het reizen je, nou, dat zou kunnen zijn op je. 533 00:26:20,710 --> 00:26:25,542 Python geeft je zeker genoeg touw om jezelf te hangen, als je wilt. 534 00:26:25,542 --> 00:26:28,250 Nu kunnen we individuele uitprinten elementen van deze en deze terug 535 00:26:28,250 --> 00:26:29,935 precies wat je zou verwachten. 536 00:26:29,935 --> 00:26:32,810 Precies wat je zou verwachten, denk ik, is een zin die ik gebruik veel, 537 00:26:32,810 --> 00:26:35,070 maar dat is min of minder hoe Python werkt. 538 00:26:35,070 --> 00:26:39,880 Als u vragen om een ​​ding dat niet is , zal Python gooien een fout 539 00:26:39,880 --> 00:26:43,194 en het zal je stoppen uit welk programma je in. 540 00:26:43,194 --> 00:26:45,360 Het zal eigenlijk uitprinten meer informatie dan dat, 541 00:26:45,360 --> 00:26:49,110 het zal wijzen u-- het zal voeg een lijn, en zo. 542 00:26:49,110 --> 00:26:52,190 >> En, nogmaals, misschien willen we om itereren over woordenboeken 543 00:26:52,190 --> 00:26:54,410 en vind alle dingen erin. 544 00:26:54,410 --> 00:26:57,440 Hier zijn we dan itereren twee dingen tegelijkertijd. 545 00:26:57,440 --> 00:27:03,040 En dus zullen we het doen met een sleutel, waarde, maar dan uitprinten al deze. 546 00:27:03,040 --> 00:27:06,300 >> En als we wilden cast-- als we eigenlijk dit liep, 547 00:27:06,300 --> 00:27:10,840 zouden we wat problemen, omdat hebben on-- toen we gingen met David, 548 00:27:10,840 --> 00:27:13,920 het kon niet add-- als we niet werp het eerste van een reeks, 549 00:27:13,920 --> 00:27:17,802 we konden niet toevoegen die array snaren op een string. 550 00:27:17,802 --> 00:27:19,760 Maar als we wierp het naar een touwtje, iets wat we krijgen 551 00:27:19,760 --> 00:27:22,590 als dit, dat is misschien wat we zouden willen lezen. 552 00:27:22,590 --> 00:27:27,000 553 00:27:27,000 --> 00:27:30,500 >> En dit is speller. 554 00:27:30,500 --> 00:27:32,460 We lezen in de dingen. 555 00:27:32,460 --> 00:27:35,770 Dus we kunnen lezen in individuele woorden als lijnen. 556 00:27:35,770 --> 00:27:38,240 We afhakken de laatste ding, dus dikke min 1 557 00:27:38,240 --> 00:27:41,651 chomps uit het laatste wat we-- het laatste teken van een string. 558 00:27:41,651 --> 00:27:42,150 We zullen zeggen. 559 00:27:42,150 --> 00:27:44,730 OK, elk van deze krijgt ingevoegd in dit woordenboek, 560 00:27:44,730 --> 00:27:45,810 mapping naar een waarde van 1. 561 00:27:45,810 --> 00:27:48,006 Wij doen niet bijzonder zorg over die ene, 562 00:27:48,006 --> 00:27:51,130 maar het is er gewoon te zeggen, ach, dit ding zal ik in het woordenboek gezet. 563 00:27:51,130 --> 00:27:53,182 Want later wat we gaan doen is dat we 564 00:27:53,182 --> 00:27:55,390 gaan zeggen, nou, als het het woordenboek helemaal. 565 00:27:55,390 --> 00:27:57,650 >> Nogmaals, deze controle voor lidmaatschap is up besturingssysteem 566 00:27:57,650 --> 00:28:00,940 met een heel ander algoritme dan zal het in een lijst 567 00:28:00,940 --> 00:28:05,709 maar wij noemen het op dezelfde manier, waarop is een aantal van die Python zoethoudertje 568 00:28:05,709 --> 00:28:07,250 dingen zodat ze gemakkelijker te gebruiken. 569 00:28:07,250 --> 00:28:10,230 En nogmaals, we hebben gezien dit soort dingen eerder. 570 00:28:10,230 --> 00:28:12,940 Dit is in principe vinden, of het is precies dezelfde syntax 571 00:28:12,940 --> 00:28:16,480 zoals, maar werkt op een volledig andere structuur. 572 00:28:16,480 --> 00:28:20,170 En we niet bijzonder schelen. 573 00:28:20,170 --> 00:28:25,540 Dus dat zijn de dingen die je werden gevraagd om uit te voeren voor de speller. 574 00:28:25,540 --> 00:28:29,278 In dit tempo gaan we krijgen min of meer al het psets gedaan. 575 00:28:29,278 --> 00:28:31,474 >> Publiek: Dus dat eigenlijk komt net terug 576 00:28:31,474 --> 00:28:34,852 als verkeerd gespeld als het niet overeenkomen met iets in het woordenboek? 577 00:28:34,852 --> 00:28:36,060 ROSS RHEINGANS-YOO: Ja, ja. 578 00:28:36,060 --> 00:28:38,964 579 00:28:38,964 --> 00:28:40,880 En ja, dit is een aanpassing van een Probleemverzameling 580 00:28:40,880 --> 00:28:43,150 die vraagt ​​u om precies dat te doen. 581 00:28:43,150 --> 00:28:46,357 >> Publiek: Waarom is de lijn min 1 is er? 582 00:28:46,357 --> 00:28:48,190 ROSS RHEINGANS-YOO: So als je itereren 583 00:28:48,190 --> 00:28:50,300 over een bestand vraagt door lijnen, de lijnen 584 00:28:50,300 --> 00:28:53,900 komen met een nieuwe lijn karakter Aan het einde van de het-- minus 1 585 00:28:53,900 --> 00:28:55,260 is gewoon om te winkelen die af. 586 00:28:55,260 --> 00:28:59,549 Dit is een bijzonder flexibel manier van indexering in de dingen. 587 00:28:59,549 --> 00:29:01,590 Dus als je een string, en je zou willen, nou ik ben 588 00:29:01,590 --> 00:29:05,340 gaan om te beginnen bij de drie karakter en ik ga om te gaan tot het einde. 589 00:29:05,340 --> 00:29:07,140 3 colon zal dat voor u doen. 590 00:29:07,140 --> 00:29:10,570 Als je net als ik wil beginnen bij de begint en naar de laatste minus 1 591 00:29:10,570 --> 00:29:12,400 karakter, colon minus 1. 592 00:29:12,400 --> 00:29:14,940 En als je wilde gaan van de derde naar de min eerste, 593 00:29:14,940 --> 00:29:16,570 dan je zou zeggen 3 minus 1. 594 00:29:16,570 --> 00:29:19,464 595 00:29:19,464 --> 00:29:22,400 >> Bovendien, als u wilt indexeren in dingen te rekenen vanaf de achterkant, 596 00:29:22,400 --> 00:29:24,470 je gewoon index met minus cijfers. 597 00:29:24,470 --> 00:29:26,980 Omdat, waarbij C zou ontploffen of misschien 598 00:29:26,980 --> 00:29:31,090 voeden u andere geheugenproblemen je niet hoeft de toegang tot, hoor je kunt zeggen min 1 599 00:29:31,090 --> 00:29:34,104 betekent de laatste, maar 1 teken in een tekenreeks. 600 00:29:34,104 --> 00:29:36,950 601 00:29:36,950 --> 00:29:43,590 >> Modules zijn version-- zijn analogen bibliotheken in C 602 00:29:43,590 --> 00:29:45,119 en zijn nuttig voor een heleboel dingen. 603 00:29:45,119 --> 00:29:46,910 Een heleboel dingen die je zou willen doen in Python, 604 00:29:46,910 --> 00:29:50,040 Naast eenvoudige manipulatie van variabelen 605 00:29:50,040 --> 00:29:52,290 U wilt haak in de grotere bibliotheken met grotere 606 00:29:52,290 --> 00:29:55,910 interfaces en meer mogelijkheden voor interactie 607 00:29:55,910 --> 00:29:57,195 met andere delen van de wereld. 608 00:29:57,195 --> 00:29:58,910 sys is een van die met een bos van hulpmiddelen 609 00:29:58,910 --> 00:30:01,159 die bruikbaar zijn voor interactie het systeem zelf 610 00:30:01,159 --> 00:30:05,050 en zal importeren als import sys. 611 00:30:05,050 --> 00:30:07,820 >> Er is meer documentatie van dat, dat je hier zou kunnen gaan, 612 00:30:07,820 --> 00:30:11,490 of u kon vinden op Google door googlen Python sys. 613 00:30:11,490 --> 00:30:12,640 U typt in te voeren. 614 00:30:12,640 --> 00:30:15,140 De eerste schakel gaat worden de documentatie in Python 2, 615 00:30:15,140 --> 00:30:19,260 de tweede link gaat zijn de documentatie Python 3. 616 00:30:19,260 --> 00:30:24,830 >> En als we schreef een bestand dat leek zoals dit-- Als in het bijzonder, zijn we 617 00:30:24,830 --> 00:30:27,910 kijken die op command line argumenten, 618 00:30:27,910 --> 00:30:30,040 zoals we geleerd om zeer doen vroeg in deze klasse. 619 00:30:30,040 --> 00:30:32,190 Dat is niet moeilijk. Je kunt krijgen argv, 620 00:30:32,190 --> 00:30:34,565 dat is een van die dingen die wordt uitgevoerd door sys. 621 00:30:34,565 --> 00:30:37,210 Het is niet ingebouwd in de basispakket, maar nogmaals, je 622 00:30:37,210 --> 00:30:40,080 kan het uit te breiden door het importeren die functionaliteit van sys. 623 00:30:40,080 --> 00:30:41,090 U zult het sys noemen. 624 00:30:41,090 --> 00:30:42,611 boeiend. 625 00:30:42,611 --> 00:30:43,360 Hier is er argv. 626 00:30:43,360 --> 00:30:45,193 Er is eigenlijk geen argc in sys, omdat je 627 00:30:45,193 --> 00:30:47,880 kan het zo gemakkelijk door te bellen len. 628 00:30:47,880 --> 00:30:55,390 We vervolgens afgedrukt dat uit, dan hebben we liep op onze terminal echo-args.py. 629 00:30:55,390 --> 00:30:58,360 We krijgen weer een array, die is dit eerste argument. 630 00:30:58,360 --> 00:31:02,240 Nogmaals, dit is argv 0, hetgeen de de naam van de zaak, die werd genoemd. 631 00:31:02,240 --> 00:31:04,870 Als we noemden het met extra argumenten, zouden we hen terug. 632 00:31:04,870 --> 00:31:07,687 633 00:31:07,687 --> 00:31:09,770 Dit is een manier om command line argumenten. 634 00:31:09,770 --> 00:31:13,440 Als u wilt vlaggen waar je draaien bijzondere dingen op of override 635 00:31:13,440 --> 00:31:16,050 een bepaalde standaard, argparse is je vriend. 636 00:31:16,050 --> 00:31:21,550 En nogmaals je dat online aan python argparse bij Google. 637 00:31:21,550 --> 00:31:24,300 >> Er zijn een paar van nut modules die je jezelf met behulp 638 00:31:24,300 --> 00:31:27,630 en nogmaals, als je tijd doorbrengen van deze taal importeren jsons 639 00:31:27,630 --> 00:31:33,300 voor het lezen in en uit JSON bestanden, niet zo ingewikkeld. 640 00:31:33,300 --> 00:31:37,139 U opent een bestand, je json.load genoemd op dat bestand en je krijgt weer een ding. 641 00:31:37,139 --> 00:31:37,930 Wat is dat ding? 642 00:31:37,930 --> 00:31:40,329 Het is een JSON object. 643 00:31:40,329 --> 00:31:42,370 Waar dat json heeft array, de Python heeft arrays. 644 00:31:42,370 --> 00:31:44,420 Waar dat json heeft associatieve arrays, Python's 645 00:31:44,420 --> 00:31:48,810 woordenboeken, strijkers, en getallen, enzovoort. 646 00:31:48,810 --> 00:31:53,560 U wilt dumpen dat uit, je het openen van een nieuw bestand, je dump noemen, 647 00:31:53,560 --> 00:31:57,590 en belastingen en stort aan gaan in en uit de snaren. 648 00:31:57,590 --> 00:32:02,120 >> Ook krijgt augurk genoemd in principe hetzelfde interface. 649 00:32:02,120 --> 00:32:04,740 Het is iets handig als je dumpen Python objecten. 650 00:32:04,740 --> 00:32:08,370 Dus als je ooit hebt willen besparen een uitvoering van de huidige status 651 00:32:08,370 --> 00:32:11,930 van een variabele voor een toekomstige draaien van uw programma, 652 00:32:11,930 --> 00:32:14,740 augurk is Python's bibliotheek om dat te doen. 653 00:32:14,740 --> 00:32:19,140 >> Als je een soort van variabele die kunnen worden uitgeschreven 654 00:32:19,140 --> 00:32:21,990 zoals in woorden en tekens en bytes-- als dit woordenboek, 655 00:32:21,990 --> 00:32:24,230 we kunnen opschrijven, we zou het opschrijven als 656 00:32:24,230 --> 00:32:26,670 als een json object, dat was letterlijk deze karakters. 657 00:32:26,670 --> 00:32:29,420 En dan zou het erg makkelijk zijn voor een mens te openen up-- openstellen 658 00:32:29,420 --> 00:32:30,889 en lees het. 659 00:32:30,889 --> 00:32:33,180 Als we niet bijzonder zorg over de mens te lezen, 660 00:32:33,180 --> 00:32:38,490 We kunnen nog efficiënter verpakken in vormen die zich later kunnen worden uitgepakt 661 00:32:38,490 --> 00:32:42,860 of dat later zou worden opgeblazen. 662 00:32:42,860 --> 00:32:46,740 Daarbij bespaart 80% van de ruimte die uw objecten zou kunnen 663 00:32:46,740 --> 00:32:49,390 als u schreef ze handschrift. 664 00:32:49,390 --> 00:32:52,384 >> U belt augurk veel hetzelfde way-- dump, belasting, 665 00:32:52,384 --> 00:32:53,800 en dan krijg je je spullen terug. 666 00:32:53,800 --> 00:32:56,880 Dus als je zeer schrijven korte Python-programma's die 667 00:32:56,880 --> 00:32:59,952 wil de staat te redden, en dan lees ze later terug, dit soort dingen 668 00:32:59,952 --> 00:33:00,660 zijn je vrienden. 669 00:33:00,660 --> 00:33:02,640 Dat je kon heel ze gemakkelijk dumpen als JSON. 670 00:33:02,640 --> 00:33:04,550 Meeste Python objecten kunnen dumpen de JSON 671 00:33:04,550 --> 00:33:11,310 als er een hoop die structureel ze kunnen worden weergegeven op die manier. 672 00:33:11,310 --> 00:33:14,410 >> Dit zijn slechts het topje van de ijsberg op modules die nuttig zijn. 673 00:33:14,410 --> 00:33:19,510 Dus sys, os, multiprocessing, zijn soort elementaire werkpaarden voor zaken 674 00:33:19,510 --> 00:33:23,120 we nodig hebben om te communiceren met het bestandssysteem os., 675 00:33:23,120 --> 00:33:28,764 zoals os.isfile, os.isdirectory, os.makefile, dit zijn je vrienden. 676 00:33:28,764 --> 00:33:30,930 Als u wilt communiceren met een bepaald bestand 677 00:33:30,930 --> 00:33:32,190 json, augurk, csv. 678 00:33:32,190 --> 00:33:37,160 Als u wilt communiceren met web pagina's, de urllib voor het krijgen van http 679 00:33:37,160 --> 00:33:41,370 pagina's. bs4-- BeautifulSoup-- het is een prachtige parser voor html. 680 00:33:41,370 --> 00:33:47,047 Je loopt het op een html en je krijg deze geneste array object nu, 681 00:33:47,047 --> 00:33:49,630 die je dan kunt doorkruisen lookin, met als gewoon op zoek naar 682 00:33:49,630 --> 00:33:52,380 indien is in, die is fantastisch. 683 00:33:52,380 --> 00:33:55,920 >> Er is een heleboel pakketten voor running-- 684 00:33:55,920 --> 00:33:57,960 voor het doen van bijzonder mathy dingen. 685 00:33:57,960 --> 00:34:01,790 Dus als je wilt vermenigvuldigen, omkeren, transformeren matrices, 686 00:34:01,790 --> 00:34:05,690 numpy wordt gebruikt door mensen over de hele wereld voor. 687 00:34:05,690 --> 00:34:09,620 scipy is nog nuttiger instrumenten in die richting. 688 00:34:09,620 --> 00:34:13,980 sklearn-- machine learning, natuurlijke taalverwerking, 689 00:34:13,980 --> 00:34:17,880 super handig spul, krijgt geïmplementeerd in Python hele tijd. 690 00:34:17,880 --> 00:34:21,469 >> En nogmaals, duurt iets langer write-- sorry, 691 00:34:21,469 --> 00:34:26,199 duurt iets langer om te draaien, maar de reden dat de echte ingenieurs de neiging 692 00:34:26,199 --> 00:34:29,900 gebruik Python is omdat je de neiging om geblokkeerde op je schrijven van de code, vrij 693 00:34:29,900 --> 00:34:32,699 dan uw computer waarop de code. 694 00:34:32,699 --> 00:34:35,860 Dus als je gaat om een ​​schrijven programma, dat veel andere mensen 695 00:34:35,860 --> 00:34:37,699 gaat gebruiken altijd, zoals Linux, u 696 00:34:37,699 --> 00:34:41,900 kan het schrijven in C. Als u gaat een berekening motor schrijven, 697 00:34:41,900 --> 00:34:46,124 u in Python zou kunnen schrijven als je nodig om het te veranderen om de paar maanden. 698 00:34:46,124 --> 00:34:48,540 Sommige mensen zouden schrijven in C omdat ze als dat. 699 00:34:48,540 --> 00:34:51,100 700 00:34:51,100 --> 00:34:54,050 >> Dus hebben we import sys gezien als een manier om dingen 701 00:34:54,050 --> 00:34:57,070 het krijgen van de module in uw programma. 702 00:34:57,070 --> 00:35:00,370 U kunt ook importeren als een bijnaam, als je wilt. 703 00:35:00,370 --> 00:35:03,660 Weer multiprocessing is een pijn uittypen elke keer, dus importeren als mp 704 00:35:03,660 --> 00:35:05,900 en dan wanneer je gebruiken in het programma, 705 00:35:05,900 --> 00:35:09,732 je zult zeggen mp.process, of wat je hebt. 706 00:35:09,732 --> 00:35:12,670 Als u wilt importeren slechts één ding, 707 00:35:12,670 --> 00:35:19,450 dus urllib heeft een ding genaamd verzoek, dus je kunt gewoon importeren dat. 708 00:35:19,450 --> 00:35:22,610 Later, zul je niet inroepen als urllib.request, maar net als verzoek 709 00:35:22,610 --> 00:35:24,590 zelf. 710 00:35:24,590 --> 00:35:30,110 >> En je kunt alles importeren uit een module als je wilt. 711 00:35:30,110 --> 00:35:34,820 Dit is soms geen goede idea-- dit meestal niet een goed idee, eigenlijk. 712 00:35:34,820 --> 00:35:39,080 Omdat je very--, want als er iets in dat de module heeft een naam die u 713 00:35:39,080 --> 00:35:41,640 wilden ergens anders te gebruiken in het programma, kan je niet. 714 00:35:41,640 --> 00:35:44,127 >> En het is niet altijd duidelijk dat dat het geval is. 715 00:35:44,127 --> 00:35:46,460 Om ervoor te zorgen dat wat je deed was veilig, 716 00:35:46,460 --> 00:35:47,920 je moet openstellen de module en bekijk alle 717 00:35:47,920 --> 00:35:50,295 van de namen die eindigen in er-- alle functies, 718 00:35:50,295 --> 00:35:53,010 alle variabelen die leven in die module, 719 00:35:53,010 --> 00:35:57,040 want je brengt alle deze in uw lokale namespace. 720 00:35:57,040 --> 00:35:58,680 >> Dus mensen dit doen. 721 00:35:58,680 --> 00:36:01,322 Het wordt algemeen aanbevolen dat u dit niet doet. 722 00:36:01,322 --> 00:36:03,280 Maar mensen doen dit allemaal de tijd, omdat ze 723 00:36:03,280 --> 00:36:05,180 lui en wil niet uittypen mp. 724 00:36:05,180 --> 00:36:06,310 iets, ooit. 725 00:36:06,310 --> 00:36:09,560 726 00:36:09,560 --> 00:36:13,310 >> Al dat gepraat over modules breng me rond om een ​​kort gesprek 727 00:36:13,310 --> 00:36:15,930 hoe je programma's te ontwerpen in Python. 728 00:36:15,930 --> 00:36:19,860 De eerste stap is om te controleren om te zien of iemand anders heeft al het ding gedaan, 729 00:36:19,860 --> 00:36:22,160 of gedaan van 90% van het ding. 730 00:36:22,160 --> 00:36:26,010 De kans is groot dat ze waarschijnlijk, en je moet gaan krijgen hun ding en lopen dat. 731 00:36:26,010 --> 00:36:28,900 Of schrijf een wrapper eromheen aan te passen aan uw doel. 732 00:36:28,900 --> 00:36:31,250 Het is pas daarna over niet dat je dan zou 733 00:36:31,250 --> 00:36:35,529 gaan en write-- beginnen na te denken over hoe je dit ding met elkaar zou zetten. 734 00:36:35,529 --> 00:36:37,320 Er zijn veel dingen die er zijn, en dat is 735 00:36:37,320 --> 00:36:39,180 één van de meest bruikbare dingen over Python. 736 00:36:39,180 --> 00:36:40,930 Net als de taal elegant, de taal 737 00:36:40,930 --> 00:36:43,800 is gemakkelijk te gebruiken, maar ook omdat het is zo elegant en eenvoudig te gebruiken, 738 00:36:43,800 --> 00:36:47,420 mensen zijn met behulp van het voor een lange tijd en er is een heleboel dingen 739 00:36:47,420 --> 00:36:52,520 die er zijn dat u kunt harnas voor uw eigen gebruik. 740 00:36:52,520 --> 00:36:58,457 >> Dus de laatste regels van de Python is, iemand anders heeft al waarschijnlijk geschreven 741 00:36:58,457 --> 00:37:00,290 een module voor die, iemand anders heeft al 742 00:37:00,290 --> 00:37:02,980 waarschijnlijk geschreven een bibliotheek voor. 743 00:37:02,980 --> 00:37:06,579 Voordat u probeert om een ​​ding te doen, kijk om te zien of het wordt geïmplementeerd. 744 00:37:06,579 --> 00:37:07,370 Het is niet zo moeilijk. 745 00:37:07,370 --> 00:37:11,960 Alle modules die ik opgemaakt voorheen en misschien één uitzondering, 746 00:37:11,960 --> 00:37:15,220 vooraf geïnstalleerd op elke standaard Python installatie. 747 00:37:15,220 --> 00:37:17,769 En zo met een oproep tot importeren wat dan ook, je 748 00:37:17,769 --> 00:37:19,852 hebben al die functionaliteit binnen handbereik. 749 00:37:19,852 --> 00:37:24,660 750 00:37:24,660 --> 00:37:28,920 >> Beginnen te wrap up dit praten, er zijn een paar dingen 751 00:37:28,920 --> 00:37:32,770 dat ik vertrok als zwarte dozen en soort verdoezeld, 752 00:37:32,770 --> 00:37:37,217 en er is een paar witte leugens die ik heb verteld dat omwille van eerlijkheid, 753 00:37:37,217 --> 00:37:39,050 Ik zal in ieder geval punt hier, zelfs als ik zal niet 754 00:37:39,050 --> 00:37:43,980 go super diep in allemaal en hun technische uitleg. 755 00:37:43,980 --> 00:37:46,010 >> Veel van de dingen dat ik magie heb geroepen 756 00:37:46,010 --> 00:37:48,980 is wat andere mensen zouden noemen object georiënteerd programmeren. 757 00:37:48,980 --> 00:37:52,470 Dus er zijn veel things-- dus variabelen zijn zeer vaak niet 758 00:37:52,470 --> 00:37:56,540 eenvoudige bytes zit, geheugen, maar erg ingewikkeld 759 00:37:56,540 --> 00:38:01,910 objecten die intern hebben staat over de functies en veel 760 00:38:01,910 --> 00:38:05,570 van verborgen variabelen, veel verborgen functionaliteit die 761 00:38:05,570 --> 00:38:09,480 laat je ze om te zetten in strings, waarmee u itereren over hen. 762 00:38:09,480 --> 00:38:12,260 En als je writing-- en de reden dat zij 763 00:38:12,260 --> 00:38:15,710 hebben al deze rijke functionaliteit omdat de people-- 764 00:38:15,710 --> 00:38:17,740 De architecten van de language-- gegaan 765 00:38:17,740 --> 00:38:22,420 door en voor elke standaard object, zet in de functionaliteit 766 00:38:22,420 --> 00:38:26,970 te zeggen dat dit is hoe dit is hoe dit gaat werken 767 00:38:26,970 --> 00:38:28,470 als iemand wil herhalen over. 768 00:38:28,470 --> 00:38:31,240 >> Dus alles dat iemand zou kunnen misschien willen dan herhalen, 769 00:38:31,240 --> 00:38:34,529 logica heeft geschreven handmatig over hoe je bent 770 00:38:34,529 --> 00:38:36,070 verondersteld om itereren over dat object. 771 00:38:36,070 --> 00:38:40,274 Alles wat u eventueel zou willen gedumpt in een string is logisch geschreven. 772 00:38:40,274 --> 00:38:43,440 Dit is de functie die u bellen als Wilt u dit te dumpen naar een string. 773 00:38:43,440 --> 00:38:45,273 Dit is de reden waarom je kunt roepen len op de dingen, dit 774 00:38:45,273 --> 00:38:49,900 is de reden waarom u kunt bellen in, dit is Daarom kunt u bellen als in op alles 775 00:38:49,900 --> 00:38:53,490 dat je zou willen, omdat die allen dragen met hen 776 00:38:53,490 --> 00:38:55,380 de technische know-how om dat te doen. 777 00:38:55,380 --> 00:38:58,170 778 00:38:58,170 --> 00:39:00,432 >> Dit is iets dat ik ben super niet van plan in te gaan. 779 00:39:00,432 --> 00:39:03,140 Maar voor wat in de lijst is subtiel verschillend van C-stijl voor loops, 780 00:39:03,140 --> 00:39:06,160 en je kunt alles van op lezen internet als je geïnteresseerd bent. 781 00:39:06,160 --> 00:39:08,930 Er is een schaduwzijde voor alle van deze, die ik noemde, 782 00:39:08,930 --> 00:39:10,359 zodat er twee dingen. 783 00:39:10,359 --> 00:39:13,400 De eerste is dat dit object georiënteerde programmeren voegt veel overhead 784 00:39:13,400 --> 00:39:16,080 willekeurige dingen, dus je uiteindelijk met behulp van veel meer geheugen; 785 00:39:16,080 --> 00:39:18,640 je uiteindelijk met behulp van een beetje meer tijd dan je zou anders. 786 00:39:18,640 --> 00:39:21,300 De other-- maar hoe meer verraderlijke donkere kant aan deze 787 00:39:21,300 --> 00:39:24,047 is, als dingen gewoon doen als je ze wilt 788 00:39:24,047 --> 00:39:27,130 zonder dat u super hard na te denken of dit een int moet 789 00:39:27,130 --> 00:39:29,713 of dat er moet een vlotter, kan het zijn dat hier 790 00:39:29,713 --> 00:39:34,240 je een int te produceren, maar hier je denken, maar ze zullen het jammer always--, 791 00:39:34,240 --> 00:39:36,555 het zou hier kunnen zijn dat je een float produceren, 792 00:39:36,555 --> 00:39:39,430 maar als je naar het tweede deel van uw programma, je denken, 793 00:39:39,430 --> 00:39:41,150 oh goed, maar ze zullen altijd geef me een int. 794 00:39:41,150 --> 00:39:43,608 En als ze dat niet doen, is het mogelijk dat je ergens ingeklemd, 795 00:39:43,608 --> 00:39:47,600 als u probeert te gebruiken die voor het indexeren in een array, of wat dan ook. 796 00:39:47,600 --> 00:39:51,050 >> Zodat een van de echte nuttige dingen over C is 797 00:39:51,050 --> 00:39:54,219 het dwingt je om echt te denken harde voordat u any-- 798 00:39:54,219 --> 00:39:56,510 voordat u een variabele brengen in het leven, net als wat 799 00:39:56,510 --> 00:39:58,764 is het type van de variabele. 800 00:39:58,764 --> 00:40:00,680 En het gaat om dat type voor alle tijd. 801 00:40:00,680 --> 00:40:02,410 >> Dit is niet waar Python, en inderdaad, je 802 00:40:02,410 --> 00:40:04,740 can-- als je gewoon soort van gaan op het gehoor, 803 00:40:04,740 --> 00:40:07,690 en u een aantal beslissingen nemen een manier om op één plaats, 804 00:40:07,690 --> 00:40:09,870 en sommige beslissingen een manier in de andere plaats 805 00:40:09,870 --> 00:40:12,960 zonder dat genoeg spullen achter de scènes in de andere plaats 806 00:40:12,960 --> 00:40:16,170 om dingen goed te vangen, je kan een aantal zeer vreemde fouten krijgen. 807 00:40:16,170 --> 00:40:19,200 En het programma kan blijven draaien voor een zeer lange tijd, omdat het 808 00:40:19,200 --> 00:40:23,200 het doen van een hoop werk te zeggen, goed dit ding kan op deze manier werken, 809 00:40:23,200 --> 00:40:25,070 dus ik ga op die manier uit te voeren. 810 00:40:25,070 --> 00:40:30,300 >> En inderdaad, dat duwt doorsturen door middel van een heleboel kleine fouten 811 00:40:30,300 --> 00:40:33,260 betekent dat vaak wanneer een fout is eigenlijk slecht 812 00:40:33,260 --> 00:40:38,720 en je hoeft eigenlijk wil om het te repareren, het eindigt mijl away-- het programma 813 00:40:38,720 --> 00:40:41,780 eindigt stoppen mijl afstand vanaf het moment dat u uw fout had. 814 00:40:41,780 --> 00:40:46,590 En zo een ding dat we zouden willen programma's te maken, sometimes-- één ding 815 00:40:46,590 --> 00:40:48,910 dat we graag programma's te doen als we het debuggen 816 00:40:48,910 --> 00:40:54,160 is niet luid en niet erg snel wanneer er iets misgaat. 817 00:40:54,160 --> 00:40:55,510 >> Python is erg slecht op dat. 818 00:40:55,510 --> 00:40:58,820 Python is erg goed in het niet falende en rolling forward 819 00:40:58,820 --> 00:41:00,320 met onverwachte dingen. 820 00:41:00,320 --> 00:41:02,820 Dus dit is handig als je schrijft kleine programma's. 821 00:41:02,820 --> 00:41:07,110 Wanneer u ingewikkeld bugs het soms 822 00:41:07,110 --> 00:41:09,300 duurt lang om ze te plagen uit. 823 00:41:09,300 --> 00:41:12,210 >> Dus er is een donkere kant aan alle van deze, net als het werkt gewoon. 824 00:41:12,210 --> 00:41:13,860 Het werkt net als je zou verwachten dat het. 825 00:41:13,860 --> 00:41:18,320 Behalve dat wanneer dit niet gebeurt, kom je in een heel andere plaats 826 00:41:18,320 --> 00:41:21,530 en proberen te achterhalen waar Het was, dat je fout ging. 827 00:41:21,530 --> 00:41:25,180 >> Garbage collection is-- dus een ding dat je zal merken 828 00:41:25,180 --> 00:41:28,110 is dat een van deze dingen, die Ik heb in existence-- gebracht 829 00:41:28,110 --> 00:41:34,114 deze arrays, die woordenboeken, deze objecten, deze files-- nooit te bevrijden. 830 00:41:34,114 --> 00:41:36,030 Er was geen oproep tot vrij in een van deze toespraak. 831 00:41:36,030 --> 00:41:40,340 En dat was op de C-side, omdat wij nooit in die dingen. 832 00:41:40,340 --> 00:41:42,220 >> Maar in Python-kant, is er geen gratis. 833 00:41:42,220 --> 00:41:43,970 Dingen automatisch krijgen bevrijd wanneer Python 834 00:41:43,970 --> 00:41:45,386 denkt dat je niet op zoek naar hen. 835 00:41:45,386 --> 00:41:49,640 Het is echt goede dingen niet bevrijden die je zou nog steeds mogelijk zijn op zoek naar, 836 00:41:49,640 --> 00:41:54,262 maar dit betekent dat als je ga dit grote ding te wijzen, 837 00:41:54,262 --> 00:41:55,970 en je bent zoals, oh Ik ben klaar met het nu, 838 00:41:55,970 --> 00:42:00,360 het is moeilijk om te vertellen Python u klaar bent met het nu. 839 00:42:00,360 --> 00:42:02,986 >> Kunt u soms instellen die variabele voor niemand te zijn, 840 00:42:02,986 --> 00:42:05,110 en dan hoop dat uiteindelijk de garbage collector 841 00:42:05,110 --> 00:42:06,720 komt door en reinigt het uit. 842 00:42:06,720 --> 00:42:10,177 Maar nogmaals, je niet controle over dat. 843 00:42:10,177 --> 00:42:13,510 En een van de redenen dat mensen gebruik maken van C voor echt prestaties kritische dingen, 844 00:42:13,510 --> 00:42:16,570 is dit vermogen om echt weet wanneer het geheugen wordt toegewezen 845 00:42:16,570 --> 00:42:19,369 en wanneer het is bevrijd, en hebben veel controle over te zeggen, 846 00:42:19,369 --> 00:42:20,910 Ik gebruik geen herinnering meer dan ik nodig heb. 847 00:42:20,910 --> 00:42:23,632 Dat is iets dat Python is niet zo geweldig. 848 00:42:23,632 --> 00:42:25,090 Publiek: Mag ik je een vraag stellen? 849 00:42:25,090 --> 00:42:29,800 Wat heb je bedoelt met niet hard? 850 00:42:29,800 --> 00:42:32,070 >> ROSS RHEINGANS-YOO: Dus als er iets fout gaat 851 00:42:32,070 --> 00:42:34,950 en je bent in het debuggen mode, zou je heel vaak 852 00:42:34,950 --> 00:42:38,510 wilt dat uw programma om u te vertellen waar precies het is misgegaan, 853 00:42:38,510 --> 00:42:42,360 en niet gewoon rustig stoppen. 854 00:42:42,360 --> 00:42:45,085 Maar je zou eigenlijk te drukken uit allerlei informatie over 855 00:42:45,085 --> 00:42:46,972 zoals hier was dit. 856 00:42:46,972 --> 00:42:53,957 Dit gebeurde Als u afdrukt een wen-- als je het runnen van een web server-- 857 00:42:53,957 --> 00:42:55,390 >> PUBLIEK: [onverstaanbaar] 858 00:42:55,390 --> 00:42:59,800 >> ROSS RHEINGANS-YOO: Ja, als je draait een webserver, 859 00:42:59,800 --> 00:43:02,680 is het soms slecht als je bent altijd ontdoen van fouten, 860 00:43:02,680 --> 00:43:04,530 en je zegt, goed dat werkte niet. 861 00:43:04,530 --> 00:43:05,300 Ik ga om te stoppen. 862 00:43:05,300 --> 00:43:07,680 Ik ga gewoon negeren het en houden de hand is. 863 00:43:07,680 --> 00:43:11,260 Want dan kun je in honderden van deze fouten en niet zien. 864 00:43:11,260 --> 00:43:13,910 >> Het zou zeker nuttig zijn voor het debuggen doeleinden 865 00:43:13,910 --> 00:43:20,327 Als elke keer dat uw webserver maakte een fout, had je duurzaam verslagen van dat. 866 00:43:20,327 --> 00:43:22,910 Misschien heb je zelfs willen het programma om te stoppen, zodat die records 867 00:43:22,910 --> 00:43:25,471 Laat je niet bedolven onder dingen. 868 00:43:25,471 --> 00:43:26,970 Maar nogmaals, dat is in de debugging modus. 869 00:43:26,970 --> 00:43:31,280 >> Vaak in productiemodus, de wereld is een beetje anders. 870 00:43:31,280 --> 00:43:36,380 En in kleine scripts die ik ben actief, waarbij het ding dat ik zei te doen 871 00:43:36,380 --> 00:43:40,680 misschien maar een klein beetje af zijn van wat ik zou willen doen, 872 00:43:40,680 --> 00:43:44,010 Vervolgens soort duwen door fouten is iets wat je zou willen. 873 00:43:44,010 --> 00:43:49,410 En in die gevallen zeker Python verdient echt haar begint. 874 00:43:49,410 --> 00:43:54,617 >> Het laatste wat ik niet praten in dit-- dat ik niet over praten 875 00:43:54,617 --> 00:43:57,700 maar kan echt ergerlijke de eerste keer dat u een van deze fouten, 876 00:43:57,700 --> 00:44:00,491 en de tweede en derde en vierde keer dat je er een hebt deze fouten. 877 00:44:00,491 --> 00:44:03,490 Python, ik noemde die het gebruikt witte ruimte 878 00:44:03,490 --> 00:44:06,700 u welk niveau van inspringen vertellen en wat functioneel blok je in, 879 00:44:06,700 --> 00:44:08,840 behandelt tabbladen en ruimtes anders. 880 00:44:08,840 --> 00:44:12,780 Dus als je het tabblad meer dan vier, en dan de volgende regel heeft vier ruimtes, 881 00:44:12,780 --> 00:44:16,910 zelfs als ze verschijnen als hetzelfde bedrag in uw editor, 882 00:44:16,910 --> 00:44:20,160 Python hen niet behandelen hetzelfde. 883 00:44:20,160 --> 00:44:23,610 >> In feite, Python behandelt tabbladen en ruimtes zoals olie en water. 884 00:44:23,610 --> 00:44:25,050 Ze zijn gewoon verschillende dingen. 885 00:44:25,050 --> 00:44:27,264 Er is geen bepaalde lengte die een tab is, 886 00:44:27,264 --> 00:44:30,180 zodat het is niet als een tab is gelijk aan 8 ruimten, en dus zou je rond te krijgen 887 00:44:30,180 --> 00:44:30,860 op die manier. 888 00:44:30,860 --> 00:44:34,110 Zoals, wanneer het zegt, wat niveau van de witte ruimte Ik ben op, 889 00:44:34,110 --> 00:44:37,240 het eigenlijk zoekt een patroon van spaties en tabs. 890 00:44:37,240 --> 00:44:43,050 En ja, de beste manier om te gaan met deze is om altijd spaties hele tijd. 891 00:44:43,050 --> 00:44:47,510 >> En inderdaad, in het Cloud9 IDE en de CS50 IDE, 892 00:44:47,510 --> 00:44:50,610 uw Tab-toets inserts vier ruimten in plaats 893 00:44:50,610 --> 00:44:53,800 van een tabblad, dat is super handig. 894 00:44:53,800 --> 00:44:57,074 Hoewel nogmaals, als je een Python geschreven programma met tabs, dat zou fijn zijn, 895 00:44:57,074 --> 00:44:58,990 het is gewoon als iemand ging naar binnen en probeerde toe te voegen 896 00:44:58,990 --> 00:45:02,655 een enkele regel aan uw programma dat had vier ruimten voor elke tab, 897 00:45:02,655 --> 00:45:03,280 zou breken. 898 00:45:03,280 --> 00:45:07,800 En het zou een manier te breken dat is echt niet zichtbaar is. 899 00:45:07,800 --> 00:45:12,390 Hoewel de eigenlijke fout bericht dat het gooit 900 00:45:12,390 --> 00:45:15,610 heeft te maken met nieuwe inspringen hier niet te verwachten, 901 00:45:15,610 --> 00:45:18,700 of-- als het over streepje en het lijkt erop dat het verkeerd is, 902 00:45:18,700 --> 00:45:22,090 het is waarschijnlijk omdat is er een tab-ruimte probleem. 903 00:45:22,090 --> 00:45:24,154 Ze zijn nog steeds razend te debuggen. 904 00:45:24,154 --> 00:45:26,070 De grootste geheel dit gesprek, dat ik niet 905 00:45:26,070 --> 00:45:29,740 krijgen, want het is echt een ingewikkeld, subtiel onderwerp 906 00:45:29,740 --> 00:45:34,760 en die nodig zijn om eventuele doen was niet van de dingen die we tot nu toe gedaan, 907 00:45:34,760 --> 00:45:37,140 een concept genaamd tupels. 908 00:45:37,140 --> 00:45:41,280 Ze zijn er net als de arrays die je niet kunt wijzigen. 909 00:45:41,280 --> 00:45:44,700 Ze wennen all over the place, omdat ze zijn nuttig voor veel dingen 910 00:45:44,700 --> 00:45:46,300 die matrices zijn niet bruikbaar voor. 911 00:45:46,300 --> 00:45:49,890 >> Maar als je wilt om een ​​array te maken, en dan beloven de tolk die u 912 00:45:49,890 --> 00:45:53,140 nooit zal willen wijzigen dat thing-- In feite, als u wilt wijzigen, 913 00:45:53,140 --> 00:45:56,800 je zult een nieuwe met het nieuwe te maken waarden in het-- dat zijn tupels. 914 00:45:56,800 --> 00:45:58,800 In plaats van het produceren ze met vierkante haken, 915 00:45:58,800 --> 00:46:00,341 u ze produceren met ronde haken. 916 00:46:00,341 --> 00:46:05,074 Waarom je deze dingen zou gebruiken, is een beetje een kwestie. . 917 00:46:05,074 --> 00:46:06,990 Het enige ding dat ik zal zeggen dat je 918 00:46:06,990 --> 00:46:10,680 tupels kan als indices voor woordenboeken. 919 00:46:10,680 --> 00:46:15,010 Je kunt geen arrays gebruiken als indices voor woordenboeken. 920 00:46:15,010 --> 00:46:18,970 En waarom is, nogmaals, technische en Ik ben niet van plan te lopen in. 921 00:46:18,970 --> 00:46:23,140 >> De PSET die ik niet heb aangeraakt in dit gesprek is pset6. 922 00:46:23,140 --> 00:46:25,837 Dus hier is hoe je d ' implementeren a-- hier 923 00:46:25,837 --> 00:46:28,140 hoe je pset6 zou implementeren in Python. 924 00:46:28,140 --> 00:46:32,680 Met in het achterhoofd de Python ontwerp-cyclus, het eerste ding 925 00:46:32,680 --> 00:46:34,760 dat je doet als je bent schrijven van programma's is check 926 00:46:34,760 --> 00:46:38,030 om te zien of iemand het al heeft gedaan. 927 00:46:38,030 --> 00:46:42,152 >> In feite, als je wilt om serve-- Apache 50 928 00:46:42,152 --> 00:46:44,110 doet deze benadering, behalve dat het komt niet 929 00:46:44,110 --> 00:46:45,840 standaard geïnstalleerd op Linux machines. 930 00:46:45,840 --> 00:46:50,490 Python doet, en het python eenvoudige http-server doet ook. 931 00:46:50,490 --> 00:46:54,717 Als je ooit op een Linux-machine, of de Cloud9 IDE buiten CS50 932 00:46:54,717 --> 00:46:57,550 en je wilt deze stroom te dienen directory naar een bepaalde haven, 933 00:46:57,550 --> 00:47:04,610 python-m SimpleHTTPServer poort dient dat. 934 00:47:04,610 --> 00:47:07,190 U kunt ook importeren de eenvoudige http-server 935 00:47:07,190 --> 00:47:11,240 en het kreeg veel functionaliteit als je wilt het aanpassen, of wijzigen, 936 00:47:11,240 --> 00:47:15,860 of worden gerund het-- harnas aan run je eigen server diensten. 937 00:47:15,860 --> 00:47:18,032 >> Dus dat is Python in een notendop. 938 00:47:18,032 --> 00:47:20,280 En dit is CS50. 939 00:47:20,280 --> 00:47:21,980 Dank je. 940 00:47:21,980 --> 00:47:23,468