1 00:00:00,000 --> 00:00:05,426 2 00:00:05,426 --> 00:00:06,800 ROSS Rheingans-Yoo: Ola, eu son Ross. 3 00:00:06,800 --> 00:00:08,570 E este é un seminario CS50. 4 00:00:08,570 --> 00:00:12,100 El leva-lo de programación en C para programación en Python. 5 00:00:12,100 --> 00:00:15,120 >> Python é unha linguaxe de script. 6 00:00:15,120 --> 00:00:17,870 É en gran parte como C na sintaxe, aínda que algúns 7 00:00:17,870 --> 00:00:20,390 dos detalles técnicos de como que a sintaxe é executado 8 00:00:20,390 --> 00:00:22,240 son lixeiramente diferentes. 9 00:00:22,240 --> 00:00:24,780 É menos potente que C nalgúns aspectos. 10 00:00:24,780 --> 00:00:28,130 É menos expresivo para onde exactamente no seu ordenador 11 00:00:28,130 --> 00:00:30,030 memoria e colocar a fóra, como é colocado para fóra, 12 00:00:30,030 --> 00:00:32,030 cando está liberdade, e estes tipos de cousas. 13 00:00:32,030 --> 00:00:36,150 >> É máis útil que C nalgúns aspectos, porque é máis fácil programar en. 14 00:00:36,150 --> 00:00:39,920 O idioma é, en certa persoas, máis intuitiva. 15 00:00:39,920 --> 00:00:44,820 E realmente, o obxectivo é que que sexa máis rápido para programar 16 00:00:44,820 --> 00:00:46,490 e potencialmente máis lento para realizar. 17 00:00:46,490 --> 00:00:48,198 >> Agora, se pensar sobre a cantidade de tempo 18 00:00:48,198 --> 00:00:50,514 gastou no seu último conxunto de problemas de escritura 19 00:00:50,514 --> 00:00:52,430 seu código contra a cantidade de tempo que gasta 20 00:00:52,430 --> 00:00:55,310 no seu último problema definir a execución do seu código, 21 00:00:55,310 --> 00:00:58,300 vostede imaxinaria que a linguaxe que foi dúas veces máis rápido para escribir, 22 00:00:58,300 --> 00:01:02,170 e dúas veces máis lento para executar, pode ser unha mellora sobre C nalgúns aspectos. 23 00:01:02,170 --> 00:01:05,730 Certamente, cando estás a escribir pequenos programas para facer cousas pequenas, 24 00:01:05,730 --> 00:01:08,520 Python é unha linguaxe útil de elección. 25 00:01:08,520 --> 00:01:10,620 >> E ao final da presente seminario, eu espero que 26 00:01:10,620 --> 00:01:12,950 ser capaz de facer o elección en proxectos futuros 27 00:01:12,950 --> 00:01:17,710 sobre cal a linguaxe é correcta de usar, non a idea 28 00:01:17,710 --> 00:01:21,405 unha lingua que é máis corrixir o tempo. 29 00:01:21,405 --> 00:01:23,030 Algunhas cousas sobre o que o seminario é. 30 00:01:23,030 --> 00:01:25,910 Este seminario non pretende ensinar-lle Python a partir de cero. 31 00:01:25,910 --> 00:01:28,310 Python é moi semellante a C, e eu estou supondo 32 00:01:28,310 --> 00:01:34,056 que é un estudante CS50, ou alguén cunha familiaridade semellante con C. 33 00:01:34,056 --> 00:01:36,700 >> Se é estudante CS50 en torno a problemas axuste 6, 34 00:01:36,700 --> 00:01:38,866 Entón ve unha morea de cousas en C, eu vou che dar 35 00:01:38,866 --> 00:01:40,740 as principais diferenzas, e algunhas das cousas 36 00:01:40,740 --> 00:01:42,840 que fan Python diferente e especial e útil, 37 00:01:42,840 --> 00:01:45,256 pero eu non estou indo a ir o que é unha linguaxe de programación 38 00:01:45,256 --> 00:01:46,920 e como escribir programas. 39 00:01:46,920 --> 00:01:49,820 Con todo, este seminario vai ensinar a escribir programas en Python 40 00:01:49,820 --> 00:01:52,310 se vostede é un destes poucos grupos. 41 00:01:52,310 --> 00:01:54,820 Unha vez máis imos ver como podería aplicar psets-- 42 00:01:54,820 --> 00:01:57,550 que debe ser en 1-6 Python-- e proporcionar punteiros 43 00:01:57,550 --> 00:02:00,322 a documentación oficial para referencia futura. 44 00:02:00,322 --> 00:02:03,030 A outra cousa que é importante sobre como esta conversa é asignado, 45 00:02:03,030 --> 00:02:05,360 este vídeo será en liña, cortesía de CS50, 46 00:02:05,360 --> 00:02:07,550 para que non debe sentirse como precisa para tomar notas. 47 00:02:07,550 --> 00:02:11,180 Sempre poderá ir cara atrás e ollar para el máis tarde como referencia. 48 00:02:11,180 --> 00:02:13,340 Ademais, os diapositivas están dispoñibles no momento 49 00:02:13,340 --> 00:02:16,480 neste lugar, que debería levalo facer un doc Google. 50 00:02:16,480 --> 00:02:21,010 É unha versión lixeiramente abreviada do que estou mostrando na pantalla. 51 00:02:21,010 --> 00:02:24,850 >> Unha excepción coidado antes nós ir, Python 3 52 00:02:24,850 --> 00:02:26,700 é unha lingua distinta do Python 2. 53 00:02:26,700 --> 00:02:30,020 Eles parecen moito a mesma; ten diferenzas técnicas moi lixeiras 54 00:02:30,020 --> 00:02:32,530 que vai facer que programas escrito en Python 2 55 00:02:32,530 --> 00:02:37,140 non poder ser executado no ámbito Python 3. 56 00:02:37,140 --> 00:02:41,969 >> O aparello ven con CS50 Python, por defecto usa Python 2. 57 00:02:41,969 --> 00:02:44,010 Podes comprobar que dixitación na súa liña de comandos 58 00:02:44,010 --> 00:02:51,310 --version python, que debe saída 2.7.6 no dispositivo actual. 59 00:02:51,310 --> 00:02:53,580 Probe Python 3, que fai funcionar no dispositivo, 60 00:02:53,580 --> 00:02:58,500 se patróns Python para 2.X.Y ou por o aparello ou nas súas propias máquinas. 61 00:02:58,500 --> 00:03:03,730 Ten que substituír Python 3 en calquera momento nesta conversación que escribo Python. 62 00:03:03,730 --> 00:03:05,760 Se a súa máquina é executando 2 por defecto, tipo 63 00:03:05,760 --> 00:03:09,770 Python 3, a fin de ser capaz de efectivamente seguimento e realizar estas cousas. 64 00:03:09,770 --> 00:03:12,280 >> Ademais, eu vou sinala-lo en recursos oficiais agora. 65 00:03:12,280 --> 00:03:16,082 docs.python.org/3--~~V coidado que iso é un 3 e non un 2-- 66 00:03:16,082 --> 00:03:17,030 ten referencias útiles. 67 00:03:17,030 --> 00:03:19,280 Tutorial ha levalo a través moito das mesmas cousas 68 00:03:19,280 --> 00:03:21,460 que eu estou facendo agora, a non ser en forma de texto. 69 00:03:21,460 --> 00:03:23,725 Referencia é útil como un referencia para a linguaxe, 70 00:03:23,725 --> 00:03:26,100 ea Biblioteca defecto dá vostede algunhas das extensións 71 00:03:26,100 --> 00:03:27,770 cunha funcionalidade adicional. 72 00:03:27,770 --> 00:03:31,300 >> Así, nun primeiro programa Python. 73 00:03:31,300 --> 00:03:34,410 Á esquerda temos C estándar, á dereita, temos Python. 74 00:03:34,410 --> 00:03:36,780 Pode recoñecer este problema, que é 75 00:03:36,780 --> 00:03:40,760 un dos primeiro problema CS50 en conxuntos, e estes 76 00:03:40,760 --> 00:03:42,677 resolver-lo coa mesma solución. 77 00:03:42,677 --> 00:03:45,010 Agora, a razón que somos mirando para estes mosaico 78 00:03:45,010 --> 00:03:46,830 é así que podemos ver diferenzas sintácticas. 79 00:03:46,830 --> 00:03:49,580 Un dos elefantes no cuarto que pode ter notado dereita 80 00:03:49,580 --> 00:03:56,350 fóra do pau, é que Python non ten principal función embrulho en torno ao código. 81 00:03:56,350 --> 00:03:59,170 Así, en C, escribir unha morea de arquivos, liga-los xuntos, 82 00:03:59,170 --> 00:04:02,590 eo programa comeza a executar a esa cousa chamada int main. 83 00:04:02,590 --> 00:04:04,930 >> En Python, escribe un ficheiro que, executar o ficheiro, 84 00:04:04,930 --> 00:04:07,882 o programa inicia a execución na parte superior do ficheiro. 85 00:04:07,882 --> 00:04:09,590 Por iso, vai comezar na parte superior do ficheiro 86 00:04:09,590 --> 00:04:11,280 ir para abaixo ata atopar outra cousa. 87 00:04:11,280 --> 00:04:14,440 Se atopar unha definición de función, non vai realmente realizar este código, 88 00:04:14,440 --> 00:04:15,940 simplemente ha definir a función. 89 00:04:15,940 --> 00:04:18,459 Pero aquí, cando o primeiro programa é n igual a 10, 90 00:04:18,459 --> 00:04:21,273 o primeiro que este programa vai facer é levar ese valor de 10 91 00:04:21,273 --> 00:04:24,120 e configurar-lo nunha variable chamada n. 92 00:04:24,120 --> 00:04:27,690 >> Falando desa liña, un dos outra coisas- sorry-- este 93 00:04:27,690 --> 00:04:31,040 significa que programas en C, vai escribilo los, 94 00:04:31,040 --> 00:04:34,899 vai facelos, que será invocar algúns comandos clang, 95 00:04:34,899 --> 00:04:36,690 e entón vai realizar un resultando executable. 96 00:04:36,690 --> 00:04:41,030 Programas en Python, que corre o texto file-- este pode mario.py 97 00:04:41,030 --> 00:04:44,900 ser este ficheiro que mostre você-- realizar o ficheiro 98 00:04:44,900 --> 00:04:47,450 e vai executar, eo contido do mesmo 99 00:04:47,450 --> 00:04:50,390 será executado por o intérprete Python. 100 00:04:50,390 --> 00:04:52,470 Podes facelo no seu IDE. 101 00:04:52,470 --> 00:05:02,260 >> Entón, se eu teño un arquivo Ola, que simplemente ten este contido. 102 00:05:02,260 --> 00:05:04,840 Este é de feito o Python 2, non Python 3, polo que non 103 00:05:04,840 --> 00:05:06,600 se preocupar coa sintaxe para agora. 104 00:05:06,600 --> 00:05:14,230 Pero eu vou correr Python, en hello.py, e é executado. 105 00:05:14,230 --> 00:05:18,890 >> Outra forma que eu poida usar Python que Non vou tratar con tanta cousa nesta conversa, 106 00:05:18,890 --> 00:05:21,840 é se eu só escribir Python, el me cae nun ambiente onde 107 00:05:21,840 --> 00:05:24,370 Podo alimento-lo liña por liña Python. 108 00:05:24,370 --> 00:05:31,260 Entón, aquí, se eu escribir espazo de impresión 'Ola, mundo ". 109 00:05:31,260 --> 00:05:32,360 Escribe entrar. 110 00:05:32,360 --> 00:05:37,430 El me vai cuspir iso de volta os resultados aquela liña individuo inmediatamente. 111 00:05:37,430 --> 00:05:38,470 >> Isto é pode ser útil. 112 00:05:38,470 --> 00:05:40,700 Nesta charla vou facer as cousas en diapositivas. 113 00:05:40,700 --> 00:05:43,940 E entón vai ser capaz de seguir ao longo de ambos aquí, ou por escrito 114 00:05:43,940 --> 00:05:45,725 arquivos reais e, a continuación, executa-los. 115 00:05:45,725 --> 00:05:48,340 116 00:05:48,340 --> 00:05:50,995 >> Pero volvendo ao presente código, outra cousa 117 00:05:50,995 --> 00:05:53,230 que pode ter noticed-- ben, hai 118 00:05:53,230 --> 00:05:55,980 dúas cousas que podes aviso sobre estes bloques. 119 00:05:55,980 --> 00:05:59,280 O primeiro, un pouco máis mundano, é que o Python non ten punto e coma final. 120 00:05:59,280 --> 00:06:02,630 >> Semicolons son opcionais en todas partes e inofensivo en todas as partes. 121 00:06:02,630 --> 00:06:03,722 Pode engadila los. 122 00:06:03,722 --> 00:06:06,430 Pode facer as persoas que escriben Python para unha risadinha de estar en ti 123 00:06:06,430 --> 00:06:08,860 detrás das costas, porque eles non son necesarios. 124 00:06:08,860 --> 00:06:13,497 Son frecuentemente un sinal de que está a ser realizado durante de C. Os deseñadores da linguaxe 125 00:06:13,497 --> 00:06:16,580 sinto que é máis claro deste xeito e que non é necesario declarar 126 00:06:16,580 --> 00:06:18,700 cada vez que termine unha liña. 127 00:06:18,700 --> 00:06:21,799 >> Outra cousa estraña sobre este n é que non ten un tipo de anexo. 128 00:06:21,799 --> 00:06:24,590 Unha das pezas máxicas de Python-- e eu vou chamalo de maxia, 129 00:06:24,590 --> 00:06:26,381 pero hai moito motivos técnicos para iso 130 00:06:26,381 --> 00:06:28,560 un dos works-- pezas máxicas de Python 131 00:06:28,560 --> 00:06:32,700 é que as variables poden ampliar ou encoller para conter todos os datos 132 00:06:32,700 --> 00:06:34,530 tipo que desexa que eles. 133 00:06:34,530 --> 00:06:35,580 >> Polo tanto, esta é a 10. 134 00:06:35,580 --> 00:06:40,060 Máis tarde abaixo Eu lle atribúe a este n 0.5, levaría que 0,5. 135 00:06:40,060 --> 00:06:43,770 Non importa o que é un int aquí e flotar alí, calquera cousa que usa este n 136 00:06:43,770 --> 00:06:47,057 vai, máis ou menos, ser capaz de engole xunto se queda un deses. 137 00:06:47,057 --> 00:06:49,640 A menos que haxa algún moi real polo que non pode usar os datos 138 00:06:49,640 --> 00:06:52,170 escriba que n ten actualmente, en que punto vai estar 139 00:06:52,170 --> 00:06:54,490 entalado e lanzar un erro, e estes tipos de cousas. 140 00:06:54,490 --> 00:06:57,050 >> Pero aquí, Python realmente non lle importa o que 141 00:06:57,050 --> 00:06:59,140 que é o que eu vou ir neste sentenza, como, quere isto? 142 00:06:59,140 --> 00:06:59,840 Esta cousa en que? 143 00:06:59,840 --> 00:07:00,640 Si, é un tipo de cousas. 144 00:07:00,640 --> 00:07:01,810 Vou poñelas no final. 145 00:07:01,810 --> 00:07:04,740 Vai ser un problema máis tarde, se alguén que quere usar este efecto 146 00:07:04,740 --> 00:07:05,710 non pode tratar con isto. 147 00:07:05,710 --> 00:07:08,500 Esta é unha das principais diferenzas entre Python e C 148 00:07:08,500 --> 00:07:10,790 que fai máis doado para escribir grandes programas en C 149 00:07:10,790 --> 00:07:15,120 e fai máis doado para escribir programa moi pequeno Python. 150 00:07:15,120 --> 00:07:19,564 >> A sintaxe para non é moi diferente no que fai. 151 00:07:19,564 --> 00:07:21,480 É un pouco diferente en como é expreso. 152 00:07:21,480 --> 00:07:25,370 Polo tanto, este é un moi, o que se chama Pythonic, modo de escribilo. 153 00:07:25,370 --> 00:07:28,969 para liña na gama (N), esta é a gama de números de 0 a N, 154 00:07:28,969 --> 00:07:31,010 incluso na parte inferior e exclusiva na parte superior. 155 00:07:31,010 --> 00:07:34,790 Polo tanto, é de 0 a n-1, que é o que o código C está facendo, 156 00:07:34,790 --> 00:07:38,690 agás que é moito máis fácil mirar para quizais. 157 00:07:38,690 --> 00:07:42,710 >> O bloque en cuestión é non partiu por chaves, 158 00:07:42,710 --> 00:07:44,540 en vez diso el defínese off por este recuar. 159 00:07:44,540 --> 00:07:47,580 Entón, todas esas liñas son catro espazos para a dereita, 160 00:07:47,580 --> 00:07:50,410 ou como sobre un ancho de elefante. 161 00:07:50,410 --> 00:07:54,570 E estes son os que son será executado no presente para. 162 00:07:54,570 --> 00:07:57,020 Se eu romper a recuar sobre iso e eu 163 00:07:57,020 --> 00:08:01,420 empuxe que volve para imprimir o descenso de inicio, 164 00:08:01,420 --> 00:08:04,320 que vai deixar a impresión de loop. 165 00:08:04,320 --> 00:08:08,560 En contraste con C, onde realmente aquí que mover esa cinta pechada arredor. 166 00:08:08,560 --> 00:08:11,820 >> Isto significa que non obter erros que saltan en ti porque 167 00:08:11,820 --> 00:08:13,580 poñer unha cinta no lugar incorrecto. 168 00:08:13,580 --> 00:08:16,460 Isto significa que obter erros que saltan en ti porque 169 00:08:16,460 --> 00:08:17,620 atrás unha liña incorrecta. 170 00:08:17,620 --> 00:08:19,290 Por iso, fai recortes super coidadosa. 171 00:08:19,290 --> 00:08:22,123 Esperemos que estaba sendo super- coidado co seu descenso de calquera xeito, 172 00:08:22,123 --> 00:08:25,300 e por iso este non é que moito máis de un fardo. 173 00:08:25,300 --> 00:08:28,762 >> Pero unha regra básica para Python, e nós imos ter un par destes 174 00:08:28,762 --> 00:08:30,970 que nós imos pasar a través o curso da conversación, 175 00:08:30,970 --> 00:08:33,840 é tratar sintaxe naturais antes de ollar calquera cousa. 176 00:08:33,840 --> 00:08:37,610 Polo tanto, esta sintaxe, para este número no rango, 177 00:08:37,610 --> 00:08:41,460 é moi distinto en canto a estilo. 178 00:08:41,460 --> 00:08:45,260 Moitas cousas en Python veremos tomar este formulario. 179 00:08:45,260 --> 00:08:47,420 >> E entón se vir cara arriba cun novo obxecto que 180 00:08:47,420 --> 00:08:50,870 creo que ten que ser capaz de iterado sobre iso, neste formato, 181 00:08:50,870 --> 00:08:53,720 Acontece que, probablemente, soporta ese formato. 182 00:08:53,720 --> 00:08:56,990 Non estamos indo a ir no fondo de super- os motivos técnicos polos que iso é verdade. 183 00:08:56,990 --> 00:09:00,167 >> Pero é unha intuición útil ter cando está achegando programas Python, 184 00:09:00,167 --> 00:09:01,750 que esa cousa é só ir ao traballo. 185 00:09:01,750 --> 00:09:03,020 Proba-o. 186 00:09:03,020 --> 00:09:06,480 Arrincar a liña de comandos Interpreter, ver se funciona, 187 00:09:06,480 --> 00:09:09,827 seguir adiante coas cousas, antes de aínda que abrir Google e dicir: 188 00:09:09,827 --> 00:09:11,660 o que é a sintaxe para esta cousa en particular? 189 00:09:11,660 --> 00:09:14,740 Lotes de Python que podería descubrir só tentando. 190 00:09:14,740 --> 00:09:19,005 >> Este caso é aínda máis semellante a C, a continuación, as Fors son. 191 00:09:19,005 --> 00:09:20,380 Teña en conta que non hai ningunha parénteses. 192 00:09:20,380 --> 00:09:23,490 Os parénteses son, de novo, inofensivo, pero innecesario. 193 00:09:23,490 --> 00:09:25,750 Hai dous puntos no extremo así como o de loops, 194 00:09:25,750 --> 00:09:30,800 e, de novo, os bloques son relativos recuado no canto de detonar por chaves. 195 00:09:30,800 --> 00:09:33,080 Este resto é para o orixinal nivel de retirada, 196 00:09:33,080 --> 00:09:35,930 eo seu bloque en cuestión recuado novo. 197 00:09:35,930 --> 00:09:41,720 Aqueles traballos exactamente como eles fan en C. 198 00:09:41,720 --> 00:09:44,520 >> Isto é realmente moi moi mesmo. 199 00:09:44,520 --> 00:09:49,430 Unha vez máis, impresión perde un personaxe fóra de printf Vostede pasa algunhas cordas. 200 00:09:49,430 --> 00:09:51,520 Acontece cordas tanto pode ser marcada fóra 201 00:09:51,520 --> 00:09:53,562 por comiñas simples ou dobres. 202 00:09:53,562 --> 00:09:55,270 Non hai diferenza, agás que dentro 203 00:09:55,270 --> 00:09:57,722 de aspas pode usar comiñas dobres con abandono, 204 00:09:57,722 --> 00:09:59,430 en vez de ter que escapar todos eles. 205 00:09:59,430 --> 00:10:01,480 E dentro de comiñas dobres, vostede pode usar comiñas simples con abandono 206 00:10:01,480 --> 00:10:02,420 sen ter que escapar deles. 207 00:10:02,420 --> 00:10:04,253 Se quería mesturar Los, pode certamente 208 00:10:04,253 --> 00:10:06,100 mirar para arriba en liña como facelo. 209 00:10:06,100 --> 00:10:09,581 >> Vai notar que aquí, Eu xa pasou a finais = esta cousa. 210 00:10:09,581 --> 00:10:12,580 Este é un exemplo dun opcional argumento, que é unha desas cousas 211 00:10:12,580 --> 00:10:14,990 que soporta Python que fai moi útil. 212 00:10:14,990 --> 00:10:18,240 Así impresión realmente ten unha morea de argumentos, que son xeralmente 213 00:10:18,240 --> 00:10:20,140 definida para o seu estándar valor, pero aquí eu teño 214 00:10:20,140 --> 00:10:21,924 decidiu substituír o nome final. 215 00:10:21,924 --> 00:10:24,340 A razón que eu teño que substituílo con unha secuencia baleira 216 00:10:24,340 --> 00:10:26,756 é que de impresión en Python, por estándar, imprime unha nova liña 217 00:10:26,756 --> 00:10:28,630 despois a cousa que dixo iso tamén. 218 00:10:28,630 --> 00:10:31,462 >> Polo tanto, este hash é realmente indo imprimir un hash nunha nova liña. 219 00:10:31,462 --> 00:10:34,670 E se eu non quere hash para imprimir unha nova liña tras iso, entón eu teño que dicir 220 00:10:34,670 --> 00:10:35,340 non imprimir un. 221 00:10:35,340 --> 00:10:37,980 222 00:10:37,980 --> 00:10:43,690 Pero, aínda así, a unha última cousa que este programa está en falta que se ten é 223 00:10:43,690 --> 00:10:44,960 unha inclusión na parte superior. 224 00:10:44,960 --> 00:10:48,120 Imprimir é cocida en Python entón basicamente que non hai ningún cabeceira ou módulo 225 00:10:48,120 --> 00:10:49,869 que precisa inclúen, aínda que se quería 226 00:10:49,869 --> 00:10:52,029 para incluír outras cousas nun guión Python, 227 00:10:52,029 --> 00:10:55,320 Eu faría iso nun format-- moi semellante as palabras son só un pouco diferente. 228 00:10:55,320 --> 00:10:58,840 229 00:10:58,840 --> 00:11:01,360 >> Eu mencionar que Non precisa de un principal aquí, 230 00:11:01,360 --> 00:11:03,372 porque o Python comeza execución na parte superior. 231 00:11:03,372 --> 00:11:05,080 Se eu quería involucrar isto en función, I 232 00:11:05,080 --> 00:11:07,667 podería facelo como eu isto-- diría def nome da función, 233 00:11:07,667 --> 00:11:10,500 argumentos pode entrar aquí e nós imos ver algúns dos máis tarde, dous puntos, 234 00:11:10,500 --> 00:11:13,040 e despois, de novo, Toda bloque partiu 235 00:11:13,040 --> 00:11:16,810 é o que é o operativo bloquear para esa función. 236 00:11:16,810 --> 00:11:18,560 Polo tanto, esta é a definición da función. 237 00:11:18,560 --> 00:11:21,587 E hai unha declaración, a continuación, para abaixo aquí, eu só podo chamar a función. 238 00:11:21,587 --> 00:11:23,920 E, de novo, o programa intérprete, comezando na parte superior, 239 00:11:23,920 --> 00:11:25,280 vai ver que é a definición. 240 00:11:25,280 --> 00:11:27,960 Non se levará a cabo ata que este chegar aquí, e entón é como, oh 241 00:11:27,960 --> 00:11:30,860 agora chamou, eu creo que eu debería executalo. 242 00:11:30,860 --> 00:11:33,850 >> Unha cousa que é moi común ver en arquivos Python, 243 00:11:33,850 --> 00:11:36,700 especialmente arquivos Python que son liberados para o público 244 00:11:36,700 --> 00:11:41,650 e desenvolvido e desenvolvido e por-- mantida, é algo deste xeito. 245 00:11:41,650 --> 00:11:44,540 Isto é así porque basically-- Python, comezar na parte superior 246 00:11:44,540 --> 00:11:50,310 e entón executar ata o fondo, Eu se eu só tiña Mario chamou aquí, 247 00:11:50,310 --> 00:11:54,190 a continuación, en calquera momento eu incluído o ficheiro en outro arquivo, porque eu quería usar 248 00:11:54,190 --> 00:11:58,580 é función de Mario, que sería outro ficheiro tamén teñen esta chamada para Mario nel. 249 00:11:58,580 --> 00:12:01,000 E cando eu execute o ficheiro, el chamaría Mario. 250 00:12:01,000 --> 00:12:04,520 >> Polo tanto, é posible que só quere facer este realmente 251 00:12:04,520 --> 00:12:07,290 executado este ficheiro en particular. 252 00:12:07,290 --> 00:12:11,520 E así que podo romper iso nun Idioma como este, onde digo, 253 00:12:11,520 --> 00:12:14,820 o nome desta execución ambiente é o principal, 254 00:12:14,820 --> 00:12:16,200 entón eu quero facer estas cousas. 255 00:12:16,200 --> 00:12:18,710 Se non, alguén pode use-- incluír o meu function-- 256 00:12:18,710 --> 00:12:22,510 meu arquivo, e só para obter o acceso a esas funcións 257 00:12:22,510 --> 00:12:25,552 sen ter que realizar as cousas que quero realizar neste arquivo. 258 00:12:25,552 --> 00:12:27,260 Isto é, de novo, opcional pero moi común. 259 00:12:27,260 --> 00:12:30,450 260 00:12:30,450 --> 00:12:33,840 >> Esas cousas son entirely-- son exactamente o mesmo entre C e Python, 261 00:12:33,840 --> 00:12:35,100 seguramente en tres. 262 00:12:35,100 --> 00:12:38,610 Creo que en 2, o operador de división ás veces dá-lo de volta cando flutúa 263 00:12:38,610 --> 00:12:41,450 vostede operador ints, e quere quería que vostede ou non. 264 00:12:41,450 --> 00:12:44,777 Pero máis, menos, e os tempos funcionan exactamente como esperaría, 265 00:12:44,777 --> 00:12:46,110 excepto durante pouco máis tipos. 266 00:12:46,110 --> 00:12:49,740 Entón pode multiplicar por Carrozas ints, e este tipo de cousas. 267 00:12:49,740 --> 00:12:52,480 >> conxunto funciona exactamente da mesma. 268 00:12:52,480 --> 00:12:54,310 Podes usar dous sinais de igual. 269 00:12:54,310 --> 00:12:59,000 inequals-- maior que, menor que, estes tipos de coisas- 270 00:12:59,000 --> 00:13:02,580 teñen os significados que está familiarizado con eles. 271 00:13:02,580 --> 00:13:05,770 >> Onde C usa eses operadores, Python usa un pouco máis Inglés 272 00:13:05,770 --> 00:13:06,390 aqueles lexible. 273 00:13:06,390 --> 00:13:09,348 Entón, en vez de dous, ampersands, vostede literalmente escribir a palabra "e", "ou" 274 00:13:09,348 --> 00:13:10,740 ou non." 275 00:13:10,740 --> 00:13:13,420 Como no seu se-- na súa instrucións condicionais, 276 00:13:13,420 --> 00:13:17,670 Vimos anteriormente que esta sintaxe en C corresponde a esta sintaxe en Python. 277 00:13:17,670 --> 00:13:21,010 E hai non moi diferente alí, con excepción de un pouco 278 00:13:21,010 --> 00:13:24,780 de puntuación en torno aos lados. 279 00:13:24,780 --> 00:13:28,890 Unha vez máis, en que C sería máis se, Python usa Elif, 280 00:13:28,890 --> 00:13:33,960 pero estes son principalmente cambios de nivel de superficie. 281 00:13:33,960 --> 00:13:38,450 >> Iteración como este é a miúdo escrita nesta lingua en Python. 282 00:13:38,450 --> 00:13:42,350 Pode fabricar este tipo de cousa cun loop while no exterior 283 00:13:42,350 --> 00:13:46,387 se quere, pero certamente non ten que. 284 00:13:46,387 --> 00:13:48,970 E, de novo, se quería o imprimir elementos dunha matriz 285 00:13:48,970 --> 00:13:50,560 pode facelo deste xeito. 286 00:13:50,560 --> 00:13:52,927 Unha das cousas divertidas sobre Python, porén, 287 00:13:52,927 --> 00:13:54,760 é que non precisa para usar este paradigma, 288 00:13:54,760 --> 00:13:57,290 e pode usar un un pouco máis elegante. 289 00:13:57,290 --> 00:13:59,370 Vostede di que para un en Ary. 290 00:13:59,370 --> 00:14:02,980 >> Entón, en vez de ir aquí e correndo ao longo dos índices, 291 00:14:02,980 --> 00:14:05,630 e, a continuación, tirando para fóra elementos individuais, 292 00:14:05,630 --> 00:14:08,644 dicir a verdade só para a atropelar os propios elementos. 293 00:14:08,644 --> 00:14:11,060 E entón o que está facendo interior pode operar directamente 294 00:14:11,060 --> 00:14:13,260 sobre os elementos, o que é moi divertido. 295 00:14:13,260 --> 00:14:16,710 E nós imos see-- usaremos que idioma novo e de novo 296 00:14:16,710 --> 00:14:18,050 como nós camiñamos través de código. 297 00:14:18,050 --> 00:14:20,091 >> Isto é, de novo, un exemplo de algo que eu vou 298 00:14:20,091 --> 00:14:23,300 Python chamar máxica, aínda que existan razóns técnicas moito porque traballa. 299 00:14:23,300 --> 00:14:26,340 E hai cousas que técnicos Debe ser verdade sobre array en orde 300 00:14:26,340 --> 00:14:28,340 para este traballo nos bastidores. 301 00:14:28,340 --> 00:14:31,390 A cousa é que a maioría dos tipos que esperar que iso funcione 302 00:14:31,390 --> 00:14:36,610 ter esta aplicada para na lingua embutido. 303 00:14:36,610 --> 00:14:40,030 >> Outra cousa que sería bo se iso funcionou en todas as linguas, 304 00:14:40,030 --> 00:14:45,460 pero hai algunhas razóns polo que non pode, imprimir esta cadea veces este número. 305 00:14:45,460 --> 00:14:48,860 Acontece que en Python, iso fai exactamente o que desexa, que é só diversión, 306 00:14:48,860 --> 00:14:52,840 e significa que podemos, en realidade, reducir este programa, novo mario.c. 307 00:14:52,840 --> 00:14:57,150 No canto de iteración moito, podemos só dicir, eu quero un pouco número de espazos, 308 00:14:57,150 --> 00:15:01,120 Quero o número de hash, e algúns hash ao final. 309 00:15:01,120 --> 00:15:02,640 E, de novo, usamos este formato. 310 00:15:02,640 --> 00:15:05,340 >> Aquí, nós estamos pasando en unha variable dese xeito. 311 00:15:05,340 --> 00:15:08,050 Unha vez máis, non precisamos de dicir que tipo de variable é, 312 00:15:08,050 --> 00:15:11,322 ea única vez que vai obter erros é en tempo de execución. 313 00:15:11,322 --> 00:15:13,030 Cando alguén intenta para pasar algo en, 314 00:15:13,030 --> 00:15:14,860 que vai vir para a función moi ben. 315 00:15:14,860 --> 00:15:18,240 Se calzar aquí, porque este non é o O que se pode crear rangos máis, 316 00:15:18,240 --> 00:15:22,100 Vou coller un erro de execución alí, e eu vou ter que depurá lo desa forma. 317 00:15:22,100 --> 00:15:25,050 Pero, con todo, eu non teño de ser moi coidadoso sobre o que 318 00:15:25,050 --> 00:15:32,800 pásase en tanto tempo como no real execución todo funciona moi limpa. 319 00:15:32,800 --> 00:15:35,080 >> Podería ata facelo un pouco máis limpo 320 00:15:35,080 --> 00:15:41,770 usando unha función interna, en particular, en cordas, o que é xustificado á dereita. 321 00:15:41,770 --> 00:15:45,250 Esta é só unha función útil mentindo ao redor da biblioteca. 322 00:15:45,250 --> 00:15:47,660 É na documentación se ir e ollar para el. 323 00:15:47,660 --> 00:15:51,650 E digo, ben, eu vou ter esa secuencia, algún número de hash, 324 00:15:51,650 --> 00:15:56,390 e gustaríame xustificar dereito pad ele-- Lo con espazos para ser ese lonxitude. 325 00:15:56,390 --> 00:16:00,584 >> De novo, isto é na documentación, que trae US-- 326 00:16:00,584 --> 00:16:03,500 En realidade, eu vou facer clic these-- o que nos leva á nosa segunda regra 327 00:16:03,500 --> 00:16:06,990 á biblioteca estándar Python-- métodos de función son os seus amigos. 328 00:16:06,990 --> 00:16:09,880 E é moitas veces vale o seu tempo para ir á procura de pregúntome 329 00:16:09,880 --> 00:16:12,310 se hai unha cousa que só fai iso. 330 00:16:12,310 --> 00:16:13,830 Hai probablemente é. 331 00:16:13,830 --> 00:16:15,990 Se desexa almofada unha secuencia de caracteres, se 332 00:16:15,990 --> 00:16:17,470 quere aproveitar a volta metade dunha corda, se 333 00:16:17,470 --> 00:16:20,370 quere buscar a través dunha corda, se desexa eliminar un par de cousas 334 00:16:20,370 --> 00:16:22,420 cunha corda comas entre eles, 335 00:16:22,420 --> 00:16:24,640 existen biblioteca estándar funcións para facelo. 336 00:16:24,640 --> 00:16:27,190 >> E iso fai a súa vida máis doado se usalos 337 00:16:27,190 --> 00:16:29,240 en vez de rolar para fóra todo por conta propia 338 00:16:29,240 --> 00:16:31,650 en cinco liñas de código aquí, cinco liñas de código aquí. 339 00:16:31,650 --> 00:16:34,430 Isto realmente comeza en engadir ata tempo real. 340 00:16:34,430 --> 00:16:37,430 >> Unha das cousas interesantes sobre como este é chamado. 341 00:16:37,430 --> 00:16:39,980 Vai notar que hai unha cousa de punto. 342 00:16:39,980 --> 00:16:43,490 Eu teño algún obxecto á esquerda, e, a continuación, liguei para unha función nun punto. 343 00:16:43,490 --> 00:16:49,780 Este é un dos paradigmas que Python usa métodos para a fixación de obxectos. 344 00:16:49,780 --> 00:16:54,410 Imos falar sobre o que este é moi brevemente, ao final, 345 00:16:54,410 --> 00:16:58,510 pero sabemos que podemos ambos operan en cousas por tomar esa cousa dicindo dot 346 00:16:58,510 --> 00:17:01,690 o que quere, ou por teléfono unha función que leva 347 00:17:01,690 --> 00:17:04,339 ese obxecto e algúns outros argumentos. 348 00:17:04,339 --> 00:17:07,450 >> Entón, estas son as dúas formas que as cousas están feitas en Python. 349 00:17:07,450 --> 00:17:09,780 E se un determinado función é aplicada 350 00:17:09,780 --> 00:17:14,230 neste estilo ou este estilo é algo que 351 00:17:14,230 --> 00:17:19,990 que ollar para arriba ata conseguir un xeito para os que un que é probable que se enmarcan. 352 00:17:19,990 --> 00:17:22,660 Hai un máis ou menos cohesionada filosofía detrás Python 353 00:17:22,660 --> 00:17:24,930 que absorben principalmente escribindo unha morea nel. 354 00:17:24,930 --> 00:17:28,190 Nalgún momento, o que un deses algo será aplicado como 355 00:17:28,190 --> 00:17:29,470 pasa a ser natural. 356 00:17:29,470 --> 00:17:32,420 De momento, é só algo aprende como descubrir 357 00:17:32,420 --> 00:17:34,140 cada cousa individual. 358 00:17:34,140 --> 00:17:36,420 >> Entón biblioteca estándar funcións son os seus amigos, 359 00:17:36,420 --> 00:17:41,320 e elas permiten que escriba cousas que ocupar ese espazo moi pronto, 360 00:17:41,320 --> 00:17:42,040 realmente elegante. 361 00:17:42,040 --> 00:17:45,670 E este é, en realidade, probablemente máis lexible, eu diría, que o programa C 362 00:17:45,670 --> 00:17:46,780 por alí. 363 00:17:46,780 --> 00:17:49,730 Sen esquecer o feito de que é tan suma, pode caber un elefante enteiro 364 00:17:49,730 --> 00:17:52,250 no espazo que temos gardado. 365 00:17:52,250 --> 00:17:56,270 >> Outra cousa, esta é unha implementación de Mario que é punto C, que eu creo que 366 00:17:56,270 --> 00:17:57,890 é o máis curto que pode obterse. 367 00:17:57,890 --> 00:18:00,757 Non ten o get int, pero el duro códigos valor de 10 368 00:18:00,757 --> 00:18:02,090 do mesmo xeito que esta non. 369 00:18:02,090 --> 00:18:06,080 Acontece que este aquí reloxos en 84 caracteres, mentres que Python é de 64. 370 00:18:06,080 --> 00:18:11,490 E iso é infinitamente máis lexible que ese lixo aquí. 371 00:18:11,490 --> 00:18:14,610 Así Python é máis eficiente no espazo. 372 00:18:14,610 --> 00:18:17,260 É un pouco menos eficiente o tempo, pero non por moito. 373 00:18:17,260 --> 00:18:18,890 >> As listas son unha cousa importante en Python. 374 00:18:18,890 --> 00:18:21,540 375 00:18:21,540 --> 00:18:24,587 Non vimos eles, pero eles operan como matrices facer en C. 376 00:18:24,587 --> 00:18:27,170 Entón aquí, pode declaralo los, pode paso-los en algo. 377 00:18:27,170 --> 00:18:29,810 Agora cadrados detén un matriz destas cousas. 378 00:18:29,810 --> 00:18:33,480 Unha vez máis, non declarados como tipo, pero sempre tentar usalo, 379 00:18:33,480 --> 00:18:36,260 algo que esperar traballar sobre unha matriz de números enteiros 380 00:18:36,260 --> 00:18:40,130 vai traballar unha matriz de números enteiros. 381 00:18:40,130 --> 00:18:42,030 >> Iso é unha cousa que Absolutamente non pode 382 00:18:42,030 --> 00:18:47,390 facer en C, xa que o memoria é tan mans, 383 00:18:47,390 --> 00:18:48,950 pero é moi fácil de facer en Python. 384 00:18:48,950 --> 00:18:55,310 Se quero a miña matriz para ser maior, podo engadir un elemento a el e el está ben. 385 00:18:55,310 --> 00:18:57,150 >> O que está a suceder nos bastidores? 386 00:18:57,150 --> 00:18:59,150 O intérprete vai para fóra, e obter un pouco de memoria, 387 00:18:59,150 --> 00:19:00,860 e quizais vai ter un pouco de memoria extra, 388 00:19:00,860 --> 00:19:03,090 entón eu non, entón eu non teño para realloc á vez. 389 00:19:03,090 --> 00:19:04,897 Pero canto máis ter memoria que necesita? 390 00:19:04,897 --> 00:19:06,730 Isto non son decisións que ten que facer, 391 00:19:06,730 --> 00:19:10,540 estas son decisións que os intérprete vai facer. 392 00:19:10,540 --> 00:19:12,270 >> Aquí vemos gama pode levar dous argumentos, 393 00:19:12,270 --> 00:19:16,430 pero aínda vai ser incluida o principio para que engadir un alí. 394 00:19:16,430 --> 00:19:21,970 Esta é unha expresión, que é unha aínda máis xeito intelixente de escribir cousas como esta. 395 00:19:21,970 --> 00:19:25,980 É chamado de lista de comprensión, e aquí o que estamos dicindo 396 00:19:25,980 --> 00:19:32,560 é que me gustaría poñer en i cadrado para cada valor de i nesta gama. 397 00:19:32,560 --> 00:19:35,770 Esa cousa á dereita podería ser outro array, e esta cousa da esquerda 398 00:19:35,770 --> 00:19:40,740 ser calquera función específica que levaría en i como unha variable 399 00:19:40,740 --> 00:19:42,250 e me dar un resultado. 400 00:19:42,250 --> 00:19:43,480 >> O que eu vou facer é, Eu estou indo a construír 401 00:19:43,480 --> 00:19:46,200 unha matriz que se todas esas cousas para cada valor nese intervalo. 402 00:19:46,200 --> 00:19:48,960 403 00:19:48,960 --> 00:19:55,670 E iso é super elegante, super curto, e é moi claro o que iso significa. 404 00:19:55,670 --> 00:19:59,190 Esta é unha das máis coisas- este é novo, 405 00:19:59,190 --> 00:20:03,860 un de-- moi emblemático da razóns que persoas como Python. 406 00:20:03,860 --> 00:20:05,900 Se che gusta de programación como este, entón Python 407 00:20:05,900 --> 00:20:07,830 é unha linguaxe que desexa aprender. 408 00:20:07,830 --> 00:20:10,950 >> E, de novo, hai técnica razóns polo que isto funciona. 409 00:20:10,950 --> 00:20:14,730 Pero, tanto como nós estamos preocupados, nós máis ou menos non me importa. 410 00:20:14,730 --> 00:20:18,500 >> Entón, se quere imprimir listas, algunhas das mesmas expresións son útiles. 411 00:20:18,500 --> 00:20:20,940 Para i neste intervalo, poderíamos Índice través de todas as cousas 412 00:20:20,940 --> 00:20:23,140 e, a continuación, imprimir-los todos para fóra. 413 00:20:23,140 --> 00:20:24,650 E vai ver len aquí. 414 00:20:24,650 --> 00:20:27,150 Se xa quixo comezar a lonxitude da matriz, que é 415 00:20:27,150 --> 00:20:31,150 moi fácil en Python, é moi difícil en C. 416 00:20:31,150 --> 00:20:33,720 Isto imprimir exactamente o que esperar que el. 417 00:20:33,720 --> 00:20:36,986 Poderiamos tamén, como vimos antes, iterado sobre os elementos en array 418 00:20:36,986 --> 00:20:39,860 directamente, e despois é só falar eles, en vez de ter o índice 419 00:20:39,860 --> 00:20:43,190 de volta á matriz de cada vez. 420 00:20:43,190 --> 00:20:45,990 >> E iso é algo que se pode facer. 421 00:20:45,990 --> 00:20:49,984 Así, en C, se pedir algo como este, impresión diría, 422 00:20:49,984 --> 00:20:51,150 iso é un array de enteiros. 423 00:20:51,150 --> 00:20:53,456 Isto definitivamente non é un corda, eu non podo imprimir lo. 424 00:20:53,456 --> 00:20:54,830 Python máis ou menos non lle importa. 425 00:20:54,830 --> 00:20:57,496 É como si existe unha forma que eu podería transformar isto nun fío? 426 00:20:57,496 --> 00:20:58,500 Si, eu vou facer iso. 427 00:20:58,500 --> 00:21:01,600 E entón eu vou só imprimir iso. 428 00:21:01,600 --> 00:21:03,640 Isto significa que pode facer cousas como-- estes 429 00:21:03,640 --> 00:21:06,530 son a maioría das partes duras do xogo de quince anos, por escrito 430 00:21:06,530 --> 00:21:08,930 moi brevemente en Python. 431 00:21:08,930 --> 00:21:11,320 >> Verá que non hai un pouco de-- aquí 432 00:21:11,320 --> 00:21:14,441 Eu lanzou un enteiro para unha cadea, e eu teño que facelo manualmente. 433 00:21:14,441 --> 00:21:16,190 E eu estou indo a engadir Lo a outra cadea, 434 00:21:16,190 --> 00:21:17,590 ou doutra forma Python queda confuso. 435 00:21:17,590 --> 00:21:19,840 Pero se cando está engadindo unha cadea para un enteiro, 436 00:21:19,840 --> 00:21:22,630 son eu supor para obter un enteiros de volta ou unha secuencia de volta? 437 00:21:22,630 --> 00:21:24,480 Pero, de novo, se só chamar str nunha cousa, 438 00:21:24,480 --> 00:21:27,240 e poderían, de calquera posible mundo pode converter nunha secuencia de caracteres, 439 00:21:27,240 --> 00:21:30,390 probablemente será convertida nunha cadea. 440 00:21:30,390 --> 00:21:33,120 >> Aquí vemos o uso de aniñada comprensión da lista 441 00:21:33,120 --> 00:21:38,690 na parte esquerda, algúns de indexación, que é exactamente como estaría afeito con iso, 442 00:21:38,690 --> 00:21:40,060 e algúns a impresión de cousas. 443 00:21:40,060 --> 00:21:42,560 Unha vez máis, definimos algúns funcións e imos chamalos abaixo 444 00:21:42,560 --> 00:21:45,820 na principal cando nós realmente obter o ficheiro. 445 00:21:45,820 --> 00:21:52,004 retorno funciona exactamente como quere espera de traballar con C. Buscar, 446 00:21:52,004 --> 00:21:54,420 podemos configurar cousas como isto-- aquí está lista de comprensión 447 00:21:54,420 --> 00:21:59,245 hai unha asignación a unha variable, e podemos realmente facelo aínda máis fácil. 448 00:21:59,245 --> 00:22:01,870 Non necesitamos escribir investigación, porque built-in para o idioma 449 00:22:01,870 --> 00:22:04,230 é se esa cousa é nesa matriz. 450 00:22:04,230 --> 00:22:05,680 Voltar true, senón retornar falso. 451 00:22:05,680 --> 00:22:08,830 Entón esta é a totalidade do achado. 452 00:22:08,830 --> 00:22:12,230 >> A totalidade da especie implica chamar especie, 453 00:22:12,230 --> 00:22:15,462 é-- que hai implementacións desta construído en certas bibliotecas C. 454 00:22:15,462 --> 00:22:17,170 Se desexa deste especie de atrás, 455 00:22:17,170 --> 00:22:20,450 pode substituír ese opcional argumento en sentido inverso cunha certa. 456 00:22:20,450 --> 00:22:23,350 457 00:22:23,350 --> 00:22:27,860 E se quere clasificar máis cordas, que é built-in tamén. 458 00:22:27,860 --> 00:22:31,950 >> Polo tanto, este non é para dicir que estes son cousas que ten que facer todos os días, 459 00:22:31,950 --> 00:22:34,280 pero a idea é que este é a filosofía do Python, 460 00:22:34,280 --> 00:22:37,530 que todas estas cousas que desexa tipo de querer facer son built-in. 461 00:22:37,530 --> 00:22:42,410 E a maioría das funcións estándar, tan tipo, lonxitude, calquera que sexa, 462 00:22:42,410 --> 00:22:44,380 Soporta a entrada de máis loxicamente sensato. 463 00:22:44,380 --> 00:22:49,020 Chama len nunha disposición a mesma forma chama len nunha corda. 464 00:22:49,020 --> 00:22:55,785 Vostede multiply-- clasificar cordas Do mesmo xeito clasificar matrices. 465 00:22:55,785 --> 00:22:58,930 466 00:22:58,930 --> 00:23:00,740 >> A maioría das funcións estándar que as persoas constrúen, 467 00:23:00,740 --> 00:23:03,000 e máis third-party bibliotecas que a xente 468 00:23:03,000 --> 00:23:06,980 construír, porque están emulando o deseño da biblioteca estándar, 469 00:23:06,980 --> 00:23:10,190 pode ser chamado en todo o que é como, por que non esta só traballar, 470 00:23:10,190 --> 00:23:12,800 en C. Máis ou menos, só pode traballar en Python 471 00:23:12,800 --> 00:23:15,930 porque as persoas traballan detrás figura o que é unha cousa e despois operar 472 00:23:15,930 --> 00:23:17,510 de forma adecuada sobre el. 473 00:23:17,510 --> 00:23:22,760 Entón, de novo, a formación técnica, pero fai a nosa vida máis fácil como programadores. 474 00:23:22,760 --> 00:23:26,820 >> Entón aquí está o ficheiro I / O. arquivo E / ten moitos pequenas cousas que fan máis complicado, 475 00:23:26,820 --> 00:23:29,890 e por iso hai recursos en liña, pero en poucas palabras, 476 00:23:29,890 --> 00:23:33,010 chama aberta nun ficheiro nome con un tipo particular. 477 00:23:33,010 --> 00:23:37,640 Así que é ler, ler e escribir, escribir ou engadir. 478 00:23:37,640 --> 00:23:41,790 Le un certo número de caracteres fóra e imprimir eses, 479 00:23:41,790 --> 00:23:42,595 terá Ola! 480 00:23:42,595 --> 00:23:43,970 Quero dicir, como este ficheiro tivo Ola! 481 00:23:43,970 --> 00:23:46,480 Nel, chame para ler, eo que vai recibir de volta 482 00:23:46,480 --> 00:23:49,520 é unha cadea que ten todo do resto da matriz, 483 00:23:49,520 --> 00:23:50,860 ou a totalidade do resto do ficheiro. 484 00:23:50,860 --> 00:23:53,805 485 00:23:53,805 --> 00:23:56,055 Se conectar a ler de novo, está ao final do ficheiro, 486 00:23:56,055 --> 00:23:58,138 e así non pode algo e así vai pechar. 487 00:23:58,138 --> 00:24:02,510 De novo, isto é, en vez de .close arquivo de preto, como sería en C. 488 00:24:02,510 --> 00:24:07,190 Isto é máis ou menos porque é un f cousa, e desexa f para pechar. 489 00:24:07,190 --> 00:24:12,092 Pero ficheiro básico E / S non é particularmente complicada. 490 00:24:12,092 --> 00:24:15,300 De novo, se quere abrir un ficheiro, se desexa ler unha fileira particular, 491 00:24:15,300 --> 00:24:17,870 pode saír de particular linha-- hai built-ins para iso. 492 00:24:17,870 --> 00:24:19,995 Se desexa escribir un cousa, pode escribir isto. 493 00:24:19,995 --> 00:24:23,412 Se desexa escribir out individual mordidas, pode escribir aqueles. 494 00:24:23,412 --> 00:24:25,620 E se quere iteración sobre as liñas dun ficheiro 495 00:24:25,620 --> 00:24:29,557 individualmente, como fixemos en unha peza de hai unhas semanas, pode facelo. 496 00:24:29,557 --> 00:24:32,140 Unha vez máis, a maioría dos obxectos que desexa quere ser capaz de interactuar sobre 497 00:24:32,140 --> 00:24:33,780 soporte a iteración sobre eles. 498 00:24:33,780 --> 00:24:37,430 En Pythons, un arquivo é quizais algo que Gustaríame iterado liña por liña. 499 00:24:37,430 --> 00:24:39,138 Se fose un dicionario de palabras e eu estaba 500 00:24:39,138 --> 00:24:42,181 tentando facer que os individuo palabras para fóra, a continuación, dentro deste loop, 501 00:24:42,181 --> 00:24:44,180 liña que será cada palabra de cada vez e este 502 00:24:44,180 --> 00:24:47,880 será executado para cada liña no arquivo ata que o fin do ficheiro. 503 00:24:47,880 --> 00:24:52,280 E, de novo, se eu impreso cada liña, as liñas veñen con novas liñas, 504 00:24:52,280 --> 00:24:54,740 así que eu estou definindo a final de volta a unha cousa como esta. 505 00:24:54,740 --> 00:24:56,580 Entón eu ía estar o contido do meu arquivo. 506 00:24:56,580 --> 00:25:03,610 507 00:25:03,610 --> 00:25:07,480 >> A segunda cousa que actúa en algunhas formas, como listas, e nalgúns aspectos 508 00:25:07,480 --> 00:25:11,870 como algo substancialmente máis poderoso, 509 00:25:11,870 --> 00:25:16,170 son dicionarios, que son realmente legal de usar, pero son basicamente de hash 510 00:25:16,170 --> 00:25:17,670 mesas disfrazado. 511 00:25:17,670 --> 00:25:23,330 Crear un usando exactamente dous personaxes, o que é impresionante 512 00:25:23,330 --> 00:25:25,959 se intentou aplicar o táboa de hash para o seu conxunto de problemas, 513 00:25:25,959 --> 00:25:27,250 sabe moita dor que pode ser. 514 00:25:27,250 --> 00:25:29,390 Pero a xente fixeron , E fixo tan ben, 515 00:25:29,390 --> 00:25:32,260 que non ten que preocupar máis. 516 00:25:32,260 --> 00:25:35,180 >> A continuación, pode introducir cousas individuais. 517 00:25:35,180 --> 00:25:38,110 Tables-- Hash ou dicionarios particularmente non 518 00:25:38,110 --> 00:25:40,240 importa o que está a garda en si. 519 00:25:40,240 --> 00:25:44,210 Polo tanto, algunhas entradas son números, e algunhas entradas son listas, 520 00:25:44,210 --> 00:25:47,360 algunhas entradas son outros dicionarios, e algunhas entradas son cadeas, 521 00:25:47,360 --> 00:25:49,930 Python non fai moito coidado. 522 00:25:49,930 --> 00:25:53,460 >> De novo, se entrar nel esperando unha corda eo que recibe de volta 523 00:25:53,460 --> 00:25:56,269 é unha matriz, iso é problema seu. 524 00:25:56,269 --> 00:25:58,810 E quizais a culpa é de quen Pensei que era poñer as cousas 525 00:25:58,810 --> 00:26:00,476 no dicionario, quizais que era vostede. 526 00:26:00,476 --> 00:26:02,350 Se iso era alguén outra cousa, espero que eran 527 00:26:02,350 --> 00:26:04,520 ben comportado sobre o que ía no dicionario 528 00:26:04,520 --> 00:26:07,420 e non deixou ningunha trampas para que poida caer. 529 00:26:07,420 --> 00:26:10,890 >> Pero as funcións estándar será darlle de volta as cousas ben moza. 530 00:26:10,890 --> 00:26:13,500 É o que din iso volve copia dun dicionario de cordas, 531 00:26:13,500 --> 00:26:15,860 entón todo o que está indo para saír é unha cadea. 532 00:26:15,860 --> 00:26:20,710 Se fai algunha deste e viaxes lo, así, iso pode estar en ti. 533 00:26:20,710 --> 00:26:25,542 Python certamente lle dá o suficiente corda para aforcar, se desexa. 534 00:26:25,542 --> 00:26:28,250 Agora podemos imprimir individuo elementos deste e iso volve 535 00:26:28,250 --> 00:26:29,935 exactamente o que esperar. 536 00:26:29,935 --> 00:26:32,810 Exactamente o que esperar, eu creo, é unha frase que eu estou usando un monte, 537 00:26:32,810 --> 00:26:35,070 pero iso é máis ou menos como Python funciona. 538 00:26:35,070 --> 00:26:39,880 Se pedir unha cousa que non é el, Python vai tirar un erro 539 00:26:39,880 --> 00:26:43,194 e que vai desistir de ti para fóra de calquera programa que estaba. 540 00:26:43,194 --> 00:26:45,360 Realmente vai imprimir máis información do que iso, 541 00:26:45,360 --> 00:26:49,110 vai apuntar vocę-- vai engadir unha liña, e así. 542 00:26:49,110 --> 00:26:52,190 >> E, de novo, quizais queremos iterado sobre dicionarios 543 00:26:52,190 --> 00:26:54,410 e atopar todas as cousas nel. 544 00:26:54,410 --> 00:26:57,440 Aquí estamos interactuar sobre dúas cousas á vez. 545 00:26:57,440 --> 00:27:03,040 E así imos facelo cunha chave, o valor, pero, a continuación, imprimir todo isto. 546 00:27:03,040 --> 00:27:06,300 >> E se quixésemos cast-- se realmente foi este, 547 00:27:06,300 --> 00:27:10,840 teriamos problemas porque on-- cando fomos con David, 548 00:27:10,840 --> 00:27:13,920 non podería add-- se non o fixésemos lanzalo para unha cadea en primeiro lugar, 549 00:27:13,920 --> 00:27:17,802 non poderiamos engadir que matriz de cadeas nunha cadea. 550 00:27:17,802 --> 00:27:19,760 Pero se nós expulsalo lo para un secuencia, temos algo 551 00:27:19,760 --> 00:27:22,590 como este, que é quizais o que nós queremos ler. 552 00:27:22,590 --> 00:27:27,000 553 00:27:27,000 --> 00:27:30,500 >> E este é o Speller. 554 00:27:30,500 --> 00:27:32,460 Acabamos de ler nas cousas. 555 00:27:32,460 --> 00:27:35,770 Así, podemos ler en palabras individuais como liñas. 556 00:27:35,770 --> 00:27:38,240 Nós cortar a última cousa, entón colonos menos 1 557 00:27:38,240 --> 00:27:41,651 chomps fóra o último que nós-- o último carácter dunha cadea. 558 00:27:41,651 --> 00:27:42,150 Imos dicir. 559 00:27:42,150 --> 00:27:44,730 OK, cada un deles recibe inserida neste dicionario, 560 00:27:44,730 --> 00:27:45,810 cartografía de un valor de 1. 561 00:27:45,810 --> 00:27:48,006 Nós particularmente non se preocupan ese, 562 00:27:48,006 --> 00:27:51,130 pero é só alí para dicir, oh ben, esta cousa que eu vou poñer no dicionario. 563 00:27:51,130 --> 00:27:53,182 Porque despois de que nós somos vai facer é que estamos 564 00:27:53,182 --> 00:27:55,390 vai dicir, ben, se é no dicionario de todo. 565 00:27:55,390 --> 00:27:57,650 >> Unha vez máis, esta verificación para adhesión é ata operativo 566 00:27:57,650 --> 00:28:00,940 usando un diferente algoritmo que vai nunha lista, 567 00:28:00,940 --> 00:28:05,709 pero chamalo do mesmo xeito, que é un pouco dese revestimento de azucre Python 568 00:28:05,709 --> 00:28:07,250 cousas de xeito que xa son máis fáciles de usar. 569 00:28:07,250 --> 00:28:10,230 E, de novo, vimos cousas así antes. 570 00:28:10,230 --> 00:28:12,940 Este é basicamente atopar, ou é exactamente a mesma sintaxe 571 00:28:12,940 --> 00:28:16,480 como atopar, pero está operando ao longo dun estrutura totalmente diferente. 572 00:28:16,480 --> 00:28:20,170 E nós particularmente non me importa. 573 00:28:20,170 --> 00:28:25,540 Polo tanto, estas son as cousas que foron convidados a aplicar para ortográfico. 574 00:28:25,540 --> 00:28:29,278 A este ritmo, imos chegar máis ou menos todo Serie de exercicios feito. 575 00:28:29,278 --> 00:28:31,474 >> Audiencia: Así que basicamente só volve 576 00:28:31,474 --> 00:28:34,852 grafado incorrectamente como se iso non acontecer combinar algo no dicionario? 577 00:28:34,852 --> 00:28:36,060 ROSS Rheingans-Yoo: Si, si. 578 00:28:36,060 --> 00:28:38,964 579 00:28:38,964 --> 00:28:40,880 E así, esta é unha adaptación dun conxunto de problemas 580 00:28:40,880 --> 00:28:43,150 que lle pide para facer exactamente isto. 581 00:28:43,150 --> 00:28:46,357 >> Audiencia: Por que a liña non ser un alí? 582 00:28:46,357 --> 00:28:48,190 ROSS Rheingans-Yoo: Entón, cando está interactuando 583 00:28:48,190 --> 00:28:50,300 sobre un ficheiro pedindo por liñas, as liñas 584 00:28:50,300 --> 00:28:53,900 veñen con un carácter de nova liña a finais de ele-- salvo 1 585 00:28:53,900 --> 00:28:55,260 é só para facer a compra aqueles fóra. 586 00:28:55,260 --> 00:28:59,549 E isto é especialmente flexible forma de indexar as cousas. 587 00:28:59,549 --> 00:29:01,590 Entón se ten unha secuencia de caracteres, e desexa, así, eu son 588 00:29:01,590 --> 00:29:05,340 comeza en carácter tres e eu estou indo a ir ata o final. 589 00:29:05,340 --> 00:29:07,140 3 colonos vai facelo por vostede. 590 00:29:07,140 --> 00:29:10,570 Se vostede é como eu quero comezar polo comezando e ir ao último menos 1 591 00:29:10,570 --> 00:29:12,400 carácter, dous puntos menos 1. 592 00:29:12,400 --> 00:29:14,940 E se quixese ir de do terceiro ao primeiro negativo, 593 00:29:14,940 --> 00:29:16,570 entón diría 3 menos 1. 594 00:29:16,570 --> 00:29:19,464 595 00:29:19,464 --> 00:29:22,400 >> Ademais, se quere indexar en cousas desde a parte traseira, 596 00:29:22,400 --> 00:29:24,470 só no índice con números negativos. 597 00:29:24,470 --> 00:29:26,980 E por onde C explotaría ou que 598 00:29:26,980 --> 00:29:31,090 alimento-lo outra memoria que non ten acceso, escoitar que pode dicir menos 1 599 00:29:31,090 --> 00:29:34,104 significa o final, pero un carácter nunha secuencia. 600 00:29:34,104 --> 00:29:36,950 601 00:29:36,950 --> 00:29:43,590 >> Os módulos son version-- son análogos de bibliotecas en C 602 00:29:43,590 --> 00:29:45,119 e son útiles para unha morea de cousas. 603 00:29:45,119 --> 00:29:46,910 Unha morea de cousas que quere facer en Python, 604 00:29:46,910 --> 00:29:50,040 ademais de simple manipulación de variables, 605 00:29:50,040 --> 00:29:52,290 quere chamar ao bibliotecas máis grandes, con maior 606 00:29:52,290 --> 00:29:55,910 interfaces e máis capacidades para interactuar 607 00:29:55,910 --> 00:29:57,195 con outras partes do mundo. 608 00:29:57,195 --> 00:29:58,910 sys é un destes con unha morea de ferramentas 609 00:29:58,910 --> 00:30:01,159 que son útiles para interactuar co propio sistema 610 00:30:01,159 --> 00:30:05,050 e Import-lo como sys importación. 611 00:30:05,050 --> 00:30:07,820 >> Hai máis de documentación que, o que podería ir aquí, 612 00:30:07,820 --> 00:30:11,490 ou pode atopar en Google por googling sys Python. 613 00:30:11,490 --> 00:30:12,640 Escribe entrar. 614 00:30:12,640 --> 00:30:15,140 O primeiro enlace será a documentación en Python 2, 615 00:30:15,140 --> 00:30:19,260 o segundo enlace vai ser o Python 3 documentación. 616 00:30:19,260 --> 00:30:24,830 >> E se escribimos para fóra un ficheiro que mirou como isto-- Se en particular, estamos 617 00:30:24,830 --> 00:30:27,910 mirando para operar sobre argumentos de liña de comandos, 618 00:30:27,910 --> 00:30:30,040 como aprendemos a facer moi a principios desta clase. 619 00:30:30,040 --> 00:30:32,190 Isto non é difícil. Pode saír argv, 620 00:30:32,190 --> 00:30:34,565 que é unha desas cousas que é aplicado pola sys. 621 00:30:34,565 --> 00:30:37,210 Non é built-in para o paquete base, pero, de novo, 622 00:30:37,210 --> 00:30:40,080 pode estendela lo por medio da importación que a funcionalidade de sys. 623 00:30:40,080 --> 00:30:41,090 Vai chamalo sys. 624 00:30:41,090 --> 00:30:42,611 o que quere. 625 00:30:42,611 --> 00:30:43,360 Aquí hai argv. 626 00:30:43,360 --> 00:30:45,193 Non hai realmente ningunha argc en sys, porque 627 00:30:45,193 --> 00:30:47,880 pode obterse tan facilmente chamando len. 628 00:30:47,880 --> 00:30:55,390 Nós, entón, impresa que fóra, entón nós correu na nosa echo-args.py terminal. 629 00:30:55,390 --> 00:30:58,360 Nós volver dunha matriz, que é este primeiro argumento. 630 00:30:58,360 --> 00:31:02,240 Unha vez máis, esta é argv 0, que é a nome da cousa que foi chamado. 631 00:31:02,240 --> 00:31:04,870 Se nós Chamámolas con adicional argumentos, teriamos os de volta. 632 00:31:04,870 --> 00:31:07,687 633 00:31:07,687 --> 00:31:09,770 Esta é unha forma de comezar argumentos de liña de comandos. 634 00:31:09,770 --> 00:31:13,440 Se quere bandeiras Where You Turn sobre cousas particulares ou substitución 635 00:31:13,440 --> 00:31:16,050 un determinado nivel, argparse é o seu amigo. 636 00:31:16,050 --> 00:31:21,550 E unha vez máis cre que en liña en python argparse en Google. 637 00:31:21,550 --> 00:31:24,300 >> Hai un par de utilidade módulos que está a usar 638 00:31:24,300 --> 00:31:27,630 e, de novo, se gastar moito tempo desta lingua importación jsons 639 00:31:27,630 --> 00:31:33,300 para a lectura de dentro e fóra de JSON arquivos, non é complicado. 640 00:31:33,300 --> 00:31:37,139 Abre un ficheiro, chamado json.load naquel arquivo e recibe de volta unha cousa. 641 00:31:37,139 --> 00:31:37,930 Que cousa é esa? 642 00:31:37,930 --> 00:31:40,329 É un obxecto JSON. 643 00:31:40,329 --> 00:31:42,370 Onde ten que JSON matriz, o Python ten arrays. 644 00:31:42,370 --> 00:31:44,420 Onde ten que JSON arrays asociativos, Python de 645 00:31:44,420 --> 00:31:48,810 dicionarios, cordas, e números, e así por diante. 646 00:31:48,810 --> 00:31:53,560 Quere botan iso, abrir un novo ficheiro, vostede chama de despejo, 647 00:31:53,560 --> 00:31:57,590 e cargas e lixeiras para entrar e saír das cordas. 648 00:31:57,590 --> 00:32:02,120 >> Do mesmo xeito, se chama pickles basicamente do mesmo interface. 649 00:32:02,120 --> 00:32:04,740 É útil se lixeiramente máis está desaloxo obxectos Python. 650 00:32:04,740 --> 00:32:08,370 Entón, se vostede sempre quixo para salvar unha versión do estado actual 651 00:32:08,370 --> 00:32:11,930 dunha variable para un futuro realizar o seu programa, 652 00:32:11,930 --> 00:32:14,740 pickles é Python de biblioteca para facelo. 653 00:32:14,740 --> 00:32:19,140 >> Se ten calquera tipo de variable que se pode escribir para fóra 654 00:32:19,140 --> 00:32:21,990 en palabras como e personaxes e bytes-- como este dicionario, 655 00:32:21,990 --> 00:32:24,230 poderiamos escribir para abaixo, nós podería escribilo como 656 00:32:24,230 --> 00:32:26,670 como un obxecto JSON, que foi literalmente estes personaxes. 657 00:32:26,670 --> 00:32:29,420 E entón sería moi doado para un ser humano para abrilo up-- abrir 658 00:32:29,420 --> 00:32:30,889 e lelo. 659 00:32:30,889 --> 00:32:33,180 Se non o fixésemos particularmente se preocupan polos seres humanos ler, 660 00:32:33,180 --> 00:32:38,490 poderiamos embalar aínda máis eficiente en formas que podería máis tarde ser desembalado 661 00:32:38,490 --> 00:32:42,860 ou que podería máis tarde ser inflado. 662 00:32:42,860 --> 00:32:46,740 E iso aforra un 80% do espazo que os obxectos poderían 663 00:32:46,740 --> 00:32:49,390 tomar se escribiu los longhand. 664 00:32:49,390 --> 00:32:52,384 >> Chama pickles moi o mesmo maneira-- despejo, carga, 665 00:32:52,384 --> 00:32:53,800 e entón tome as súas cousas de volta. 666 00:32:53,800 --> 00:32:56,880 Entón, se está escribindo moito programas en Python curtas que 667 00:32:56,880 --> 00:32:59,952 quere gardar estado, e logo ler los de volta máis tarde, cousas como esta 668 00:32:59,952 --> 00:33:00,660 son os seus amigos. 669 00:33:00,660 --> 00:33:02,640 Que podería moi despejo-los facilmente como JSON. 670 00:33:02,640 --> 00:33:04,550 A maioría dos obxectos Python pode despexar o JSON 671 00:33:04,550 --> 00:33:11,310 se hai algunha esperanza de que estruturalmente poderían ser representadas desa forma. 672 00:33:11,310 --> 00:33:14,410 >> Estes son só a punta do iceberg en módulos que son útiles. 673 00:33:14,410 --> 00:33:19,510 Entón sys, os, multiprocessamento, son tipo de burros de carga básicas para as cousas 674 00:33:19,510 --> 00:33:23,120 necesitamos interactuar con o sistema operativo do sistema de ficheiros., 675 00:33:23,120 --> 00:33:28,764 como os.isfile, os.isdirectory, os.makefile, estes son os seus amigos. 676 00:33:28,764 --> 00:33:30,930 Se quere interactuar con un determinado tipo de ficheiro, 677 00:33:30,930 --> 00:33:32,190 JSON, pickles, CSV. 678 00:33:32,190 --> 00:33:37,160 Se quere interactuar con web páxinas, o urllib para http 679 00:33:37,160 --> 00:33:41,370 páxinas. bs4-- BeautifulSoup-- é un analizador marabilloso para html. 680 00:33:41,370 --> 00:33:47,047 Executa-lo nun html e obter ese obxecto matriz aniñada agora, 681 00:33:47,047 --> 00:33:49,630 que pode atravesar máis lookin como con só buscando 682 00:33:49,630 --> 00:33:52,380 se, é, en, o que é fantástico. 683 00:33:52,380 --> 00:33:55,920 >> Hai unha morea de paquetes para running-- 684 00:33:55,920 --> 00:33:57,960 para facer particularmente Mathy cousas. 685 00:33:57,960 --> 00:34:01,790 Entón, se quere multiplicar, inverter, transformar matrices, 686 00:34:01,790 --> 00:34:05,690 numpy é usado por persoas todo o mundo por iso. 687 00:34:05,690 --> 00:34:09,620 scipy é aínda máis útil ferramentas nesa dirección. 688 00:34:09,620 --> 00:34:13,980 aprendizaxe de máquina sklearn--, procesamento de linguaxe natural, 689 00:34:13,980 --> 00:34:17,880 Super material útil, recibe aplicado en Python todo o tempo. 690 00:34:17,880 --> 00:34:21,469 >> E, de novo, leva un pouco máis tempo para write-- sorry, 691 00:34:21,469 --> 00:34:26,199 leva un pouco máis para ser executado, pero a razón que os enxeñeiros reais tenden 692 00:34:26,199 --> 00:34:29,900 uso Python é porque tende a ser bloqueada en escribir o código, no canto 693 00:34:29,900 --> 00:34:32,699 que o seu ordenador executar o código. 694 00:34:32,699 --> 00:34:35,860 Entón, se está indo a escribir un programa, que moitas outras persoas 695 00:34:35,860 --> 00:34:37,699 vai utilizar para sempre, como o Linux, 696 00:34:37,699 --> 00:34:41,900 pode escribilo lo C. Se fose vai escribir un motor de computación, 697 00:34:41,900 --> 00:34:46,124 pode escribir en Python se precisaba para mudalo cada dous meses. 698 00:34:46,124 --> 00:34:48,540 Algunhas persoas escriben-no en C, porque son así. 699 00:34:48,540 --> 00:34:51,100 700 00:34:51,100 --> 00:34:54,050 >> Entón vimos import sys como unha forma de facer as cousas 701 00:34:54,050 --> 00:34:57,070 de obtención de módulo no seu programa. 702 00:34:57,070 --> 00:35:00,370 Tamén pode Import-lo como un apelido, se desexa. 703 00:35:00,370 --> 00:35:03,660 Novo multiprocessamento é unha dor de escriba cada vez, polo que importar como mp 704 00:35:03,660 --> 00:35:05,900 e, a continuación, en calquera momento usalo no programa, 705 00:35:05,900 --> 00:35:09,732 vai dicir mp.process, ou o que ten. 706 00:35:09,732 --> 00:35:12,670 Se desexa importación só unha única cousa, 707 00:35:12,670 --> 00:35:19,450 así urllib ten unha cousa chamada solicitude, para que poida simplemente importar que. 708 00:35:19,450 --> 00:35:22,610 Máis tarde, non vai invocala la como urllib.request, pero só como solicitude 709 00:35:22,610 --> 00:35:24,590 por si só. 710 00:35:24,590 --> 00:35:30,110 >> E pode importar todo a partir dun módulo se desexa. 711 00:35:30,110 --> 00:35:34,820 Este non é un bo ocasionalmente idea-- Isto xeralmente non é unha boa idea, en realidade. 712 00:35:34,820 --> 00:35:39,080 Porque very-- porque se algo nese módulo ten un nome que 713 00:35:39,080 --> 00:35:41,640 quería usar noutro lugar no seu programa, non pode. 714 00:35:41,640 --> 00:35:44,127 >> E non sempre é evidente que ese é o caso. 715 00:35:44,127 --> 00:35:46,460 Co fin de asegurarse de que o que estaba facendo era seguro, 716 00:35:46,460 --> 00:35:47,920 precisa abrir-se o módulo para ver todo 717 00:35:47,920 --> 00:35:50,295 dos nomes que acaban en há-- todas as funcións, 718 00:35:50,295 --> 00:35:53,010 todas as variables que viven nese módulo, 719 00:35:53,010 --> 00:35:57,040 porque está traendo todo Los no seu espazo de nomes local. 720 00:35:57,040 --> 00:35:58,680 >> Entón, as persoas fan iso. 721 00:35:58,680 --> 00:36:01,322 Recoméndase xeralmente que non faga iso. 722 00:36:01,322 --> 00:36:03,280 Pero a xente fan isto todos tempo, porque son 723 00:36:03,280 --> 00:36:05,180 preguiceiro e non quere escribir mp. 724 00:36:05,180 --> 00:36:06,310 nada, nunca. 725 00:36:06,310 --> 00:36:09,560 726 00:36:09,560 --> 00:36:13,310 >> Toda esa conversa sobre módulos traia-me en torno a unha pequena charla 727 00:36:13,310 --> 00:36:15,930 de como deseñar programas en Python. 728 00:36:15,930 --> 00:36:19,860 O primeiro paso é comprobar a ver se calquera outra persoa xa teña feito a cousa, 729 00:36:19,860 --> 00:36:22,160 ou feito o 90% da cousa. 730 00:36:22,160 --> 00:36:26,010 Probablemente, eles probablemente teñen, e deben ir buscar as súas cousas e realizar ese. 731 00:36:26,010 --> 00:36:28,900 Ou escribir un envoltorio en torno a el para adaptalo á súa finalidade. 732 00:36:28,900 --> 00:36:31,250 É só despois que non que desexa, a continuación, 733 00:36:31,250 --> 00:36:35,529 dalle comezar a pensar sobre write-- como ía poñer esa cousa xuntos. 734 00:36:35,529 --> 00:36:37,320 Hai unha morea de cousas aí fóra, e iso é 735 00:36:37,320 --> 00:36:39,180 un dos máis útil cousas sobre Python. 736 00:36:39,180 --> 00:36:40,930 Como a linguaxe é elegante, o idioma 737 00:36:40,930 --> 00:36:43,800 é fácil de usar, pero tamén porque é tan elegante e doado de usar, 738 00:36:43,800 --> 00:36:47,420 as persoas teñen usado para unha moito tempo e non hai unha morea de cousas 739 00:36:47,420 --> 00:36:52,520 aí que pode aproveitar para o seu propio uso. 740 00:36:52,520 --> 00:36:58,457 >> Así última regra de Python é, alguén persoa xa foi probablemente escrito 741 00:36:58,457 --> 00:37:00,290 un módulo para que, alguén xa ten 742 00:37:00,290 --> 00:37:02,980 probablemente escrito unha biblioteca para iso. 743 00:37:02,980 --> 00:37:06,579 Antes de facer unha cousa, ollar para ver se xa foi aplicado. 744 00:37:06,579 --> 00:37:07,370 Non é tan difícil. 745 00:37:07,370 --> 00:37:11,960 Todos os módulos que engada superior antes, quizais cunha única excepción, 746 00:37:11,960 --> 00:37:15,220 vén preinstalado en todos os instalación estándar do Python. 747 00:37:15,220 --> 00:37:17,769 E así, cunha chamada a importar o que quere, 748 00:37:17,769 --> 00:37:19,852 ten todas as funcións ao seu alcance. 749 00:37:19,852 --> 00:37:24,660 750 00:37:24,660 --> 00:37:28,920 >> Comezando a pechar este conversa, hai algunhas cousas 751 00:37:28,920 --> 00:37:32,770 que eu deixei como caixas negras e tipo de encuberto, 752 00:37:32,770 --> 00:37:37,217 e hai algunhas mentiras brancas que teño dixo que por unha cuestión de honestidade, 753 00:37:37,217 --> 00:37:39,050 Vou polo menos no punto aquí, aínda que eu non vou 754 00:37:39,050 --> 00:37:43,980 Super ir profundamente en todos eles e as súas explicacións técnicas. 755 00:37:43,980 --> 00:37:46,010 >> Unha morea de cousas que eu teño chamado de maxia 756 00:37:46,010 --> 00:37:48,980 é o que as outras persoas chamarían programación orientada a obxecto. 757 00:37:48,980 --> 00:37:52,470 Entón hai moitas coisas- polo tanto as variables non son moi frecuentemente 758 00:37:52,470 --> 00:37:56,540 bytes simple sentado, memoria, pero son moi complicadas 759 00:37:56,540 --> 00:38:01,910 obxectos que teñen interno Estado sobre as funcións e os lotes 760 00:38:01,910 --> 00:38:05,570 variables ocultas, de lotes de funcionalidade oculta, que 761 00:38:05,570 --> 00:38:09,480 permite que transformalos en cordas, que lle permite interactuar sobre eles. 762 00:38:09,480 --> 00:38:12,260 E se está writing-- ea razón que 763 00:38:12,260 --> 00:38:15,710 ten toda esa funcionalidade rica é porque os pessoas-- 764 00:38:15,710 --> 00:38:17,740 os arquitectos da language-- ir 765 00:38:17,740 --> 00:38:22,420 través e para cada nivel obxecto, poñer en función 766 00:38:22,420 --> 00:38:26,970 Dicir isto é como este é como isto vai funcionar 767 00:38:26,970 --> 00:38:28,470 se alguén quere iterado sobre el. 768 00:38:28,470 --> 00:38:31,240 >> Entón, todo o que alguén podería posiblemente querer repetir, 769 00:38:31,240 --> 00:38:34,529 foi escrito en lóxica manualmente sobre o xeito no que é 770 00:38:34,529 --> 00:38:36,070 debería interactuar sobre ese obxecto. 771 00:38:36,070 --> 00:38:40,274 Todo o que podería posiblemente querer despexado nunha secuencia lóxica ten escrito. 772 00:38:40,274 --> 00:38:43,440 Esta é a función que chama se quere botan isto para unha cadea. 773 00:38:43,440 --> 00:38:45,273 É por iso que pode chamar len sobre as cousas, este 774 00:38:45,273 --> 00:38:49,900 É por iso que pode chamar para dentro, este é por que pode chamar a par de todo 775 00:38:49,900 --> 00:38:53,490 que ía querer, porque aqueles todos están cargando con eles, 776 00:38:53,490 --> 00:38:55,380 o know-how técnico para facelo. 777 00:38:55,380 --> 00:38:58,170 778 00:38:58,170 --> 00:39:00,432 >> Isto é algo que eu son Super non vai entrar. 779 00:39:00,432 --> 00:39:03,140 Pero a cousa na lista é sutilmente diferente do estilo C para loops, 780 00:39:03,140 --> 00:39:06,160 e pode ler todo sobre iso en internet, se está interesado. 781 00:39:06,160 --> 00:39:08,930 Hai un lado escuro de todos a iso, que mencionei, 782 00:39:08,930 --> 00:39:10,359 entón hai dúas cousas. 783 00:39:10,359 --> 00:39:13,400 A primeira é que orientou este obxecto programación engade moita sobrecarga 784 00:39:13,400 --> 00:39:16,080 para cousas aleatorias, así acaba utilizando-se moito máis memoria; 785 00:39:16,080 --> 00:39:18,640 acaba usando un pouco máis tempo do que faría doutro xeito. 786 00:39:18,640 --> 00:39:21,300 O outro-- pero o máis insidiosa lado escuro a esta 787 00:39:21,300 --> 00:39:24,047 é que, se as cousas simplemente actuar como queira que 788 00:39:24,047 --> 00:39:27,130 sen ter que pensar super difícil sobre se este debe ser un int 789 00:39:27,130 --> 00:39:29,713 ou se debería haber un flotador, pode ser que ata aquí 790 00:39:29,713 --> 00:39:34,240 produce un int, pero aquí pensar, pero eles van always-- sorry, 791 00:39:34,240 --> 00:39:36,555 pode ser que aquí produce un flotador, 792 00:39:36,555 --> 00:39:39,430 pero cando comeza a segunda parte do seu programa, está a pensar, 793 00:39:39,430 --> 00:39:41,150 oh ben, pero pase o meu sempre un int. 794 00:39:41,150 --> 00:39:43,608 E se non o fan, é posible que entalado nalgún lugar, 795 00:39:43,608 --> 00:39:47,600 se tentar usar isto para índice nunha matriz, ou o que ten. 796 00:39:47,600 --> 00:39:51,050 >> Entón, un do real cousas útiles sobre C é 797 00:39:51,050 --> 00:39:54,219 forza-lo a pensar realmente duro antes de facer any-- 798 00:39:54,219 --> 00:39:56,510 antes que traia calquera variable á existencia, como o que 799 00:39:56,510 --> 00:39:58,764 é o tipo desta variable. 800 00:39:58,764 --> 00:40:00,680 E terá que tipo de todos os tempos. 801 00:40:00,680 --> 00:40:02,410 >> Isto non é certo Python, e de feito, 802 00:40:02,410 --> 00:40:04,740 can-- se é só tipo de vai de oído, 803 00:40:04,740 --> 00:40:07,690 e tomar algunhas decisións unha forma nun lugar, 804 00:40:07,690 --> 00:40:09,870 e algunhas decisións un xeito no outro lugar 805 00:40:09,870 --> 00:40:12,960 sen poñer material suficiente atrás as escenas noutro lugar 806 00:40:12,960 --> 00:40:16,170 para incorporarse as cousas correctamente, Pode obter algúns erros moi estraños. 807 00:40:16,170 --> 00:40:19,200 E o programa pode continuar a executar para un tempo moi longo, porque é 808 00:40:19,200 --> 00:40:23,200 facendo unha chea de traballo para dicir, ben esta cousa podería funcionar dese xeito, 809 00:40:23,200 --> 00:40:25,070 entón eu vou correr dese xeito. 810 00:40:25,070 --> 00:40:30,300 >> E, de feito, o feito de que empuxa transmitir a través de unha chea de pequenos erros 811 00:40:30,300 --> 00:40:33,260 significa que, moitas veces, cando de feito, un erro é mala 812 00:40:33,260 --> 00:40:38,720 e realmente quere resolve-lo, el acaba millas away-- o programa 813 00:40:38,720 --> 00:40:41,780 acaba parando millas de distancia desde cando tiña o seu erro. 814 00:40:41,780 --> 00:40:46,590 E así unha cousa que queremos programas para facer, unha cousa sometimes-- 815 00:40:46,590 --> 00:40:48,910 que queremos programas Que facer cando estamos depurando 816 00:40:48,910 --> 00:40:54,160 é fallar e fallan moi alto rapidamente cando algo dá mal. 817 00:40:54,160 --> 00:40:55,510 >> Python é moi malo niso. 818 00:40:55,510 --> 00:40:58,820 Python é moi bo en non fallando e rolando cara diante 819 00:40:58,820 --> 00:41:00,320 a través de cousas inesperadas. 820 00:41:00,320 --> 00:41:02,820 Polo tanto, este é útil para cando está escribindo pequenos programas. 821 00:41:02,820 --> 00:41:07,110 Cando estar complicado erros que ás veces 822 00:41:07,110 --> 00:41:09,300 Leva moito tempo para provocalo-los. 823 00:41:09,300 --> 00:41:12,210 >> Polo tanto, hai un lado escuro de todos deste, como simplemente funciona. 824 00:41:12,210 --> 00:41:13,860 Simplemente funciona como esperar que el. 825 00:41:13,860 --> 00:41:18,320 Só que cando iso non acontece, acaba nun lugar diferente 826 00:41:18,320 --> 00:41:21,530 e tentando descubrir onde que foi o que deu errado. 827 00:41:21,530 --> 00:41:25,180 >> A recollida de lixo é-- así unha cousa que vai notar 828 00:41:25,180 --> 00:41:28,110 é que calquera destas cousas que Eu trouxo en existence-- 829 00:41:28,110 --> 00:41:34,114 esas matrices, estes dicionarios, estes obxectos, estes files-- nunca se liberou. 830 00:41:34,114 --> 00:41:36,030 Non houbo chamada libre en calquera esa conversa. 831 00:41:36,030 --> 00:41:40,340 E iso foi o lado do C o porque nunca entrou isto. 832 00:41:40,340 --> 00:41:42,220 >> Pero en Python-banda, non é libre. 833 00:41:42,220 --> 00:41:43,970 As cousas están automaticamente liberado cando Python 834 00:41:43,970 --> 00:41:45,386 pensas que non está mirando para eles. 835 00:41:45,386 --> 00:41:49,640 É realmente bo non liberando cousas que tamén se pode posiblemente estar a ollar para, 836 00:41:49,640 --> 00:41:54,262 pero iso significa que se fose vai reservar este gran cousa, 837 00:41:54,262 --> 00:41:55,970 e é como, oh Eu son feito con el agora, 838 00:41:55,970 --> 00:42:00,360 é difícil dicir Python que se fai con iso agora. 839 00:42:00,360 --> 00:42:02,986 >> Ás veces pode definir esa variable a ser ningún, 840 00:42:02,986 --> 00:42:05,110 e, a continuación, espero que, finalmente, o colector de lixo 841 00:42:05,110 --> 00:42:06,720 vén a través de e limpa-lo. 842 00:42:06,720 --> 00:42:10,177 Pero, de novo, non ten control sobre iso. 843 00:42:10,177 --> 00:42:13,510 E unha das razóns que as persoas empregan C para realmente rendemento cousas críticas, 844 00:42:13,510 --> 00:42:16,570 É esta capacidade de realmente sabe cando a memoria é alocada 845 00:42:16,570 --> 00:42:19,369 e cando é liberado, e teñen unha morea de control sobre dicindo: 846 00:42:19,369 --> 00:42:20,910 Eu estou usando non máis memoria do que eu teño. 847 00:42:20,910 --> 00:42:23,632 Que é algo que Python non é tan grande no. 848 00:42:23,632 --> 00:42:25,090 Audiencia: Podo facer unha pregunta? 849 00:42:25,090 --> 00:42:29,800 O que entende por falla en voz alta? 850 00:42:29,800 --> 00:42:32,070 >> ROSS Rheingans-Yoo: Entón se algo está a suceder de malo 851 00:42:32,070 --> 00:42:34,950 e está na depuración xeito, faría moi frecuentemente 852 00:42:34,950 --> 00:42:38,510 Quere que o seu programa para lle dicir onde exactamente está mal, 853 00:42:38,510 --> 00:42:42,360 e non só discretamente deixar de correr. 854 00:42:42,360 --> 00:42:45,085 Pero, en realidade, para imprimir fóra todo tipo de información sobre 855 00:42:45,085 --> 00:42:46,972 como, aquí estaba presente. 856 00:42:46,972 --> 00:42:53,957 Esa cousa aconteceu Se está imprimindo un wen-- se está executando un server-- web 857 00:42:53,957 --> 00:42:55,390 >> Audiencia: [inaudível] 858 00:42:55,390 --> 00:42:59,800 >> ROSS Rheingans-Yoo: Si, si está executando un servidor web, 859 00:42:59,800 --> 00:43:02,680 ás veces é malo se está sempre descartar erros, 860 00:43:02,680 --> 00:43:04,530 e está dicindo, ben que non funcionou. 861 00:43:04,530 --> 00:43:05,300 Vou deixar. 862 00:43:05,300 --> 00:43:07,680 Eu só vou ignorar lo e perder a suceder. 863 00:43:07,680 --> 00:43:11,260 Porque entón pode poñerse en centos deses erros e non ve-los. 864 00:43:11,260 --> 00:43:13,910 >> Sería certamente útil para fins de depuración 865 00:43:13,910 --> 00:43:20,327 cada vez que o seu servidor web fixo unha erro, tiña rexistros duradeiros que iso. 866 00:43:20,327 --> 00:43:22,910 Quizais aínda quere que o programa para parar, para que estes rexistros 867 00:43:22,910 --> 00:43:25,471 Non sexa enterrado baixo cousas. 868 00:43:25,471 --> 00:43:26,970 Pero, de novo, iso é o modo de depuración. 869 00:43:26,970 --> 00:43:31,280 >> Moitas veces, o modo de produción, o mundo é un pouco diferente. 870 00:43:31,280 --> 00:43:36,380 E en pequenos scripts que estou correndo, onde o único que dixo para facer 871 00:43:36,380 --> 00:43:40,680 pode ser só un pouco fóra do que me gustaría que faga, 872 00:43:40,680 --> 00:43:44,010 a continuación, tipo de empurrar a través de erros é algo que pode querer. 873 00:43:44,010 --> 00:43:49,410 E, nestes casos, certamente Python realmente gaña seus comezos. 874 00:43:49,410 --> 00:43:54,617 >> A última cousa que eu non falar isto-- en que eu non falar 875 00:43:54,617 --> 00:43:57,700 pero pode ser realmente irritante o primeiro xa que ten un deses erros, 876 00:43:57,700 --> 00:44:00,491 ea segunda e terceira e cuarta xa que ten un deses erros. 877 00:44:00,491 --> 00:44:03,490 Python, eu mencionen que usa o espazo en branco 878 00:44:03,490 --> 00:44:06,700 para lle dicir o nivel de recuar e cales bloques funcional que está, 879 00:44:06,700 --> 00:44:08,840 trata tabulacións e espazos de forma diferente. 880 00:44:08,840 --> 00:44:12,780 Entón, se guía sobre catro, e, a continuación, a seguinte liña ten catro espazos, 881 00:44:12,780 --> 00:44:16,910 mesmo se elas aparecen como o mesma cantidade no seu editor, 882 00:44:16,910 --> 00:44:20,160 Python non tratalos da mesma. 883 00:44:20,160 --> 00:44:23,610 >> En realidade, trátase Python guías e espazos como aceite e auga. 884 00:44:23,610 --> 00:44:25,050 Son só cousas distintas. 885 00:44:25,050 --> 00:44:27,264 Non hai especial lonxitude que é unha ficha 886 00:44:27,264 --> 00:44:30,180 polo que non é como unha guía é igual a 8 espazos, e así que ía estar en torno a ela 887 00:44:30,180 --> 00:44:30,860 dese xeito. 888 00:44:30,860 --> 00:44:34,110 Como, cando se di, o que nivel de espazo baleiro estou, 889 00:44:34,110 --> 00:44:37,240 está realmente buscando un patrón de espazos e tabulacións. 890 00:44:37,240 --> 00:44:43,050 E así, o mellor xeito de tratar con isto é a utilización de espazos sempre todo o tempo. 891 00:44:43,050 --> 00:44:47,510 >> E, de feito, no Cloud9 IDE e do CS50 IDE, 892 00:44:47,510 --> 00:44:50,610 a tecla tab insercións catro espazos no canto 893 00:44:50,610 --> 00:44:53,800 unha guía, que é super útil. 894 00:44:53,800 --> 00:44:57,074 Aínda novo, se escribiu un Python programa con guías que sería bo, 895 00:44:57,074 --> 00:44:58,990 é só se alguén entrou e intentou engadir 896 00:44:58,990 --> 00:45:02,655 unha soa liña ao seu programa que tiña catro espazos para cada guía, 897 00:45:02,655 --> 00:45:03,280 ía romper. 898 00:45:03,280 --> 00:45:07,800 E ía romper de forma que realmente non é visible. 899 00:45:07,800 --> 00:45:12,390 Aínda que o erro real mensaxe que lanza 900 00:45:12,390 --> 00:45:15,610 ten que ver co novo guión non espera aquí, 901 00:45:15,610 --> 00:45:18,700 ou-- se está falando guións e parece que está mal, 902 00:45:18,700 --> 00:45:22,090 probablemente é porque hai un problema tab-espazo. 903 00:45:22,090 --> 00:45:24,154 Eles aínda están enfurecido para depurar. 904 00:45:24,154 --> 00:45:26,070 A maior en toda Nesta charla, o que eu non fixen 905 00:45:26,070 --> 00:45:29,740 chegar porque é realmente un complicado, tema sutil, 906 00:45:29,740 --> 00:45:34,760 e non era necesario facer ningunha das cousas que fixemos ata agora, 907 00:45:34,760 --> 00:45:37,140 son un concepto chamado tuplas. 908 00:45:37,140 --> 00:45:41,280 Eles están aí moi parecido ao matrices que non pode modificar. 909 00:45:41,280 --> 00:45:44,700 Son utilizados en todo o lugar, porque son útiles para moitas cousas 910 00:45:44,700 --> 00:45:46,300 matrices que non son útiles para. 911 00:45:46,300 --> 00:45:49,890 >> Pero se quere facer unha matriz, e a continuación, o intérprete prometer que 912 00:45:49,890 --> 00:45:53,140 non vai querer modificar ese coisa-- en realidade, se quere modificar, 913 00:45:53,140 --> 00:45:56,800 vai facer un novo co novo valores en ele-- estes son tuplas. 914 00:45:56,800 --> 00:45:58,800 No canto de producir los con corchetes, 915 00:45:58,800 --> 00:46:00,341 vostede producir los con parénteses. 916 00:46:00,341 --> 00:46:05,074 Por que usaría esas cousas, é un pouco de unha pregunta. . 917 00:46:05,074 --> 00:46:06,990 O único que eu vou dicir sobre iso é que 918 00:46:06,990 --> 00:46:10,680 pode usar como tuplos índices de dicionarios. 919 00:46:10,680 --> 00:46:15,010 Non pode usar matrices como índices de dicionarios. 920 00:46:15,010 --> 00:46:18,970 E por que é, de novo, técnica e Non vou executar para el. 921 00:46:18,970 --> 00:46:23,140 >> O pset que non toquei en nesta conversa é pset6. 922 00:46:23,140 --> 00:46:25,837 Entón aquí está como 'd aplicar um-- aquí 923 00:46:25,837 --> 00:46:28,140 Como podería aplicar pset6 en Python. 924 00:46:28,140 --> 00:46:32,680 Tendo en conta o Python ciclo de deseño, o primeiro 925 00:46:32,680 --> 00:46:34,760 que fai cando está programas de escritura de verificación é 926 00:46:34,760 --> 00:46:38,030 a ver se alguén ten feito isto xa. 927 00:46:38,030 --> 00:46:42,152 >> En realidade, se quere para serve-- Apache 50 928 00:46:42,152 --> 00:46:44,110 fai aproximadamente, salvo que non ven 929 00:46:44,110 --> 00:46:45,840 estándar instalado en máquinas Linux. 930 00:46:45,840 --> 00:46:50,490 Python fai, eo Python servidor http simple fai tan ben. 931 00:46:50,490 --> 00:46:54,717 Se está sempre nunha máquina Linux, ou fóra Cloud9 IDE de CS50 932 00:46:54,717 --> 00:46:57,550 e desexa servir a esta corrente directorio para un porto particular, 933 00:46:57,550 --> 00:47:04,610 python-m SimpleHTTPServer porto serve iso. 934 00:47:04,610 --> 00:47:07,190 Tamén pode importar servidor http simple 935 00:47:07,190 --> 00:47:11,240 e ten unha morea de funcionalidade se quere personalizar-lo, ou cambia-lo, 936 00:47:11,240 --> 00:47:15,860 ou son executados ele-- aproveitala la para realizar os seus propios servizos de servidor. 937 00:47:15,860 --> 00:47:18,032 >> Entón, iso é Python en poucas palabras. 938 00:47:18,032 --> 00:47:20,280 E iso foi CS50. 939 00:47:20,280 --> 00:47:21,980 Grazas. 940 00:47:21,980 --> 00:47:23,468