1 00:00:00,000 --> 00:00:05,426 2 00:00:05,426 --> 00:00:06,800 ROSS RHEINGANS-YOO: Ciao, sono Ross. 3 00:00:06,800 --> 00:00:08,570 E questo è un seminario CS50. 4 00:00:08,570 --> 00:00:12,100 Essa vi porterà dalla programmazione in C per la programmazione in Python. 5 00:00:12,100 --> 00:00:15,120 >> Python è un linguaggio di scripting. 6 00:00:15,120 --> 00:00:17,870 E 'in gran parte come C nella sintassi, anche se alcuni 7 00:00:17,870 --> 00:00:20,390 dei dettagli tecnici di come che la sintassi viene eseguito 8 00:00:20,390 --> 00:00:22,240 sono leggermente diversi. 9 00:00:22,240 --> 00:00:24,780 E 'meno potente di C in qualche modo. 10 00:00:24,780 --> 00:00:28,130 E 'meno espressivo per dove esattamente nel vostro computer 11 00:00:28,130 --> 00:00:30,030 memoria viene disposto, come viene disposto, 12 00:00:30,030 --> 00:00:32,030 quando diventa la libertà, e questo genere di cose. 13 00:00:32,030 --> 00:00:36,150 >> E 'più utile di C, in qualche modo, perché è più facile da programmare in. 14 00:00:36,150 --> 00:00:39,920 La lingua è, in una certa persone, più intuitivo. 15 00:00:39,920 --> 00:00:44,820 E davvero, l'obiettivo è per che sia più veloce per programmare 16 00:00:44,820 --> 00:00:46,490 e potenzialmente più lento da eseguire. 17 00:00:46,490 --> 00:00:48,198 >> Ora, se ci pensate la quantità di tempo 18 00:00:48,198 --> 00:00:50,514 hai speso per il vostro ultimo scrittura set problema 19 00:00:50,514 --> 00:00:52,430 il codice contro la quantità di tempo che passate 20 00:00:52,430 --> 00:00:55,310 sul vostro ultimo problema impostare l'esecuzione di codice, 21 00:00:55,310 --> 00:00:58,300 ci si immagina che la lingua che era due volte più veloce di scrivere, 22 00:00:58,300 --> 00:01:02,170 e due volte più lento per l'esecuzione, potrebbero un miglioramento rispetto C in qualche modo. 23 00:01:02,170 --> 00:01:05,730 Certo, quando si sta cercando di scrivere piccoli programmi di fare piccole cose, 24 00:01:05,730 --> 00:01:08,520 Python è un linguaggio utile di scelta. 25 00:01:08,520 --> 00:01:10,620 >> E alla fine di questa seminario, spero che 26 00:01:10,620 --> 00:01:12,950 essere in grado di rendere il scelta in progetti futuri 27 00:01:12,950 --> 00:01:17,710 su quale lingua è corretto da usare, non l'idea 28 00:01:17,710 --> 00:01:21,405 che una lingua è più correggere tutto il tempo. 29 00:01:21,405 --> 00:01:23,030 Un paio di cose su ciò che il seminario è. 30 00:01:23,030 --> 00:01:25,910 Questo seminario non intende insegnare Python da zero. 31 00:01:25,910 --> 00:01:28,310 Python è molto simile a C, e sto assumendo 32 00:01:28,310 --> 00:01:34,056 che sei uno studente CS50, o qualcuno con una familiarità simile con C. 33 00:01:34,056 --> 00:01:36,700 >> Se sei studente CS50 intorno problema set 6, 34 00:01:36,700 --> 00:01:38,866 Così avete vedere un sacco di cose in C, io ti do 35 00:01:38,866 --> 00:01:40,740 le principali differenze, e alcune delle cose 36 00:01:40,740 --> 00:01:42,840 che rendono Python diverso e speciale e utile, 37 00:01:42,840 --> 00:01:45,256 ma io non ho intenzione di andare per quello che un linguaggio di programmazione è 38 00:01:45,256 --> 00:01:46,920 e come scrivere programmi. 39 00:01:46,920 --> 00:01:49,820 Tuttavia, questo seminario insegnerà di scrivere un programmi Python 40 00:01:49,820 --> 00:01:52,310 se siete uno di quei pochi gruppi. 41 00:01:52,310 --> 00:01:54,820 Anche in questo caso vedremo come si implementa psets-- 42 00:01:54,820 --> 00:01:57,550 che dovrebbe essere 1-6 in Python-- e fornire puntatori 43 00:01:57,550 --> 00:02:00,322 a documentazione ufficiale per riferimento futuro. 44 00:02:00,322 --> 00:02:03,030 L'altra cosa che è importante su come viene assegnato questo discorso, 45 00:02:03,030 --> 00:02:05,360 il video sarà on-line, per gentile concessione di CS50, 46 00:02:05,360 --> 00:02:07,550 quindi non si dovrebbe sentire come è necessario prendere appunti. 47 00:02:07,550 --> 00:02:11,180 Si può sempre tornare indietro e guardare in un secondo momento come riferimento. 48 00:02:11,180 --> 00:02:13,340 Inoltre i vetrini sono disponibili in questo momento 49 00:02:13,340 --> 00:02:16,480 in questo sito, che dovrebbe condurremo fa un documento di Google. 50 00:02:16,480 --> 00:02:21,010 Si tratta di una versione leggermente abbreviata di quello che sto mostrando sullo schermo. 51 00:02:21,010 --> 00:02:24,850 >> Un avvertimento attento prima saltiamo in, Python 3 52 00:02:24,850 --> 00:02:26,700 è una lingua diversa da Python 2. 53 00:02:26,700 --> 00:02:30,020 Sembrano un sacco lo stesso; ci sono lievissime differenze tecniche 54 00:02:30,020 --> 00:02:32,530 che causerà programmi scritto in Python 2 55 00:02:32,530 --> 00:02:37,140 non poter essere eseguito in Python 3 ambiente. 56 00:02:37,140 --> 00:02:41,969 >> L'apparecchio è dotato di CS50 Python, di default che utilizza Python 2. 57 00:02:41,969 --> 00:02:44,010 È possibile controllare questo digitare la riga di comando 58 00:02:44,010 --> 00:02:51,310 python --version, che dovrebbe uscita 2.7.6 sull'apparecchio corrente. 59 00:02:51,310 --> 00:02:53,580 Prova Python 3, che fa lavorare nell'apparecchio, 60 00:02:53,580 --> 00:02:58,500 se default Python a 2.X.Y, sia su l'apparecchio o sui tuoi proprie macchine. 61 00:02:58,500 --> 00:03:03,730 È necessario sostituire Python 3 in qualsiasi momento in questo discorso che scrivo Python. 62 00:03:03,730 --> 00:03:05,760 Se la macchina è corsa 2 di default, tipo 63 00:03:05,760 --> 00:03:09,770 Python 3 per poter effettivamente seguire ed eseguire queste cose. 64 00:03:09,770 --> 00:03:12,280 >> Inoltre, ti segnalo te in risorse ufficiali ora. 65 00:03:12,280 --> 00:03:16,082 docs.python.org/3--~~V attento che questo è un 3 e non un 2-- 66 00:03:16,082 --> 00:03:17,030 ha riferimenti utili. 67 00:03:17,030 --> 00:03:19,280 Tutorial vi porterà attraverso gran parte delle stesse cose 68 00:03:19,280 --> 00:03:21,460 che sto facendo ora, se non in forma di testo. 69 00:03:21,460 --> 00:03:23,725 Riferimento è utile come riferimento per la lingua, 70 00:03:23,725 --> 00:03:26,100 e la libreria standard fornisce alcune delle estensioni 71 00:03:26,100 --> 00:03:27,770 con funzionalità aggiuntive. 72 00:03:27,770 --> 00:03:31,300 >> Quindi un primo programma Python. 73 00:03:31,300 --> 00:03:34,410 Sulla sinistra abbiamo serie C, sulla destra, abbiamo Python. 74 00:03:34,410 --> 00:03:36,780 Si potrebbe avere riconosciuto questo problema, è 75 00:03:36,780 --> 00:03:40,760 uno del primo problema mette in CS50, e questi 76 00:03:40,760 --> 00:03:42,677 risolverlo utilizzando la stessa soluzione. 77 00:03:42,677 --> 00:03:45,010 Ora, la ragione per cui siamo guardando queste affiancati 78 00:03:45,010 --> 00:03:46,830 è così possiamo guardare differenze sintattiche. 79 00:03:46,830 --> 00:03:49,580 Uno degli elefanti nella stanza che potreste aver notato destra 80 00:03:49,580 --> 00:03:56,350 fuori del blocco, è che Python non ha funzione principale d'involucro intorno al codice. 81 00:03:56,350 --> 00:03:59,170 Quindi, in C, si scrive un gruppo di file, è collegare insieme, 82 00:03:59,170 --> 00:04:02,590 e il programma inizia l'esecuzione in questa cosa chiamata int main. 83 00:04:02,590 --> 00:04:04,930 >> In Python, si scrive un si file, eseguire il file, 84 00:04:04,930 --> 00:04:07,882 il programma inizia l'esecuzione nella parte superiore del file. 85 00:04:07,882 --> 00:04:09,590 Così sta andando per iniziare nella parte superiore del fascicolo 86 00:04:09,590 --> 00:04:11,280 scendere fino a trovare qualcosa di diverso. 87 00:04:11,280 --> 00:04:14,440 Se trova una definizione di funzione, non sarà effettivamente eseguire quel codice, 88 00:04:14,440 --> 00:04:15,940 sarà semplicemente definire la funzione. 89 00:04:15,940 --> 00:04:18,459 Ma qui, quando la prima programma è n è uguale a 10, 90 00:04:18,459 --> 00:04:21,273 la prima cosa che questo programma farà è prendere questo valore di 10 91 00:04:21,273 --> 00:04:24,120 e metterlo in una variabile chiamata n. 92 00:04:24,120 --> 00:04:27,690 >> Parlando di quella linea, uno dei altro things-- sorry-- questo 93 00:04:27,690 --> 00:04:31,040 significa che i programmi C, bisogna scrivere di loro, 94 00:04:31,040 --> 00:04:34,899 ti farli, che sarà richiamare alcuni comandi Clang, 95 00:04:34,899 --> 00:04:36,690 e poi si incorrerà un risultante eseguibile. 96 00:04:36,690 --> 00:04:41,030 Programmi in Python, si esegue il testo file-- questo potrebbe mario.py 97 00:04:41,030 --> 00:04:44,900 essere questo file che ho appena mostrato you-- si incorrerà quel file 98 00:04:44,900 --> 00:04:47,450 e ti eseguire, e il contenuto di esso 99 00:04:47,450 --> 00:04:50,390 sarà eseguito dal l'interprete Python. 100 00:04:50,390 --> 00:04:52,470 È possibile farlo nel vostro IDE. 101 00:04:52,470 --> 00:05:02,260 >> Quindi, se ho un file Ciao, che ha semplicemente questi contenuti. 102 00:05:02,260 --> 00:05:04,840 Questo è in realtà Python 2, non Python 3, in modo da non fare 103 00:05:04,840 --> 00:05:06,600 preoccuparsi della sintassi per ora. 104 00:05:06,600 --> 00:05:14,230 Ma io corro Python, su hello.py, e funziona. 105 00:05:14,230 --> 00:05:18,890 >> Un altro modo che posso usare Python che Non voglio fare con così tanto in questo discorso, 106 00:05:18,890 --> 00:05:21,840 è se mi basta digitare Python, me gocce in un ambiente in cui 107 00:05:21,840 --> 00:05:24,370 Posso dargli da mangiare linea Python per riga. 108 00:05:24,370 --> 00:05:31,260 Così qui, se digito spazio stampa 'ciao, mondo'. 109 00:05:31,260 --> 00:05:32,360 Digitare entrare. 110 00:05:32,360 --> 00:05:37,430 Sarà sputare me che indietro i risultati quella linea individuale subito. 111 00:05:37,430 --> 00:05:38,470 >> Questo potrebbe essere utile. 112 00:05:38,470 --> 00:05:40,700 In questo discorso farò le cose su vetrini. 113 00:05:40,700 --> 00:05:43,940 E così sarete in grado di seguire lungo sia in qua, o scrivendo 114 00:05:43,940 --> 00:05:45,725 file effettivi e poi eseguirli. 115 00:05:45,725 --> 00:05:48,340 116 00:05:48,340 --> 00:05:50,995 >> Ma, tornando a questo codice, un'altra cosa 117 00:05:50,995 --> 00:05:53,230 che si potrebbe avere noticed-- bene, non c'è 118 00:05:53,230 --> 00:05:55,980 due cose che si potrebbe nota di questi blocchi. 119 00:05:55,980 --> 00:05:59,280 Il primo, un po 'più banale, è che il Python non ha virgola finale. 120 00:05:59,280 --> 00:06:02,630 >> Punto e virgola sono facoltativi ovunque e innocuo ovunque. 121 00:06:02,630 --> 00:06:03,722 È possibile aggiungerli. 122 00:06:03,722 --> 00:06:06,430 Si potrebbe rendere le persone che scrivono Python per una risatina vita a voi 123 00:06:06,430 --> 00:06:08,860 dietro la schiena, perché non sono necessarie. 124 00:06:08,860 --> 00:06:13,497 Sono spesso un segno di essere rinviato da C. I progettisti del linguaggio 125 00:06:13,497 --> 00:06:16,580 sento che è più chiaro in questo modo e che non è necessario dichiarare 126 00:06:16,580 --> 00:06:18,700 ogni volta che finisce una linea. 127 00:06:18,700 --> 00:06:21,799 >> Un'altra cosa strana di questo n è che non ha un tipo di allegato. 128 00:06:21,799 --> 00:06:24,590 Uno dei pezzi magici della Python-- e ho intenzione di chiamare la magia, 129 00:06:24,590 --> 00:06:26,381 ma ci sono molto ragioni tecniche per questo che 130 00:06:26,381 --> 00:06:28,560 works-- uno dei pezzi magici di Python 131 00:06:28,560 --> 00:06:32,700 è che le variabili possono espandersi o ridursi a contenere qualsiasi dato 132 00:06:32,700 --> 00:06:34,530 tipi di li vorrebbe. 133 00:06:34,530 --> 00:06:35,580 >> Quindi questo è un 10. 134 00:06:35,580 --> 00:06:40,060 Se poi giù ho assegnato a questo n 0.5, ci vorrebbe che 0.5. 135 00:06:40,060 --> 00:06:43,770 Non importa che si tratta di un int qui e galleggiare lì, tutto ciò che utilizza questo n 136 00:06:43,770 --> 00:06:47,057 sarà, più o meno, in grado di chug lungo se ottiene uno di quelli. 137 00:06:47,057 --> 00:06:49,640 A meno che non ci sia una vera e propria motivo per cui non è possibile utilizzare i dati 138 00:06:49,640 --> 00:06:52,170 tipo che n attualmente ha, a quel punto si otterrà 139 00:06:52,170 --> 00:06:54,490 incuneato e genera un errore, e questo genere di cose. 140 00:06:54,490 --> 00:06:57,050 >> Ma qui, Python in realtà non importa cosa 141 00:06:57,050 --> 00:06:59,140 è che ho intenzione di attaccare in questo frase, come, vuoi questa cosa? 142 00:06:59,140 --> 00:06:59,840 Questa cosa in questo? 143 00:06:59,840 --> 00:07:00,640 Sì, è una specie di una cosa. 144 00:07:00,640 --> 00:07:01,810 Mi atterrei esso alla fine. 145 00:07:01,810 --> 00:07:04,740 Sarà un problema in seguito, se qualcuno che vuole utilizzare tale fine 146 00:07:04,740 --> 00:07:05,710 non in grado di gestire. 147 00:07:05,710 --> 00:07:08,500 Questo è uno dei principali differenze tra Python e C 148 00:07:08,500 --> 00:07:10,790 che rende facile scrivere programmi molto grandi C 149 00:07:10,790 --> 00:07:15,120 e rende più facile scrivere molto piccolo programma Python. 150 00:07:15,120 --> 00:07:19,564 >> La sintassi non è molto diverso in ciò che fa. 151 00:07:19,564 --> 00:07:21,480 E 'un po' diverso nel modo in cui è espresso. 152 00:07:21,480 --> 00:07:25,370 Quindi questo è un molto, quello che viene chiamato Pythonic, modo di scriverlo. 153 00:07:25,370 --> 00:07:28,969 per la riga nella gamma (n), questo è il intervallo di numeri da 0 a n, 154 00:07:28,969 --> 00:07:31,010 incluso sul fondo ed esclusivo sulla parte superiore. 155 00:07:31,010 --> 00:07:34,790 Quindi è da 0 a n-1, che è esattamente ciò che il codice C sta facendo, 156 00:07:34,790 --> 00:07:38,690 tranne che è molto più facile a guardare, forse. 157 00:07:38,690 --> 00:07:42,710 >> Il blocco di riferimento è non partire da parentesi graffe, 158 00:07:42,710 --> 00:07:44,540 invece è impostato off per questo rientro. 159 00:07:44,540 --> 00:07:47,580 Quindi tutte queste linee sono quattro spazi più a destra, 160 00:07:47,580 --> 00:07:50,410 o come su di una larghezza elefante. 161 00:07:50,410 --> 00:07:54,570 E questi sono quelli che sono andando a essere eseguito in questo per. 162 00:07:54,570 --> 00:07:57,020 Se mi rovinare la dentellatura su questo e 163 00:07:57,020 --> 00:08:01,420 spingere quel stampa ritorna il rientro originale, 164 00:08:01,420 --> 00:08:04,320 che la stampa partirà il ciclo for. 165 00:08:04,320 --> 00:08:08,560 A differenza di C, dove ho effettivamente qui necessario spostare quella tutore chiuso intorno. 166 00:08:08,560 --> 00:08:11,820 >> Questo significa che non si ottiene errori che salta fuori di te, perché tu 167 00:08:11,820 --> 00:08:13,580 mettere un tutore nel posto sbagliato. 168 00:08:13,580 --> 00:08:16,460 Significa che si ottiene gli errori che salta fuori di te, perché tu 169 00:08:16,460 --> 00:08:17,620 frastagliata linea di un torto. 170 00:08:17,620 --> 00:08:19,290 Così rende rientranze super attento. 171 00:08:19,290 --> 00:08:22,123 Speriamo che si stavano super- attenti con il vostro rientro in ogni caso, 172 00:08:22,123 --> 00:08:25,300 e quindi questo non è che molto di più di un peso. 173 00:08:25,300 --> 00:08:28,762 >> Ma una regola di base per Python, e avremo un paio di questi 174 00:08:28,762 --> 00:08:30,970 che andremo attraverso attraverso il corso del discorso, 175 00:08:30,970 --> 00:08:33,840 è cercare sintassi naturale prima di guardare nulla fino. 176 00:08:33,840 --> 00:08:37,610 Quindi questa sintassi, per questo numero nella gamma, 177 00:08:37,610 --> 00:08:41,460 è molto particolare in termini di stile. 178 00:08:41,460 --> 00:08:45,260 Un sacco di cose in Python vedremo l'assunzione di questo modulo. 179 00:08:45,260 --> 00:08:47,420 >> E così, se si arriva con un nuovo oggetto che si 180 00:08:47,420 --> 00:08:50,870 che si dovrebbe essere in grado di iterare su questo, in questo formato, 181 00:08:50,870 --> 00:08:53,720 risulta probabilmente supporta quel formato. 182 00:08:53,720 --> 00:08:56,990 Non abbiamo intenzione di andare in profondità nel super- le ragioni tecniche per cui è vero. 183 00:08:56,990 --> 00:09:00,167 >> Ma è una intuizione utile avere quando ci si avvicina programmi Python, 184 00:09:00,167 --> 00:09:01,750 che questa cosa è solo andare a lavorare. 185 00:09:01,750 --> 00:09:03,020 Provalo. 186 00:09:03,020 --> 00:09:06,480 Avviare la riga di comando Interprete, vedere se funziona, 187 00:09:06,480 --> 00:09:09,827 andare avanti con le cose, prima di nemmeno bisogno di aprire Google e dire, 188 00:09:09,827 --> 00:09:11,660 qual è la sintassi per questo particolare cosa? 189 00:09:11,660 --> 00:09:14,740 Un sacco di Python POTRESTE scoprire solo provando. 190 00:09:14,740 --> 00:09:19,005 >> Questo se è ancora più simile C poi le fors sono. 191 00:09:19,005 --> 00:09:20,380 Si noti che non ci sono parentesi. 192 00:09:20,380 --> 00:09:23,490 Le parentesi sono, ancora una volta, innocuo ma inutile. 193 00:09:23,490 --> 00:09:25,750 C'è un due punti alla fine proprio come il ciclo for, 194 00:09:25,750 --> 00:09:30,800 e ancora, i relativi blocchi sono rientrato piuttosto che partire da parentesi graffe. 195 00:09:30,800 --> 00:09:33,080 Questo altro è in originale livello di rientro, 196 00:09:33,080 --> 00:09:35,930 e il suo blocco relativo rientrato di nuovo. 197 00:09:35,930 --> 00:09:41,720 Coloro che opera esattamente come in C. 198 00:09:41,720 --> 00:09:44,520 >> Questo è in realtà molto simile. 199 00:09:44,520 --> 00:09:49,430 Anche in questo caso, di stampa perde un carattere off di printf Si passa alcune stringhe. 200 00:09:49,430 --> 00:09:51,520 Si scopre stringhe può essere sia delimitato 201 00:09:51,520 --> 00:09:53,562 da apici o doppi apici. 202 00:09:53,562 --> 00:09:55,270 Non c'è alcuna differenza, tranne che dentro 203 00:09:55,270 --> 00:09:57,722 di apici singoli è possibile utilizzare virgolette con abbandono, 204 00:09:57,722 --> 00:09:59,430 anziché dover sfuggire tutti. 205 00:09:59,430 --> 00:10:01,480 E dentro di virgolette, si è possibile utilizzare le virgolette singole con abbandono 206 00:10:01,480 --> 00:10:02,420 senza dover sfuggire loro. 207 00:10:02,420 --> 00:10:04,253 Se si voleva mescolare loro, si può certamente 208 00:10:04,253 --> 00:10:06,100 cercare on-line come fare. 209 00:10:06,100 --> 00:10:09,581 >> Noterete che qui, Ho passato in fine = questa cosa. 210 00:10:09,581 --> 00:10:12,580 Questo è un esempio di un optional argomento, che è una di quelle cose 211 00:10:12,580 --> 00:10:14,990 che Python supporta tale lo rende molto utile. 212 00:10:14,990 --> 00:10:18,240 Così la stampa ha in realtà un sacco di argomenti, che sono di solito 213 00:10:18,240 --> 00:10:20,140 impostare ai valori predefiniti valore, ma qui ho 214 00:10:20,140 --> 00:10:21,924 ha deciso di ignorare quello chiamato finale. 215 00:10:21,924 --> 00:10:24,340 La ragione per cui ho da sostituire con una stringa vuota 216 00:10:24,340 --> 00:10:26,756 è che la stampa in Python, per di default, stampa una nuova linea 217 00:10:26,756 --> 00:10:28,630 dopo la cosa che hai detto anche tu. 218 00:10:28,630 --> 00:10:31,462 >> Quindi questo hash è in realtà sta per stampare una hash in una nuova linea. 219 00:10:31,462 --> 00:10:34,670 E se io non voglio di hash per stampare una nuova riga dopo, poi devo dire 220 00:10:34,670 --> 00:10:35,340 non stampare uno. 221 00:10:35,340 --> 00:10:37,980 222 00:10:37,980 --> 00:10:43,690 Ma, eppure così, quella ultima cosa che questo programma non è presente che si ha è 223 00:10:43,690 --> 00:10:44,960 un include in alto. 224 00:10:44,960 --> 00:10:48,120 Stampa viene cotto in Python così fondamentalmente che non c'è nessuna intestazione o modulo 225 00:10:48,120 --> 00:10:49,869 che è necessario includere, ma se voleva 226 00:10:49,869 --> 00:10:52,029 includere altre cose in uno script Python, 227 00:10:52,029 --> 00:10:55,320 Lo farei in un format-- molto simile le parole sono solo leggermente diversi. 228 00:10:55,320 --> 00:10:58,840 229 00:10:58,840 --> 00:11:01,360 >> Ho detto che ci non hanno bisogno di un principale qui, 230 00:11:01,360 --> 00:11:03,372 perché il Python inizia esecuzione in alto. 231 00:11:03,372 --> 00:11:05,080 Se avessi voluto avvolgere questo in funzione, I 232 00:11:05,080 --> 00:11:07,667 lo farei come mi questo-- direbbe def nome della funzione, 233 00:11:07,667 --> 00:11:10,500 argomenti potrebbe andare qui e faremo vedere alcuni di quelli più tardi, i due punti, 234 00:11:10,500 --> 00:11:13,040 e poi di nuovo, questo intero blocco partire 235 00:11:13,040 --> 00:11:16,810 è ciò che è il operativa bloccare per quella funzione. 236 00:11:16,810 --> 00:11:18,560 Quindi questa è la definizione della funzione. 237 00:11:18,560 --> 00:11:21,587 E c'è una dichiarazione, poi giù qui, posso solo chiamare la funzione. 238 00:11:21,587 --> 00:11:23,920 E ancora, il programma interprete, partendo dall'alto, 239 00:11:23,920 --> 00:11:25,280 vedrà questa è la definizione. 240 00:11:25,280 --> 00:11:27,960 Non eseguirà questo fino a quando non arrivare qui, e poi è come, oh 241 00:11:27,960 --> 00:11:30,860 ora hai chiamato, mi che dovrei eseguirlo. 242 00:11:30,860 --> 00:11:33,850 >> Una cosa che è molto comune per vedere in file Python, 243 00:11:33,850 --> 00:11:36,700 specialmente i file Python che vengono rilasciati al pubblico 244 00:11:36,700 --> 00:11:41,650 e sviluppato per-- e sviluppato e mantenuto, è qualcosa di questo modulo. 245 00:11:41,650 --> 00:11:44,540 Questo è così perché basically-- Python, si avvia al top 246 00:11:44,540 --> 00:11:50,310 e poi si esegue fino in fondo, Io se ho appena avuto Mario chiamato qui, 247 00:11:50,310 --> 00:11:54,190 allora ogni volta ho inserito il file in un altro file, perché volevo usare 248 00:11:54,190 --> 00:11:58,580 è funzione di Mario, che altro file sarebbe hanno anche questa chiamata a Mario in esso. 249 00:11:58,580 --> 00:12:01,000 E quando mi sono imbattuto quel file, si chiamerebbe Mario. 250 00:12:01,000 --> 00:12:04,520 >> Quindi è possibile che io solo desidera eseguire questo se ho effettivamente 251 00:12:04,520 --> 00:12:07,290 eseguito questo particolare file. 252 00:12:07,290 --> 00:12:11,520 E così posso avvolgere questo in un idioma come questo, dove dico io, 253 00:12:11,520 --> 00:12:14,820 Se il nome di questa esecuzione ambiente è il principale, 254 00:12:14,820 --> 00:12:16,200 poi voglio fare queste cose. 255 00:12:16,200 --> 00:12:18,710 In caso contrario, qualcun altro può use-- includono mia function-- 256 00:12:18,710 --> 00:12:22,510 il mio file, e solo per ottenere accesso a queste funzioni 257 00:12:22,510 --> 00:12:25,552 senza dover eseguire le cose che voglio eseguire in questo file. 258 00:12:25,552 --> 00:12:27,260 Questo è, di nuovo, opzionale ma molto comune. 259 00:12:27,260 --> 00:12:30,450 260 00:12:30,450 --> 00:12:33,840 >> Queste cose sono entirely-- sono esattamente lo stesso tra C e Python, 261 00:12:33,840 --> 00:12:35,100 certamente in 3. 262 00:12:35,100 --> 00:12:38,610 Penso che in 2, l'operatore di divisione a volte ti dà indietro quando galleggia 263 00:12:38,610 --> 00:12:41,450 si operati int, e sia si voleva che o non ha fatto. 264 00:12:41,450 --> 00:12:44,777 Ma più, meno, e tempi lavorare esattamente come ci si aspetterebbe, 265 00:12:44,777 --> 00:12:46,110 tranne sopra un po 'di più tipi. 266 00:12:46,110 --> 00:12:49,740 Così è possibile moltiplicare galleggianti da int, e questo genere di cose. 267 00:12:49,740 --> 00:12:52,480 >> set funziona esattamente lo stesso. 268 00:12:52,480 --> 00:12:54,310 È possibile utilizzare due segni di uguale. 269 00:12:54,310 --> 00:12:59,000 inequals-- maggiore di, minore che, questo tipo di things-- 270 00:12:59,000 --> 00:13:02,580 hanno il significato che si ha familiarità con loro. 271 00:13:02,580 --> 00:13:05,770 >> Dove C utilizza questi operatori, Python usa un po 'più inglese 272 00:13:05,770 --> 00:13:06,390 quelli leggibili. 273 00:13:06,390 --> 00:13:09,348 Così, invece di due, e commerciali, è letteralmente digitare la parola "e", "o" 274 00:13:09,348 --> 00:13:10,740 o no." 275 00:13:10,740 --> 00:13:13,420 Come nella vostra se: nella vostra istruzioni condizionali, 276 00:13:13,420 --> 00:13:17,670 abbiamo visto in precedenza che questa sintassi in C corrisponde a questa sintassi in Python. 277 00:13:17,670 --> 00:13:21,010 E non c'è molto diverso lì, tranne per un po ' 278 00:13:21,010 --> 00:13:24,780 della punteggiatura intorno ai lati. 279 00:13:24,780 --> 00:13:28,890 Anche in questo caso, dove C sarebbe altro se, Python usa elif, 280 00:13:28,890 --> 00:13:33,960 ma questi sono principalmente variazioni di livello di superficie. 281 00:13:33,960 --> 00:13:38,450 >> Iterazione come questo è spesso scritto in questo linguaggio in Python. 282 00:13:38,450 --> 00:13:42,350 È possibile produrre questo tipo di cosa con un ciclo mentre all'esterno 283 00:13:42,350 --> 00:13:46,387 se si voleva, ma si certo non è necessario. 284 00:13:46,387 --> 00:13:48,970 E ancora, se si voleva la stampare elementi di un array 285 00:13:48,970 --> 00:13:50,560 si potrebbe fare in questo modo. 286 00:13:50,560 --> 00:13:52,927 Una delle cose divertenti su Python, però, 287 00:13:52,927 --> 00:13:54,760 è che non hai bisogno per utilizzare questo paradigma, 288 00:13:54,760 --> 00:13:57,290 ed è possibile utilizzare un uno un po 'più elegante. 289 00:13:57,290 --> 00:13:59,370 Lei dice una a Ary. 290 00:13:59,370 --> 00:14:02,980 >> Quindi, piuttosto che andare qui e traboccante gli indici, 291 00:14:02,980 --> 00:14:05,630 e poi tirando fuori singoli elementi, 292 00:14:05,630 --> 00:14:08,644 dite la realtà solo per a eseguire sugli elementi stessi. 293 00:14:08,644 --> 00:14:11,060 E poi quello che stai facendo dentro può operare direttamente 294 00:14:11,060 --> 00:14:13,260 sugli elementi, il che è abbastanza divertente. 295 00:14:13,260 --> 00:14:16,710 E noi see-- useremo ancora una volta che idioma 296 00:14:16,710 --> 00:14:18,050 mentre camminiamo tramite il codice. 297 00:14:18,050 --> 00:14:20,091 >> Questo è, di nuovo, un esempio di qualcosa che io 298 00:14:20,091 --> 00:14:23,300 chiamare Python magia, anche se ci sono ragioni molto tecnici perché funziona. 299 00:14:23,300 --> 00:14:26,340 E ci sono cose tecniche che bisogno di essere vero su array in ordine 300 00:14:26,340 --> 00:14:28,340 per questo al lavoro dietro le quinte. 301 00:14:28,340 --> 00:14:31,390 Il fatto è che la maggior parte dei tipi che ci si aspetterebbe a questo lavoro 302 00:14:31,390 --> 00:14:36,610 aver avuto questa implementato per nella lingua incorporato. 303 00:14:36,610 --> 00:14:40,030 >> Un'altra cosa che sarebbe bello se questo ha funzionato in tutte le lingue, 304 00:14:40,030 --> 00:14:45,460 ma ci sono alcune ragioni per le quali essa non può, stampare questa volte a corda questo numero. 305 00:14:45,460 --> 00:14:48,860 Risulta in Python, questo fa esattamente ciò che si desidera, che è solo divertimento, 306 00:14:48,860 --> 00:14:52,840 e significa che possiamo realmente ridurre questo programma, di nuovo mario.c. 307 00:14:52,840 --> 00:14:57,150 Piuttosto che l'iterazione molto, possiamo solo dire, voglio un po 'numero di spazi, 308 00:14:57,150 --> 00:15:01,120 Voglio che il numero di hash, e alcuni hash alla fine. 309 00:15:01,120 --> 00:15:02,640 E ancora, usiamo questo formato. 310 00:15:02,640 --> 00:15:05,340 >> Qui, stiamo passando a una variabile in questo modo. 311 00:15:05,340 --> 00:15:08,050 Ancora una volta, non abbiamo bisogno di dire il tipo di variabile è, 312 00:15:08,050 --> 00:15:11,322 e l'unica volta che faremo ottenere errori è in fase di esecuzione. 313 00:15:11,322 --> 00:15:13,030 Quando qualcuno cerca per passare a qualcosa, 314 00:15:13,030 --> 00:15:14,860 che sarà entrato in funzione proprio bene. 315 00:15:14,860 --> 00:15:18,240 Se cuneo qui perché questo non è il cosa che è possibile creare campi di sopra, 316 00:15:18,240 --> 00:15:22,100 Prendo un errore di runtime lì, e dovrò eseguire il debug in questo modo. 317 00:15:22,100 --> 00:15:25,050 Ma nel frattempo, non ho essere molto attenti a ciò che 318 00:15:25,050 --> 00:15:32,800 viene passato in, purché nel reale l'esecuzione, tutto funziona molto pulita. 319 00:15:32,800 --> 00:15:35,080 >> Potrei anche fare questo un po 'più pulito 320 00:15:35,080 --> 00:15:41,770 utilizzando una particolare funzione incorporata sulle stringhe, che si trova proprio Giustifica. 321 00:15:41,770 --> 00:15:45,250 Questa è solo una funzione utile in giro la biblioteca. 322 00:15:45,250 --> 00:15:47,660 E 'nella documentazione se si va a cercarla. 323 00:15:47,660 --> 00:15:51,650 E io dico, bene ho intenzione di avere questa stringa, un numero di hash, 324 00:15:51,650 --> 00:15:56,390 e vorrei giustificare destra pad it-- fuori con spazi da questa lunghezza. 325 00:15:56,390 --> 00:16:00,584 >> Di nuovo, questo è nella documentazione, che porta noi-- 326 00:16:00,584 --> 00:16:03,500 Io in realtà clic attraverso these-- che ci porta alla nostra seconda regola 327 00:16:03,500 --> 00:16:06,990 per libreria standard Python-- Metodi di funzione sono i tuoi amici. 328 00:16:06,990 --> 00:16:09,880 Ed è spesso vale la pena per andare alla ricerca di chissà 329 00:16:09,880 --> 00:16:12,310 se c'è una cosa che fa proprio questo. 330 00:16:12,310 --> 00:16:13,830 Probabilmente non c'è. 331 00:16:13,830 --> 00:16:15,990 Se desideri pad fuori una stringa, se aveste 332 00:16:15,990 --> 00:16:17,470 come a prendere la schiena mezzo di una stringa, se aveste 333 00:16:17,470 --> 00:16:20,370 come per la ricerca in una stringa, se ti piacerebbe distruggere un paio di cose 334 00:16:20,370 --> 00:16:22,420 insieme con una stringa con virgole tra loro, 335 00:16:22,420 --> 00:16:24,640 ci sono libreria standard funzioni per fare questo. 336 00:16:24,640 --> 00:16:27,190 >> E rende la vita più facile se li si usa 337 00:16:27,190 --> 00:16:29,240 invece di stendere tutto da soli 338 00:16:29,240 --> 00:16:31,650 in cinque righe di codice qui, cinque righe di codice qui. 339 00:16:31,650 --> 00:16:34,430 Che davvero dalle ore aggiungere fino a tempo reale. 340 00:16:34,430 --> 00:16:37,430 >> Una delle cose interessanti su come questo viene chiamato. 341 00:16:37,430 --> 00:16:39,980 Noterete che c'è una cosa puntino. 342 00:16:39,980 --> 00:16:43,490 Ho qualche oggetto sulla sinistra, e poi ho chiamato un punto di una funzione. 343 00:16:43,490 --> 00:16:49,780 Questo è uno dei paradigmi che Python utilizza per collegare i metodi agli oggetti. 344 00:16:49,780 --> 00:16:54,410 Parleremo di ciò che questo è molto brevemente alla fine, 345 00:16:54,410 --> 00:16:58,510 ma sappiamo che siamo in grado di operare su entrambi cose da prendere quel punto cosa dire 346 00:16:58,510 --> 00:17:01,690 qualunque, o chiamando una funzione che prende 347 00:17:01,690 --> 00:17:04,339 quell'oggetto e alcuni altri argomenti. 348 00:17:04,339 --> 00:17:07,450 >> Quindi questi sono due modi in cui cose vengono fatte in Python. 349 00:17:07,450 --> 00:17:09,780 E se un determinato funzionalità viene implementata 350 00:17:09,780 --> 00:17:14,230 in questo stile o questo lo stile è qualcosa che si 351 00:17:14,230 --> 00:17:19,990 dovrebbe guardare fino a quando si ottiene un blocco per il quale si è probabile cadere. 352 00:17:19,990 --> 00:17:22,660 C'è una più o meno coesa La filosofia dietro Python 353 00:17:22,660 --> 00:17:24,930 che si assorbono la maggior parte scrivendo un sacco di esso. 354 00:17:24,930 --> 00:17:28,190 Ad un certo punto, che uno di questi qualcosa sarà attuato come 355 00:17:28,190 --> 00:17:29,470 diventa naturale. 356 00:17:29,470 --> 00:17:32,420 Per ora, è solo qualcosa si impara come capire 357 00:17:32,420 --> 00:17:34,140 ogni singola cosa. 358 00:17:34,140 --> 00:17:36,420 >> Biblioteca così standard funzioni sono i tuoi amici, 359 00:17:36,420 --> 00:17:41,320 e ci hanno permesso di scrivere cose che assumere questo spazio davvero poco, 360 00:17:41,320 --> 00:17:42,040 davvero elegante. 361 00:17:42,040 --> 00:17:45,670 E questo è in realtà probabilmente più leggibile, direi, rispetto al programma C 362 00:17:45,670 --> 00:17:46,780 laggiù. 363 00:17:46,780 --> 00:17:49,730 Senza contare il fatto che è così breve è possibile montare un intero elefante 364 00:17:49,730 --> 00:17:52,250 nello spazio che abbiamo salvato. 365 00:17:52,250 --> 00:17:56,270 >> Un'altra cosa, questa è una implementazione di mario che è punto C, che a mio avviso 366 00:17:56,270 --> 00:17:57,890 è il più breve si può ottenere. 367 00:17:57,890 --> 00:18:00,757 Non ha il int get, ma essa codici duri il valore di 10 368 00:18:00,757 --> 00:18:02,090 allo stesso modo che questo si fa. 369 00:18:02,090 --> 00:18:06,080 Risulta che questo orologi in a 84 caratteri, mentre Python è 64. 370 00:18:06,080 --> 00:18:11,490 E questo è infinitamente più leggibile di questa immondizia qui. 371 00:18:11,490 --> 00:18:14,610 Così Python è più efficiente nello spazio. 372 00:18:14,610 --> 00:18:17,260 E 'un po' meno efficiente nel tempo, ma non di molto. 373 00:18:17,260 --> 00:18:18,890 >> Le liste sono una cosa importante in Python. 374 00:18:18,890 --> 00:18:21,540 375 00:18:21,540 --> 00:18:24,587 Non abbiamo visto loro, ma operare proprio come gli array fanno in C. 376 00:18:24,587 --> 00:18:27,170 Così qui, li si può dichiarare, è possibile passare in una cosa. 377 00:18:27,170 --> 00:18:29,810 Ora piazze detiene un array di queste cose. 378 00:18:29,810 --> 00:18:33,480 Ancora una volta, non abbiamo dichiarato come tipo, ma se mai proviamo ad usarlo, 379 00:18:33,480 --> 00:18:36,260 tutto ciò che ci si aspetterebbe di lavorare su un array di interi 380 00:18:36,260 --> 00:18:40,130 è andare a lavorare su un array di interi. 381 00:18:40,130 --> 00:18:42,030 >> Questa è una cosa che assolutamente non è possibile 382 00:18:42,030 --> 00:18:47,390 fare in C, perché la la memoria è così mani, 383 00:18:47,390 --> 00:18:48,950 ma è molto facile da fare in Python. 384 00:18:48,950 --> 00:18:55,310 Se voglio il mio allineamento di essere più grande, non posso aggiungere un elemento ad esso e va bene. 385 00:18:55,310 --> 00:18:57,150 >> Cosa sta succedendo dietro le quinte? 386 00:18:57,150 --> 00:18:59,150 L'interprete andrà fuori e ottenere un po 'di memoria, 387 00:18:59,150 --> 00:19:00,860 e forse otterrà un po 'di memoria extra, 388 00:19:00,860 --> 00:19:03,090 quindi non così non ho a realloc ogni volta. 389 00:19:03,090 --> 00:19:04,897 Ma quanto hanno più memoria ha bisogno? 390 00:19:04,897 --> 00:19:06,730 Non sono decisioni che si deve fare, 391 00:19:06,730 --> 00:19:10,540 queste sono decisioni che i interprete sta per fare. 392 00:19:10,540 --> 00:19:12,270 >> Qui vediamo gamma possibile prendere due argomenti, 393 00:19:12,270 --> 00:19:16,430 ma è ancora in corso di essere inclusivo della parte superiore in modo da aggiungiamo 1 lì. 394 00:19:16,430 --> 00:19:21,970 Questo è un linguaggio, che è ancora più modo intelligente di scrivere cose come questa. 395 00:19:21,970 --> 00:19:25,980 Si chiama di lista, e qui quello che stiamo dicendo 396 00:19:25,980 --> 00:19:32,560 è che vorrei mettere in i al quadrato per ogni valore di i in questo intervallo. 397 00:19:32,560 --> 00:19:35,770 Questa cosa a destra potrebbe essere un altro array, e questa cosa a sinistra 398 00:19:35,770 --> 00:19:40,740 essere alcuna particolare funzione che avrebbe preso in i come una variabile 399 00:19:40,740 --> 00:19:42,250 e mi danno qualche risultato. 400 00:19:42,250 --> 00:19:43,480 >> Che cosa ho intenzione di fare è, Ho intenzione di costruire 401 00:19:43,480 --> 00:19:46,200 una matrice che è tutte queste cose per ogni valore in questo intervallo. 402 00:19:46,200 --> 00:19:48,960 403 00:19:48,960 --> 00:19:55,670 E questo è super elegante, super breve, ed è molto chiaro che cosa significa. 404 00:19:55,670 --> 00:19:59,190 Questo è uno dei things-- questo è ancora una volta, 405 00:19:59,190 --> 00:20:03,860 uno di-- molto emblematico della ragioni che la gente come Python. 406 00:20:03,860 --> 00:20:05,900 Se vi piace la programmazione in questo modo, poi Python 407 00:20:05,900 --> 00:20:07,830 è un linguaggio di come si potrebbe imparare. 408 00:20:07,830 --> 00:20:10,950 >> E ancora, ci sono tecniche ragioni per cui questo funziona. 409 00:20:10,950 --> 00:20:14,730 Ma per quanto ci riguarda, abbiamo più o meno non ci importa. 410 00:20:14,730 --> 00:20:18,500 >> Quindi, se si desidera stampare le liste, alcuni degli stessi linguaggi sono utili. 411 00:20:18,500 --> 00:20:20,940 Per i in questo intervallo, potremmo Indice attraverso tutte le cose 412 00:20:20,940 --> 00:20:23,140 e poi stamparli tutti fuori. 413 00:20:23,140 --> 00:20:24,650 E vedrai LEN qui. 414 00:20:24,650 --> 00:20:27,150 Se hai sempre voluto arrivare la lunghezza della matrice, che è 415 00:20:27,150 --> 00:20:31,150 molto facile in Python, è molto difficile in C. 416 00:20:31,150 --> 00:20:33,720 Questo sarebbe stampare esattamente quello che ci si aspetta. 417 00:20:33,720 --> 00:20:36,986 Potremmo anche, come abbiamo visto prima, iterare sugli elementi di matrice 418 00:20:36,986 --> 00:20:39,860 direttamente, e poi basta parlare di li, piuttosto che l'indice 419 00:20:39,860 --> 00:20:43,190 indietro nella matrice ogni volta. 420 00:20:43,190 --> 00:20:45,990 >> E questa è una cosa che si può fare. 421 00:20:45,990 --> 00:20:49,984 Quindi, in C, se chiedete qualcosa in questo modo, la stampa avrebbe detto, 422 00:20:49,984 --> 00:20:51,150 questo è un array di interi. 423 00:20:51,150 --> 00:20:53,456 Questo non è sicuramente un stringa, non riesco a stampare. 424 00:20:53,456 --> 00:20:54,830 Python più o meno non importa. 425 00:20:54,830 --> 00:20:57,496 E 'come, c'è un modo che io potrebbe trasformare questo in una stringa? 426 00:20:57,496 --> 00:20:58,500 Sì, lo farò. 427 00:20:58,500 --> 00:21:01,600 E quindi mi limiterò a stampare quello fuori. 428 00:21:01,600 --> 00:21:03,640 Ciò significa che è possibile fare le cose like-- questi 429 00:21:03,640 --> 00:21:06,530 sono il più delle parti dure di gioco di quindici anni, scritta 430 00:21:06,530 --> 00:21:08,930 molto brevemente in Python. 431 00:21:08,930 --> 00:21:11,320 >> Vedrete che non c'è un po 'di-- qui 432 00:21:11,320 --> 00:21:14,441 Ho gettato un intero in una stringa, e devo farlo manualmente. 433 00:21:14,441 --> 00:21:16,190 E ho intenzione di aggiungere ad un'altra stringa, 434 00:21:16,190 --> 00:21:17,590 o altrimenti Python si confonde. 435 00:21:17,590 --> 00:21:19,840 Ma se quando sei aggiungendo una stringa in un numero intero, 436 00:21:19,840 --> 00:21:22,630 Sono Suppongo che per ottenere un interi indietro o una stringa indietro? 437 00:21:22,630 --> 00:21:24,480 Ma ancora una volta, se si chiamare str su una cosa, 438 00:21:24,480 --> 00:21:27,240 e che poteva in ogni possibile mondo essere convertito in una stringa, 439 00:21:27,240 --> 00:21:30,390 probabilmente sarà convertito in una stringa. 440 00:21:30,390 --> 00:21:33,120 >> Qui, vediamo uso di lista annidata comprensione 441 00:21:33,120 --> 00:21:38,690 sulla sinistra, alcuni indicizzazione, che è esattamente come si sarebbe abituati, 442 00:21:38,690 --> 00:21:40,060 e alcuni stampare delle cose. 443 00:21:40,060 --> 00:21:42,560 Ancora una volta, abbiamo definito alcuni funzioni e noi li chiamiamo giù 444 00:21:42,560 --> 00:21:45,820 nel principale quando abbiamo effettivamente ottenere il file. 445 00:21:45,820 --> 00:21:52,004 ritorno funziona esattamente come si vorrebbe si aspettano di lavorare con C. Trova, 446 00:21:52,004 --> 00:21:54,420 possiamo impostare le cose come questo-- ecco di lista 447 00:21:54,420 --> 00:21:59,245 c'è un incarico a una variabile, e possiamo effettivamente fare ancora più facile. 448 00:21:59,245 --> 00:22:01,870 Non abbiamo bisogno di scrivere di ricerca, perché incorporato alla lingua 449 00:22:01,870 --> 00:22:04,230 è se questa cosa è in questo array. 450 00:22:04,230 --> 00:22:05,680 Restituisce vero, altrimenti restituisce false. 451 00:22:05,680 --> 00:22:08,830 Ecco, questo è l'interezza di find. 452 00:22:08,830 --> 00:22:12,230 >> L'insieme di sorta comporta chiamando sorta, 453 00:22:12,230 --> 00:22:15,462 che è-- ci sono implementazioni di questo costruito in alcune librerie C. 454 00:22:15,462 --> 00:22:17,170 Se vuoi questo sorta di all'indietro, è 455 00:22:17,170 --> 00:22:20,450 può ignorare questa facoltativa argomento al contrario con una vera. 456 00:22:20,450 --> 00:22:23,350 457 00:22:23,350 --> 00:22:27,860 E se si desidera ordinare su stringhe, che è costruito in pure. 458 00:22:27,860 --> 00:22:31,950 >> Quindi questo non è per dire queste sono cose che dovete fare ogni giorno, 459 00:22:31,950 --> 00:22:34,280 ma l'idea è che questo è la filosofia di Python, 460 00:22:34,280 --> 00:22:37,530 che tutte queste cose che hai una sorta di voglia di fare sono built-in. 461 00:22:37,530 --> 00:22:42,410 E la maggior parte funzioni standard, così sorta, lunghezza, qualunque cosa, 462 00:22:42,410 --> 00:22:44,380 sostenere l'input più logicamente sensato. 463 00:22:44,380 --> 00:22:49,020 Chiamate len su un array stesso modo chiamate len su una stringa. 464 00:22:49,020 --> 00:22:55,785 Si si multiply-- ordinare stringhe allo stesso modo si ordinano array. 465 00:22:55,785 --> 00:22:58,930 466 00:22:58,930 --> 00:23:00,740 >> La maggior parte delle funzioni standard che le persone costruiscono, 467 00:23:00,740 --> 00:23:03,000 e la maggior parte di terze parti biblioteche che le persone 468 00:23:03,000 --> 00:23:06,980 costruire, perché stanno emulando la progettazione della libreria standard, 469 00:23:06,980 --> 00:23:10,190 può essere chiamato su tutto ciò che sei come, perché non solo questo lavoro, 470 00:23:10,190 --> 00:23:12,800 in C. Più o meno, funzionerà in Python 471 00:23:12,800 --> 00:23:15,930 perché le persone lavorano dietro a figura ciò che una cosa è e quindi operare 472 00:23:15,930 --> 00:23:17,510 opportunamente su di esso. 473 00:23:17,510 --> 00:23:22,760 Quindi, di nuovo, background tecnico, ma rende la nostra vita più facile in quanto i programmatori. 474 00:23:22,760 --> 00:23:26,820 >> Quindi, ecco file di I / O. file di I / O ha un sacco di piccole cose che rendono complicato, 475 00:23:26,820 --> 00:23:29,890 e quindi non ci sono risorse on-line, ma in poche parole, 476 00:23:29,890 --> 00:23:33,010 si chiama aperto su un file nome con un tipo particolare. 477 00:23:33,010 --> 00:23:37,640 Ecco, questo è leggere, leggere e scrivere, scrivere o aggiungere. 478 00:23:37,640 --> 00:23:41,790 Hai letto un certo numero di personaggi fuori e si stampa quelli, 479 00:23:41,790 --> 00:23:42,595 si otterrà Ciao! 480 00:23:42,595 --> 00:23:43,970 Voglio dire, come questo file aveva Ciao! 481 00:23:43,970 --> 00:23:46,480 In esso, chiamata a leggere, e che cosa otterrete indietro 482 00:23:46,480 --> 00:23:49,520 è una stringa che ha tutti del resto della matrice, 483 00:23:49,520 --> 00:23:50,860 o tutto il resto del file. 484 00:23:50,860 --> 00:23:53,805 485 00:23:53,805 --> 00:23:56,055 Se si chiama rileggere, sei alla fine del file, 486 00:23:56,055 --> 00:23:58,138 e così non si ottiene qualsiasi cosa e quindi dovrete chiudere. 487 00:23:58,138 --> 00:24:02,510 Di nuovo, questo è .close anziché chiudere il file, come sarebbe in C. 488 00:24:02,510 --> 00:24:07,190 Questo è più o meno perché f è un cosa, e vuoi per f per chiudere. 489 00:24:07,190 --> 00:24:12,092 Ma file di base I / O non è particolarmente complicato. 490 00:24:12,092 --> 00:24:15,300 Anche in questo caso, se si desidera aprire un file, se ti piacerebbe leggere una riga particolare, 491 00:24:15,300 --> 00:24:17,870 si può uscire di particolare line-- c'è built-in per questo. 492 00:24:17,870 --> 00:24:19,995 Se si desidera scrivere un cosa, è possibile scrivere questo. 493 00:24:19,995 --> 00:24:23,412 Se desideri scrivere individuale morsi, è possibile scrivere quelle. 494 00:24:23,412 --> 00:24:25,620 E se si desidera iterare sulle linee di un file 495 00:24:25,620 --> 00:24:29,557 individualmente, come abbiamo fatto in un pezzo da qualche settimana fa, si può fare questo a. 496 00:24:29,557 --> 00:24:32,140 Ancora una volta, la maggior parte degli oggetti che ti sentiresti vuole essere in grado di iterare 497 00:24:32,140 --> 00:24:33,780 supporto iterazione su di loro. 498 00:24:33,780 --> 00:24:37,430 In Pitoni, un file è forse una cosa che Mi piacerebbe per scorrere riga per riga. 499 00:24:37,430 --> 00:24:39,138 Se fosse un dizionario delle parole e sono stato 500 00:24:39,138 --> 00:24:42,181 cercando di ottenere quelle individuale parole fuori, quindi, all'interno di questo ciclo, 501 00:24:42,181 --> 00:24:44,180 linea che sta per essere ogni parola a turno e questo 502 00:24:44,180 --> 00:24:47,880 sta per essere giustiziato per ogni linea nel file fino alla fine del file. 503 00:24:47,880 --> 00:24:52,280 E ancora, se ho stampato ogni la linea, le linee sono dotati di nuove linee, 504 00:24:52,280 --> 00:24:54,740 così sto impostando la fine tornare a una cosa del genere. 505 00:24:54,740 --> 00:24:56,580 Poi mi piacerebbe avere il contenuto del mio file. 506 00:24:56,580 --> 00:25:03,610 507 00:25:03,610 --> 00:25:07,480 >> La seconda cosa che opera in per certi versi come le liste, e in qualche modo 508 00:25:07,480 --> 00:25:11,870 come qualcosa di sostanzialmente più potente, 509 00:25:11,870 --> 00:25:16,170 sono dizionari, che sono davvero freddo da usare, ma sono fondamentalmente hash 510 00:25:16,170 --> 00:25:17,670 tavoli sotto mentite spoglie. 511 00:25:17,670 --> 00:25:23,330 Si crea uno utilizzando esattamente due personaggi, che è impressionante 512 00:25:23,330 --> 00:25:25,959 se si è tentato di implementare la tabella di hash per il set problema, 513 00:25:25,959 --> 00:25:27,250 si sa molto dolore che può essere. 514 00:25:27,250 --> 00:25:29,390 Ma le persone hanno fatto esso, e fatto così bene, 515 00:25:29,390 --> 00:25:32,260 che non c'è bisogno di preoccuparsi più. 516 00:25:32,260 --> 00:25:35,180 >> Quindi è possibile inserire cose individuali. 517 00:25:35,180 --> 00:25:38,110 Tables-- hash o dizionari fare non particolarmente 518 00:25:38,110 --> 00:25:40,240 importa quello che stai memorizzazione in loro. 519 00:25:40,240 --> 00:25:44,210 Quindi, se alcune voci sono numeri, e alcune voci sono liste, 520 00:25:44,210 --> 00:25:47,360 se alcune voci sono altri dizionari, e alcune voci sono stringhe, 521 00:25:47,360 --> 00:25:49,930 Python non fa molta cura. 522 00:25:49,930 --> 00:25:53,460 >> Anche in questo caso, se si va in esso aspettavo una stringa e quello che si ottiene indietro 523 00:25:53,460 --> 00:25:56,269 è un array, che è il tuo problema. 524 00:25:56,269 --> 00:25:58,810 E forse è colpa di chi pensano che stava mettendo le cose 525 00:25:58,810 --> 00:26:00,476 nel dizionario, forse eri tu. 526 00:26:00,476 --> 00:26:02,350 Se questo era qualcuno altrimenti, si spera che erano 527 00:26:02,350 --> 00:26:04,520 ben educati su cosa stava andando nel dizionario 528 00:26:04,520 --> 00:26:07,420 e non ha lasciato alcun insidie per voi di cadere in. 529 00:26:07,420 --> 00:26:10,890 >> Ma le funzioni standard saranno dare indietro le cose ben educati. 530 00:26:10,890 --> 00:26:13,500 Così dicono questo restituisce sostenere un dizionario di stringhe, 531 00:26:13,500 --> 00:26:15,860 poi tutto si sta andando per uscire è una stringa. 532 00:26:15,860 --> 00:26:20,710 Se fate parte di questo e gite si, beh, che potrebbe essere su di voi. 533 00:26:20,710 --> 00:26:25,542 Python sicuramente ti dà abbastanza corda per impiccarti da solo, se vuoi. 534 00:26:25,542 --> 00:26:28,250 Ora siamo in grado di stampare individuale elementi di questo e questo restituisce 535 00:26:28,250 --> 00:26:29,935 esattamente ciò che vi aspettereste. 536 00:26:29,935 --> 00:26:32,810 Esattamente quello che ci si aspetterebbe, credo, è una frase che sto usando un sacco, 537 00:26:32,810 --> 00:26:35,070 ma questo è più o meno come funziona Python. 538 00:26:35,070 --> 00:26:39,880 Se chiedete una cosa che non è esso, Python buttare fuori un errore 539 00:26:39,880 --> 00:26:43,194 e si chiuderà fuori di qualunque programma che si trovavano in. 540 00:26:43,194 --> 00:26:45,360 Sarà realmente stampare maggiori informazioni rispetto a quelle, 541 00:26:45,360 --> 00:26:49,110 che sarà punto you-- Andrà aggiungere una linea, e così. 542 00:26:49,110 --> 00:26:52,190 >> E, ancora una volta, forse vogliamo per scorrere dizionari 543 00:26:52,190 --> 00:26:54,410 e trovare tutte le cose in esso. 544 00:26:54,410 --> 00:26:57,440 Qui stiamo iterare su due cose allo stesso tempo. 545 00:26:57,440 --> 00:27:03,040 E così lo faremo con una chiave, il valore, ma poi stampare tutti questi. 546 00:27:03,040 --> 00:27:06,300 >> E se volessimo cast-- se abbiamo effettivamente imbattuti questo, 547 00:27:06,300 --> 00:27:10,840 avremmo qualche problema perché on-- quando siamo andati in con David, 548 00:27:10,840 --> 00:27:13,920 non potrebbe add-- se non lo facessimo gettato in una stringa prima, 549 00:27:13,920 --> 00:27:17,802 non abbiamo potuto aggiungere che matrice di corde sui una stringa. 550 00:27:17,802 --> 00:27:19,760 Ma se abbiamo gettato in un stringa, otteniamo qualcosa 551 00:27:19,760 --> 00:27:22,590 come questo, che è forse quello che ci piacerebbe leggere. 552 00:27:22,590 --> 00:27:27,000 553 00:27:27,000 --> 00:27:30,500 >> E questo è correttore ortografico. 554 00:27:30,500 --> 00:27:32,460 Abbiamo appena letto nelle cose. 555 00:27:32,460 --> 00:27:35,770 Così possiamo leggere singole parole come linee. 556 00:27:35,770 --> 00:27:38,240 Abbiamo recidere l'ultimo cosa, quindi due punti meno 1 557 00:27:38,240 --> 00:27:41,651 Chomps fuori l'ultima cosa che we-- l'ultimo carattere di una stringa. 558 00:27:41,651 --> 00:27:42,150 Diremo. 559 00:27:42,150 --> 00:27:44,730 OK, ognuno di quelli ottiene inserito in questo dizionario, 560 00:27:44,730 --> 00:27:45,810 mappatura di un valore di 1. 561 00:27:45,810 --> 00:27:48,006 Noi non particolarmente preoccuparsi che uno, 562 00:27:48,006 --> 00:27:51,130 ma è solo lì per dire, vabbè, questa cosa mi metterò nel dizionario. 563 00:27:51,130 --> 00:27:53,182 Perché più tardi ciò che siamo intenzione di fare è che siamo 564 00:27:53,182 --> 00:27:55,390 per dire, beh, se è nel dizionario affatto. 565 00:27:55,390 --> 00:27:57,650 >> Ancora una volta, questo controllo per iscrizione è up operativo 566 00:27:57,650 --> 00:28:00,940 utilizzando un completamente diverso algoritmo di quello che sarà in un elenco, 567 00:28:00,940 --> 00:28:05,709 ma noi chiamiamo allo stesso modo, che è un po 'di quel rivestimento di zucchero Python 568 00:28:05,709 --> 00:28:07,250 le cose in modo che siano più facili da usare. 569 00:28:07,250 --> 00:28:10,230 E ancora, abbiamo visto cose come questa prima. 570 00:28:10,230 --> 00:28:12,940 Questo è fondamentalmente trovare, o è esattamente la stessa sintassi 571 00:28:12,940 --> 00:28:16,480 come trovare, ma è in funzione nel corso di un struttura completamente diversa. 572 00:28:16,480 --> 00:28:20,170 E noi non particolarmente a cuore. 573 00:28:20,170 --> 00:28:25,540 Così quelli sono le cose che si è stato chiesto di attuare per speller. 574 00:28:25,540 --> 00:28:29,278 Di questo passo, stiamo andando a ottenere più o meno tutti i pset fatto. 575 00:28:29,278 --> 00:28:31,474 >> PUBBLICO: In modo che fondamentalmente solo torna 576 00:28:31,474 --> 00:28:34,852 come erroneamente scritto se non lo fa abbinare qualcosa nel dizionario? 577 00:28:34,852 --> 00:28:36,060 ROSS RHEINGANS-YOO: Sì, sì. 578 00:28:36,060 --> 00:28:38,964 579 00:28:38,964 --> 00:28:40,880 Così, questo è un adattamento di un problema impostato 580 00:28:40,880 --> 00:28:43,150 che ti chiede di fare esattamente questo. 581 00:28:43,150 --> 00:28:46,357 >> PUBBLICO: Perché è la linea meno 1 lì? 582 00:28:46,357 --> 00:28:48,190 ROSS RHEINGANS-YOO: So quando sei iterazione 583 00:28:48,190 --> 00:28:50,300 su un file per chiedere da linee, le linee 584 00:28:50,300 --> 00:28:53,900 sono dotati di un carattere di nuova riga alla fine del it-- meno 1 585 00:28:53,900 --> 00:28:55,260 è solo per fare acquisti quelli fuori. 586 00:28:55,260 --> 00:28:59,549 E questo è particolarmente flessibile modo di indicizzare le cose. 587 00:28:59,549 --> 00:29:01,590 Quindi, se avete una stringa, e desideri, beh io sono 588 00:29:01,590 --> 00:29:05,340 intenzione di iniziare a carattere di tre e ho intenzione di andare fino in fondo. 589 00:29:05,340 --> 00:29:07,140 3 colon lo farà per voi. 590 00:29:07,140 --> 00:29:10,570 Se siete come, voglio iniziare a inizio e andare all'ultima meno 1 591 00:29:10,570 --> 00:29:12,400 carattere, due punti meno 1. 592 00:29:12,400 --> 00:29:14,940 E se si voleva andare da terza alla prima minus, 593 00:29:14,940 --> 00:29:16,570 allora avresti detto 3 meno 1. 594 00:29:16,570 --> 00:29:19,464 595 00:29:19,464 --> 00:29:22,400 >> Inoltre, se si desidera indicizzare nelle cose che contano dal retro, 596 00:29:22,400 --> 00:29:24,470 basta indice con i numeri meno. 597 00:29:24,470 --> 00:29:26,980 E perché, dove C sarebbe esplodere o forse 598 00:29:26,980 --> 00:29:31,090 si nutrire altro la memoria non aveste accesso a, sentirti può dire meno 1 599 00:29:31,090 --> 00:29:34,104 si intende l'ultimo, ma 1 carattere di una stringa. 600 00:29:34,104 --> 00:29:36,950 601 00:29:36,950 --> 00:29:43,590 >> I moduli sono version-- sono analoghi a librerie in C 602 00:29:43,590 --> 00:29:45,119 e sono utili per un sacco di cose. 603 00:29:45,119 --> 00:29:46,910 Un sacco di cose che ci si piace fare in Python, 604 00:29:46,910 --> 00:29:50,040 oltre semplice manipolazione di variabili, 605 00:29:50,040 --> 00:29:52,290 si vuole agganciare nel biblioteche più grandi con maggiore 606 00:29:52,290 --> 00:29:55,910 interfacce e altro capacità di interazione 607 00:29:55,910 --> 00:29:57,195 con altre parti del mondo. 608 00:29:57,195 --> 00:29:58,910 SYS è uno di quelli con una serie di tools 609 00:29:58,910 --> 00:30:01,159 che sono utili per interagire con il sistema stesso 610 00:30:01,159 --> 00:30:05,050 e sarà importarlo come import sys. 611 00:30:05,050 --> 00:30:07,820 >> C'è di più documentazione quello che si potrebbe andare qui, 612 00:30:07,820 --> 00:30:11,490 o si potrebbe trovare su Google googling sys Python. 613 00:30:11,490 --> 00:30:12,640 Si digita entra. 614 00:30:12,640 --> 00:30:15,140 Il primo collegamento sarà la documentazione in Python 2, 615 00:30:15,140 --> 00:30:19,260 il secondo link sta andando la documentazione di Python 3. 616 00:30:19,260 --> 00:30:24,830 >> E se abbiamo scritto fuori un file che sembrava come questo-- caso in particolare, siamo 617 00:30:24,830 --> 00:30:27,910 guardando operando su argomenti della riga di comando, 618 00:30:27,910 --> 00:30:30,040 come abbiamo imparato a fare molto nella fase iniziale in questa classe. 619 00:30:30,040 --> 00:30:32,190 Questo non è difficile. Si può uscire argv, 620 00:30:32,190 --> 00:30:34,565 che è una di quelle cose che viene realizzato tramite sys. 621 00:30:34,565 --> 00:30:37,210 Non è built-in per il pacchetto di base, ma ancora una volta, è 622 00:30:37,210 --> 00:30:40,080 può allungare importando tale funzionalità da sys. 623 00:30:40,080 --> 00:30:41,090 Ti chiami sys. 624 00:30:41,090 --> 00:30:42,611 qualunque. 625 00:30:42,611 --> 00:30:43,360 Qui c'è argv. 626 00:30:43,360 --> 00:30:45,193 Non c'è in realtà alcuna argc in sys, perché 627 00:30:45,193 --> 00:30:47,880 può ottenere così facilmente chiamando len. 628 00:30:47,880 --> 00:30:55,390 Abbiamo poi stampato che fuori, allora noi corse sulla nostra echo-args.py terminale. 629 00:30:55,390 --> 00:30:58,360 Torniamo un array, che è questo il primo argomento. 630 00:30:58,360 --> 00:31:02,240 Di nuovo, questo è argv 0, che è il il nome della cosa che ha chiamato. 631 00:31:02,240 --> 00:31:04,870 Se abbiamo chiamato con l'aggiunta di argomenti, ci saremmo quelli indietro. 632 00:31:04,870 --> 00:31:07,687 633 00:31:07,687 --> 00:31:09,770 Questo è un modo di ottenere argomenti della riga di comando. 634 00:31:09,770 --> 00:31:13,440 Se si desidera che le bandiere dove si svolta cose particolari su o sostituzione 635 00:31:13,440 --> 00:31:16,050 una particolare impostazione predefinita, argparse è tuo amico. 636 00:31:16,050 --> 00:31:21,550 E ancora una volta si scopre che in linea in pitone argparse a Google. 637 00:31:21,550 --> 00:31:24,300 >> Ci sono un paio di utility I moduli che si trovano da soli, usando 638 00:31:24,300 --> 00:31:27,630 e ancora una volta, se si spendono in qualsiasi momento di questo linguaggio importazione jsons 639 00:31:27,630 --> 00:31:33,300 per la lettura in e fuori di json file, non così complicato. 640 00:31:33,300 --> 00:31:37,139 Si apre un file, chiamato json.load su tale file e si ottiene indietro una cosa. 641 00:31:37,139 --> 00:31:37,930 Qual è quella cosa? 642 00:31:37,930 --> 00:31:40,329 Si tratta di un oggetto JSON. 643 00:31:40,329 --> 00:31:42,370 Se tale JSON ha matrice, il Python ha array. 644 00:31:42,370 --> 00:31:44,420 Se tale JSON ha array associativi, Python 645 00:31:44,420 --> 00:31:48,810 dizionari, stringhe, e numeri, e così via. 646 00:31:48,810 --> 00:31:53,560 Si desidera eseguire il dump che fuori, aprire un nuovo file, si chiama discarica, 647 00:31:53,560 --> 00:31:57,590 e carichi e discariche a andare dentro e fuori di stringhe. 648 00:31:57,590 --> 00:32:02,120 >> Allo stesso modo, salamoia viene chiamato in sostanza la stessa interfaccia. 649 00:32:02,120 --> 00:32:04,740 E 'un po' più utile se stai scarico oggetti Python. 650 00:32:04,740 --> 00:32:08,370 Quindi, se avete sempre voluto per salvare una versione dello stato attuale 651 00:32:08,370 --> 00:32:11,930 di una variabile per un futuro eseguire del vostro programma, 652 00:32:11,930 --> 00:32:14,740 pickle è Python libreria per farlo. 653 00:32:14,740 --> 00:32:19,140 >> Se avete qualsiasi tipo di variabile che può essere scritto fuori 654 00:32:19,140 --> 00:32:21,990 in parole come e personaggi e bytes-- come questo dizionario, 655 00:32:21,990 --> 00:32:24,230 potremmo scrivere in giù, noi potrebbe scriverlo come 656 00:32:24,230 --> 00:32:26,670 come un oggetto JSON, che era letteralmente questi personaggi. 657 00:32:26,670 --> 00:32:29,420 E allora sarebbe molto facile per un essere umano per aprirlo up-- aprire 658 00:32:29,420 --> 00:32:30,889 e leggerlo. 659 00:32:30,889 --> 00:32:33,180 Se non abbiamo particolarmente cura di esseri umani la lettura, 660 00:32:33,180 --> 00:32:38,490 potremmo pacchetto ancora più efficiente in forme che potrebbero poi essere spacchettato 661 00:32:38,490 --> 00:32:42,860 o che potrebbero in seguito essere gonfiati. 662 00:32:42,860 --> 00:32:46,740 E questo consente di risparmiare 80% del spazio che gli oggetti potrebbero 663 00:32:46,740 --> 00:32:49,390 prendere se li hai scritto fuori longhand. 664 00:32:49,390 --> 00:32:52,384 >> Si chiama sottaceto molto lo stesso way-- discarica, carico, 665 00:32:52,384 --> 00:32:53,800 e poi si arriva tue cose indietro. 666 00:32:53,800 --> 00:32:56,880 Quindi, se si sta scrivendo molto programmi Python brevi 667 00:32:56,880 --> 00:32:59,952 vuole salvare lo stato, e quindi leggere di nuovo più tardi, le cose come questo 668 00:32:59,952 --> 00:33:00,660 sono i tuoi amici. 669 00:33:00,660 --> 00:33:02,640 Che si potrebbe molto facilmente discarica come JSON. 670 00:33:02,640 --> 00:33:04,550 La maggior parte degli oggetti Python può scaricare il JSON 671 00:33:04,550 --> 00:33:11,310 se c'è qualche speranza che strutturalmente potrebbero essere rappresentati in questo modo. 672 00:33:11,310 --> 00:33:14,410 >> Questi sono solo la punta del iceberg moduli che sono utili. 673 00:33:14,410 --> 00:33:19,510 Così sys, os, multiprocessing, sono sorta di cavalli di lavoro di base per le cose 674 00:33:19,510 --> 00:33:23,120 abbiamo bisogno di interagire con il sistema operativo del file system., 675 00:33:23,120 --> 00:33:28,764 come os.isfile, os.isdirectory, os.makefile, questi sono i tuoi amici. 676 00:33:28,764 --> 00:33:30,930 Se si vuole interagire con un particolare tipo di file, 677 00:33:30,930 --> 00:33:32,190 JSON, sottaceto, csv. 678 00:33:32,190 --> 00:33:37,160 Se si vuole interagire con il web pagine, il urllib per ottenere http 679 00:33:37,160 --> 00:33:41,370 pagine. bs4-- BeautifulSoup-- è una meravigliosa parser per HTML. 680 00:33:41,370 --> 00:33:47,047 Si esegue su un html e ottenere questo oggetto array nidificato ora, 681 00:33:47,047 --> 00:33:49,630 che si può attraversare sopra lookin, con il simile solo in cerca di 682 00:33:49,630 --> 00:33:52,380 se, è, in, che è fantastico. 683 00:33:52,380 --> 00:33:55,920 >> C'è un sacco di pacchetti per running-- 684 00:33:55,920 --> 00:33:57,960 per fare particolarmente Mathy cose. 685 00:33:57,960 --> 00:34:01,790 Quindi, se volete moltiplicare, invertire, trasformare le matrici, 686 00:34:01,790 --> 00:34:05,690 NumPy viene utilizzato da persone tutti il mondo per questo. 687 00:34:05,690 --> 00:34:09,620 SciPy è ancora più utile utensili in quella direzione. 688 00:34:09,620 --> 00:34:13,980 sklearn-- machine learning, elaborazione del linguaggio naturale, 689 00:34:13,980 --> 00:34:17,880 eccellente roba utile, ottiene implementato in Python tutto il tempo. 690 00:34:17,880 --> 00:34:21,469 >> E ancora, prende un po ' più tempo per write-- dispiace, 691 00:34:21,469 --> 00:34:26,199 prende leggermente più lungo per l'esecuzione, ma la ragione per cui gli ingegneri reali tendono 692 00:34:26,199 --> 00:34:29,900 uso Python è perché si tende ad essere bloccato su di voi a scrivere il codice, piuttosto 693 00:34:29,900 --> 00:34:32,699 che il vostro computer che esegue il codice. 694 00:34:32,699 --> 00:34:35,860 Quindi, se avete intenzione di scrivere un programma, che un sacco di altre persone 695 00:34:35,860 --> 00:34:37,699 stanno per utilizzare per sempre, come Linux, 696 00:34:37,699 --> 00:34:41,900 potrebbe scrivere in C. Se tu fossi intenzione di scrivere un motore di calcolo, 697 00:34:41,900 --> 00:34:46,124 è possibile scrivere in Python se avete bisogno di cambiarlo ogni due mesi. 698 00:34:46,124 --> 00:34:48,540 Alcune persone potrebbero scrivere a C perché sono così. 699 00:34:48,540 --> 00:34:51,100 700 00:34:51,100 --> 00:34:54,050 >> Così abbiamo visto import sys come un modo di fare le cose 701 00:34:54,050 --> 00:34:57,070 Modulo di entrare nel vostro programma. 702 00:34:57,070 --> 00:35:00,370 È inoltre possibile importare come un soprannome, se volete. 703 00:35:00,370 --> 00:35:03,660 Anche in questo caso multiprocessing è un dolore per ogni volta digitare fuori, in modo da importare mp 704 00:35:03,660 --> 00:35:05,900 e poi ogni volta che utilizzare nel programma, 705 00:35:05,900 --> 00:35:09,732 potrete dire mp.process, o quello che hai. 706 00:35:09,732 --> 00:35:12,670 Se vuoi importazione una sola cosa, 707 00:35:12,670 --> 00:35:19,450 così urllib ha una cosa chiamata richiesta, in modo da poter semplicemente importare il. 708 00:35:19,450 --> 00:35:22,610 In seguito, non si invocarlo come urllib.request, ma solo come richiesta 709 00:35:22,610 --> 00:35:24,590 da solo. 710 00:35:24,590 --> 00:35:30,110 >> E si può importare tutto da un modulo se si desidera. 711 00:35:30,110 --> 00:35:34,820 Questo non è talvolta una buona idea-- questo non è di solito una buona idea, in realtà. 712 00:35:34,820 --> 00:35:39,080 Perché si very-- perché se nulla in quel modulo ha un nome che si 713 00:35:39,080 --> 00:35:41,640 voluto usare qualche altra parte nel programma, non è possibile. 714 00:35:41,640 --> 00:35:44,127 >> E non è sempre ovvio che questo è il caso. 715 00:35:44,127 --> 00:35:46,460 Per fare in modo che quello che stavi facendo era al sicuro, 716 00:35:46,460 --> 00:35:47,920 è necessario aprire il modulo e vedere tutto 717 00:35:47,920 --> 00:35:50,295 dei nomi che finiscono in there-- tutte le funzioni, 718 00:35:50,295 --> 00:35:53,010 tutte le variabili che vivono in quel modulo, 719 00:35:53,010 --> 00:35:57,040 perché si sta portando tutti li nel vostro namespace locale. 720 00:35:57,040 --> 00:35:58,680 >> Così la gente lo fanno. 721 00:35:58,680 --> 00:36:01,322 In generale si consiglia che non si esegue questa operazione. 722 00:36:01,322 --> 00:36:03,280 Ma le persone fanno tutto il tempo perché sono 723 00:36:03,280 --> 00:36:05,180 pigri e non vogliono di digitare mp. 724 00:36:05,180 --> 00:36:06,310 niente, mai. 725 00:36:06,310 --> 00:36:09,560 726 00:36:09,560 --> 00:36:13,310 >> Tutto questo parlare di moduli mi portano in giro per un breve discorso 727 00:36:13,310 --> 00:36:15,930 su come si progetta programmi in Python. 728 00:36:15,930 --> 00:36:19,860 Il primo passo è quello di verificare se qualcun altro ha già fatto la cosa, 729 00:36:19,860 --> 00:36:22,160 o fatto 90% della cosa. 730 00:36:22,160 --> 00:36:26,010 Le probabilità sono che probabilmente hanno, e si dovrebbe andare a prendere le loro cose e correre così. 731 00:36:26,010 --> 00:36:28,900 O scrivere un wrapper attorno ad esso per adattarlo al vostro scopo. 732 00:36:28,900 --> 00:36:31,250 È solo dopo che ha fallito che faresti allora 733 00:36:31,250 --> 00:36:35,529 andare avanti e cominciare a pensare a write-- come si dovrebbe mettere questa cosa insieme. 734 00:36:35,529 --> 00:36:37,320 C'è un sacco di roba là fuori, e questo è 735 00:36:37,320 --> 00:36:39,180 uno dei più utili cose su Python. 736 00:36:39,180 --> 00:36:40,930 Come il linguaggio è elegante, il linguaggio 737 00:36:40,930 --> 00:36:43,800 è facile da usare, ma anche perché è così elegante e facile da usare, 738 00:36:43,800 --> 00:36:47,420 persone sono state usando per un molto tempo e c'è un sacco di roba 739 00:36:47,420 --> 00:36:52,520 là fuori che si può sfruttare per uso personale. 740 00:36:52,520 --> 00:36:58,457 >> Così ultima regola di Python è, qualcuno altro ha già scritto probabilmente 741 00:36:58,457 --> 00:37:00,290 un modulo per questo, qualcun altro ha già 742 00:37:00,290 --> 00:37:02,980 probabilmente scritto una libreria per questo. 743 00:37:02,980 --> 00:37:06,579 Prima di provare a fare una cosa, guardare per vedere se è stato attuato. 744 00:37:06,579 --> 00:37:07,370 Non è così difficile. 745 00:37:07,370 --> 00:37:11,960 Tutti i moduli che ho messo su prima, forse con una sola eccezione, 746 00:37:11,960 --> 00:37:15,220 sono pre-installati in ogni installazione standard di Python. 747 00:37:15,220 --> 00:37:17,769 E così con una chiamata a importare qualunque, voi 748 00:37:17,769 --> 00:37:19,852 avere tutto questo funzionalità a portata di mano. 749 00:37:19,852 --> 00:37:24,660 750 00:37:24,660 --> 00:37:28,920 >> Cominciando a concludere questo parlare, ci sono alcune cose 751 00:37:28,920 --> 00:37:32,770 che ho lasciato come scatole nere e una sorta di sorvolato, 752 00:37:32,770 --> 00:37:37,217 e c'è un paio di bianco si trova che ho ha detto che per il bene di onestà, 753 00:37:37,217 --> 00:37:39,050 Io, almeno al punto qui, anche se non lo farò 754 00:37:39,050 --> 00:37:43,980 andare profonda eccellente in tutti loro e le loro spiegazioni tecniche. 755 00:37:43,980 --> 00:37:46,010 >> Un sacco di cose che ho chiamato la magia 756 00:37:46,010 --> 00:37:48,980 è quello che gli altri chiamerebbero programmazione orientata agli oggetti. 757 00:37:48,980 --> 00:37:52,470 Quindi ci sono un sacco di things-- così variabili non sono molto spesso 758 00:37:52,470 --> 00:37:56,540 byte semplici seduto in, memoria, ma sono molto complicato 759 00:37:56,540 --> 00:38:01,910 oggetti che hanno interna Stato sulle funzioni e un sacco 760 00:38:01,910 --> 00:38:05,570 variabili di nascoste, un sacco di funzionalità nascosta, che 761 00:38:05,570 --> 00:38:09,480 consente di trasformarli in stringhe, che consente di eseguire iterazioni su di loro. 762 00:38:09,480 --> 00:38:12,260 E se siete writing-- e il motivo che essi 763 00:38:12,260 --> 00:38:15,710 avere tutte queste ricche funzionalità è perché i people-- 764 00:38:15,710 --> 00:38:17,740 gli architetti del language-- sono andati 765 00:38:17,740 --> 00:38:22,420 attraverso e per ogni livello oggetti, mettere in funzione 766 00:38:22,420 --> 00:38:26,970 dire che questo è come questo sia come andrà a operare 767 00:38:26,970 --> 00:38:28,470 se qualcuno vuole scorrere su di esso. 768 00:38:28,470 --> 00:38:31,240 >> Quindi tutto ciò che qualcuno potrebbe desiderare di iterare, 769 00:38:31,240 --> 00:38:34,529 ha scritto in logica manualmente su come si sta 770 00:38:34,529 --> 00:38:36,070 dovrebbe iterare su tale oggetto. 771 00:38:36,070 --> 00:38:40,274 Tutto ciò che si potrebbe desiderare scaricati in una stringa ha scritto logica. 772 00:38:40,274 --> 00:38:43,440 Questa è la funzione che si chiama se si desidera eseguire il dump questo fuori in una stringa. 773 00:38:43,440 --> 00:38:45,273 Questo è il motivo per cui si può chiamare len sulle cose, questo 774 00:38:45,273 --> 00:38:49,900 È per questo che si può chiamare per, questo è perché è possibile chiamare se in su tutto 775 00:38:49,900 --> 00:38:53,490 che si vorrebbe, perché quelli tutti stanno portando con loro, 776 00:38:53,490 --> 00:38:55,380 il know-how tecnico per farlo. 777 00:38:55,380 --> 00:38:58,170 778 00:38:58,170 --> 00:39:00,432 >> Questo è qualcosa che io sono eccellente non intenzione di andare in. 779 00:39:00,432 --> 00:39:03,140 Ma per cosa in lista è sottilmente diverso dallo stile C per cicli, 780 00:39:03,140 --> 00:39:06,160 e si può leggere tutto su quello su Internet se siete interessati. 781 00:39:06,160 --> 00:39:08,930 C'è un lato oscuro a tutti di questo, che ho citato, 782 00:39:08,930 --> 00:39:10,359 così ci sono due cose. 783 00:39:10,359 --> 00:39:13,400 Il primo è che questo oggetto orientato programmazione aggiunge un sacco di spese generali 784 00:39:13,400 --> 00:39:16,080 a cose a caso, così si finisce usando molta più memoria; 785 00:39:16,080 --> 00:39:18,640 si finisce per utilizzare un po 'di più tempo di quello che sarebbe altrimenti. 786 00:39:18,640 --> 00:39:21,300 Il other-- ma più insidioso lato oscuro di questo 787 00:39:21,300 --> 00:39:24,047 è, se le cose solo agire come voi li vuole 788 00:39:24,047 --> 00:39:27,130 senza dover pensare super hard sul fatto che questo dovrebbe essere un int 789 00:39:27,130 --> 00:39:29,713 o se ci dovrebbe essere una float, potrebbe essere che qui 790 00:39:29,713 --> 00:39:34,240 si produce un int, ma qui si pensano ma faranno always-- dispiace, 791 00:39:34,240 --> 00:39:36,555 potrebbe essere che qui si produce un galleggiante, 792 00:39:36,555 --> 00:39:39,430 ma quando si arriva alla seconda parte del programma, stai pensando, 793 00:39:39,430 --> 00:39:41,150 vabbè, ma faranno mi ha sempre passare un int. 794 00:39:41,150 --> 00:39:43,608 E se non lo fanno, è possibile che si incunea in qualche luogo, 795 00:39:43,608 --> 00:39:47,600 se si tenta di utilizzare che per indicizzare in un array, o quello che hai. 796 00:39:47,600 --> 00:39:51,050 >> Così uno del reale cose utili su C è 797 00:39:51,050 --> 00:39:54,219 ti costringe a pensare davvero duro prima di fare any-- 798 00:39:54,219 --> 00:39:56,510 prima di portare qualsiasi variabile in esistenza, come quello 799 00:39:56,510 --> 00:39:58,764 è il tipo di questa variabile. 800 00:39:58,764 --> 00:40:00,680 E sta andando ad avere tale tipo per tutti i tempi. 801 00:40:00,680 --> 00:40:02,410 >> Questo non è vero Python, e infatti, 802 00:40:02,410 --> 00:40:04,740 can-- se sei solo sorta di andare a orecchio, 803 00:40:04,740 --> 00:40:07,690 e si fanno alcune decisioni un modo in un unico luogo, 804 00:40:07,690 --> 00:40:09,870 e alcune decisioni uno modo in altro luogo 805 00:40:09,870 --> 00:40:12,960 senza mettere dietro abbastanza roba le scene in altro luogo 806 00:40:12,960 --> 00:40:16,170 a prendere le cose per bene, si può ottenere alcuni errori molto strani. 807 00:40:16,170 --> 00:40:19,200 E il programma può continuare a correre per un tempo molto lungo, perché è 808 00:40:19,200 --> 00:40:23,200 facendo un sacco di lavoro da dire, bene questa cosa potrebbe funzionare in questo modo, 809 00:40:23,200 --> 00:40:25,070 così ho intenzione di correre in quel modo. 810 00:40:25,070 --> 00:40:30,300 >> Ed infatti, il fatto che spinge inoltrare attraverso un sacco di piccoli errori 811 00:40:30,300 --> 00:40:33,260 significa che, spesso, quando un errore in realtà è male 812 00:40:33,260 --> 00:40:38,720 e non vuole realmente risolvere il problema, finisce per miglia away-- programma 813 00:40:38,720 --> 00:40:41,780 finisce per fermarsi miglia di distanza da quando hai avuto il tuo errore. 814 00:40:41,780 --> 00:40:46,590 E così una cosa che vorremmo programmi per fare, una cosa sometimes-- 815 00:40:46,590 --> 00:40:48,910 che vorremmo programmi a fare quando siamo debug 816 00:40:48,910 --> 00:40:54,160 è sicuro ad alta voce e non riescono molto rapidamente quando qualcosa va storto. 817 00:40:54,160 --> 00:40:55,510 >> Python è molto male in questo. 818 00:40:55,510 --> 00:40:58,820 Python è molto bravo a non in mancanza e rotolare in avanti 819 00:40:58,820 --> 00:41:00,320 attraverso le cose inaspettate. 820 00:41:00,320 --> 00:41:02,820 Quindi questo è utile per quando stai scrivendo piccoli programmi. 821 00:41:02,820 --> 00:41:07,110 Quando si arriva complicato bug a volte 822 00:41:07,110 --> 00:41:09,300 richiede molto tempo per prendere in giro fuori. 823 00:41:09,300 --> 00:41:12,210 >> Quindi c'è un lato oscuro a tutti di questo, come funziona da solo. 824 00:41:12,210 --> 00:41:13,860 Funziona proprio come ci si aspetta. 825 00:41:13,860 --> 00:41:18,320 Solo che quando non è così, si finisce in un luogo completamente diverso 826 00:41:18,320 --> 00:41:21,530 e cercando di capire dove è stato che si è andato storto. 827 00:41:21,530 --> 00:41:25,180 >> Garbage Collection è-- così una cosa che si noterà 828 00:41:25,180 --> 00:41:28,110 è che nessuna di queste cose che Ho portato in existence-- 829 00:41:28,110 --> 00:41:34,114 queste matrici, i dizionari, i oggetti, questi files-- mai ottenere liberati. 830 00:41:34,114 --> 00:41:36,030 Non c'era nessuna chiamata a gratis in tutto questo discorso. 831 00:41:36,030 --> 00:41:40,340 E che è stato sul C-side, perché non abbiamo mai avuto in queste cose. 832 00:41:40,340 --> 00:41:42,220 >> Ma in Python-side, non vi è un libero. 833 00:41:42,220 --> 00:41:43,970 Le cose diventano automaticamente liberata quando Python 834 00:41:43,970 --> 00:41:45,386 pensa che tu non stai guardando loro. 835 00:41:45,386 --> 00:41:49,640 E 'davvero buono, non liberando cose che forse si potrebbe ancora essere guardando, 836 00:41:49,640 --> 00:41:54,262 ma questo significa che se si dovesse andando a destinare questa grande cosa, 837 00:41:54,262 --> 00:41:55,970 e siete come, oh Ho finito con esso ora, 838 00:41:55,970 --> 00:42:00,360 è difficile dire Python che hai finito con esso ora. 839 00:42:00,360 --> 00:42:02,986 >> A volte è possibile impostare la variabile di essere nessuno, 840 00:42:02,986 --> 00:42:05,110 e poi sperare che alla fine il garbage collector 841 00:42:05,110 --> 00:42:06,720 passa attraverso e pulisce fuori. 842 00:42:06,720 --> 00:42:10,177 Ma ancora una volta, non è necessario avere il controllo su quello. 843 00:42:10,177 --> 00:42:13,510 E una delle ragioni per cui le persone utilizzano C per davvero Performance cose importanti, 844 00:42:13,510 --> 00:42:16,570 È questa capacità di veramente sapere quando viene allocata la memoria 845 00:42:16,570 --> 00:42:19,369 e quando è liberata, e hanno un sacco di controllo su dicendo: 846 00:42:19,369 --> 00:42:20,910 Sto utilizzando non più memoria di cui ho bisogno. 847 00:42:20,910 --> 00:42:23,632 Che è qualcosa che Python non è così grande a. 848 00:42:23,632 --> 00:42:25,090 PUBBLICO: Posso farti una domanda? 849 00:42:25,090 --> 00:42:29,800 Che cosa si intende per riuscire ad alta voce? 850 00:42:29,800 --> 00:42:32,070 >> ROSS RHEINGANS-YOO: Quindi, se qualcosa sta andando male 851 00:42:32,070 --> 00:42:34,950 e sei in debug modalità, si farebbe molto spesso 852 00:42:34,950 --> 00:42:38,510 desidera che il programma per dirvi esattamente dove è andato male, 853 00:42:38,510 --> 00:42:42,360 e non appena tranquillamente smettere di correre. 854 00:42:42,360 --> 00:42:45,085 Ma si sarebbe in realtà la stampa tutti i tipi di informazioni circa 855 00:42:45,085 --> 00:42:46,972 come, qui era questo. 856 00:42:46,972 --> 00:42:53,957 Questa cosa è accaduto Se si stampa un wen-- se si sta eseguendo un server-- web 857 00:42:53,957 --> 00:42:55,390 >> PUBBLICO: [incomprensibile] 858 00:42:55,390 --> 00:42:59,800 >> ROSS RHEINGANS-YOO: Sì, se si sta eseguendo un server web, 859 00:42:59,800 --> 00:43:02,680 a volte è male se siete sempre scartando errori, 860 00:43:02,680 --> 00:43:04,530 e che stai dicendo, bene che non ha funzionato. 861 00:43:04,530 --> 00:43:05,300 Ho intenzione di smettere. 862 00:43:05,300 --> 00:43:07,680 Sto solo andando a ignorare e continuare ad andare avanti. 863 00:43:07,680 --> 00:43:11,260 Perché allora si può ottenere in centinaia di questi errori e non vederli. 864 00:43:11,260 --> 00:43:13,910 >> Sarebbe certamente utile per scopi di debug 865 00:43:13,910 --> 00:43:20,327 se il vostro server web ogni volta che ha fatto un errore, avete avuto record durevoli di quello. 866 00:43:20,327 --> 00:43:22,910 Forse si vuole anche il programma per arrestare, in modo che i record 867 00:43:22,910 --> 00:43:25,471 Non ottenere sepolto sotto le cose. 868 00:43:25,471 --> 00:43:26,970 Ma ancora una volta, questo è in modalità di debug. 869 00:43:26,970 --> 00:43:31,280 >> Spesso in modalità di produzione, la mondo è un po 'diverso. 870 00:43:31,280 --> 00:43:36,380 E in piccoli script che sto correndo, dove la cosa che mi ha detto di fare 871 00:43:36,380 --> 00:43:40,680 potrebbe essere solo un po 'fuori da quello che mi piace fare, 872 00:43:40,680 --> 00:43:44,010 poi sorta di spingere attraverso errori è qualcosa che si potrebbe desiderare. 873 00:43:44,010 --> 00:43:49,410 E in quei casi, certamente Python guadagna davvero le sue partenze. 874 00:43:49,410 --> 00:43:54,617 >> L'ultima cosa che io non ho parlato in questo-- che non ho parlare 875 00:43:54,617 --> 00:43:57,700 ma può essere davvero infuriare il primo tempo che avete uno di questi errori, 876 00:43:57,700 --> 00:44:00,491 e il secondo e terzo e quarto ora si dispone di uno di questi errori. 877 00:44:00,491 --> 00:44:03,490 Python, ho detto che utilizza lo spazio bianco 878 00:44:03,490 --> 00:44:06,700 per dirti quello che livello di rientro e ciò blocco funzionale ci si trovi, 879 00:44:06,700 --> 00:44:08,840 si tratta di schede e gli spazi in modo diverso. 880 00:44:08,840 --> 00:44:12,780 Quindi, se si scheda su quattro, e poi la riga successiva ha quattro spazi, 881 00:44:12,780 --> 00:44:16,910 anche se mostrano come il stesso importo nel vostro editor, 882 00:44:16,910 --> 00:44:20,160 Python non trattano loro lo stesso. 883 00:44:20,160 --> 00:44:23,610 >> In realtà, Python tratta le schede e spazi come olio e acqua. 884 00:44:23,610 --> 00:44:25,050 Sono cose solo diversi. 885 00:44:25,050 --> 00:44:27,264 Non vi è alcuna particolare lunghezza che una scheda è, 886 00:44:27,264 --> 00:44:30,180 quindi non è come una scheda è uguale a 8 gli spazi, e così si otterrebbe intorno ad esso 887 00:44:30,180 --> 00:44:30,860 in questo modo. 888 00:44:30,860 --> 00:44:34,110 Come, quando dice, cosa livello di spazio bianco sono a, 889 00:44:34,110 --> 00:44:37,240 in realtà è alla ricerca di una modello di spazi e tabulazioni. 890 00:44:37,240 --> 00:44:43,050 E così, il modo migliore per affrontare questo è di usare sempre gli spazi per tutto il tempo. 891 00:44:43,050 --> 00:44:47,510 >> Ed infatti, nel Cloud9 IDE e il CS50 IDE, 892 00:44:47,510 --> 00:44:50,610 i vostri inserti tasto TAB quattro spazi a posto 893 00:44:50,610 --> 00:44:53,800 di una linguetta, che è super utile. 894 00:44:53,800 --> 00:44:57,074 Anche se ancora una volta, se hai scritto un Python programma con schede che sarebbe bene, 895 00:44:57,074 --> 00:44:58,990 è solo se qualcuno entrò e ha cercato di aggiungere 896 00:44:58,990 --> 00:45:02,655 una sola riga al vostro programma aveva quattro spazi per ogni scheda, 897 00:45:02,655 --> 00:45:03,280 si spezzerebbe. 898 00:45:03,280 --> 00:45:07,800 E sarebbe rompere in modo che non è realmente visibile. 899 00:45:07,800 --> 00:45:12,390 Anche se l'errore effettivo messaggio che getta 900 00:45:12,390 --> 00:45:15,610 ha a che fare con il nuovo trattino non previsto qui, 901 00:45:15,610 --> 00:45:18,700 or-- se si sta parlando di trattini e sembra che sia sbagliato, 902 00:45:18,700 --> 00:45:22,090 probabilmente è perché c'è un problema di scheda-spazio. 903 00:45:22,090 --> 00:45:24,154 Stanno ancora facendo infuriare il debug. 904 00:45:24,154 --> 00:45:26,070 Il più grande complesso nel questo discorso, che non ho 905 00:45:26,070 --> 00:45:29,740 raggiungere perché è davvero un complicato, argomento sottile, 906 00:45:29,740 --> 00:45:34,760 e non è stato necessario fare qualsiasi delle cose che abbiamo fatto fino ad ora, 907 00:45:34,760 --> 00:45:37,140 sono un concetto chiamato tuple. 908 00:45:37,140 --> 00:45:41,280 Sono lì molto simile al le matrici che non si può modificare. 909 00:45:41,280 --> 00:45:44,700 Vengono utilizzati in tutto il posto perché sono utili per un sacco di cose 910 00:45:44,700 --> 00:45:46,300 che gli array non sono utili per. 911 00:45:46,300 --> 00:45:49,890 >> Ma se si desidera fare un array, e poi promettere l'interprete che si 912 00:45:49,890 --> 00:45:53,140 non sono mai andando a voler modificare tale cosa-- infatti, se si desidera modificare, 913 00:45:53,140 --> 00:45:56,800 potrai fare una nuova con il nuovo valori in it-- quelli sono tuple. 914 00:45:56,800 --> 00:45:58,800 Invece di produrre li con parentesi quadre, 915 00:45:58,800 --> 00:46:00,341 li producete con parentesi tonde. 916 00:46:00,341 --> 00:46:05,074 Perché utilizzare queste cose, è un po 'di una domanda. . 917 00:46:05,074 --> 00:46:06,990 L'unica cosa che mi sarò dire che si è 918 00:46:06,990 --> 00:46:10,680 può usare come tuple indici per dizionari. 919 00:46:10,680 --> 00:46:15,010 Non è possibile utilizzare le matrici come indici per dizionari. 920 00:46:15,010 --> 00:46:18,970 E perché, di nuovo, tecnico e Non ho intenzione di correre in esso. 921 00:46:18,970 --> 00:46:23,140 >> Il pset che non ho toccato in questo discorso è pset6. 922 00:46:23,140 --> 00:46:25,837 Quindi, ecco come si 'd implementare a-- ecco 923 00:46:25,837 --> 00:46:28,140 come si dovrebbe implementare pset6 in Python. 924 00:46:28,140 --> 00:46:32,680 Tenendo presente il Python ciclo di progettazione, la prima cosa 925 00:46:32,680 --> 00:46:34,760 che si fa quando si è programmi di scrittura è di controllo 926 00:46:34,760 --> 00:46:38,030 per vedere se qualcuno ha fatto già. 927 00:46:38,030 --> 00:46:42,152 >> In realtà, se si vuole a serve-- Apache 50 928 00:46:42,152 --> 00:46:44,110 fa circa questo, tranne che non viene 929 00:46:44,110 --> 00:46:45,840 standard installati su macchine Linux. 930 00:46:45,840 --> 00:46:50,490 Python fa, e Python semplice server HTTP fa pure. 931 00:46:50,490 --> 00:46:54,717 Se siete mai su una macchina Linux, o l'esterno Cloud9 IDE di CS50 932 00:46:54,717 --> 00:46:57,550 e ti piacerebbe servire questa corrente directory per una determinata porta, 933 00:46:57,550 --> 00:47:04,610 python-m SimpleHTTPServer porto serve questo. 934 00:47:04,610 --> 00:47:07,190 È inoltre possibile importare il semplice server HTTP 935 00:47:07,190 --> 00:47:11,240 e che ha un sacco di funzionalità se si desidera personalizzare, o cambiarlo, 936 00:47:11,240 --> 00:47:15,860 o gestiscono it-- imbracatura a eseguire i propri servizi server. 937 00:47:15,860 --> 00:47:18,032 >> Ecco, questo è Python in poche parole. 938 00:47:18,032 --> 00:47:20,280 E questo è stato CS50. 939 00:47:20,280 --> 00:47:21,980 Grazie. 940 00:47:21,980 --> 00:47:23,468