1 00:00:00,000 --> 00:00:05,426 2 00:00:05,426 --> 00:00:06,800 ROSS Rheingans-YOO: Hola, soy Ross. 3 00:00:06,800 --> 00:00:08,570 Y este es un seminario CS50. 4 00:00:08,570 --> 00:00:12,100 Que le llevará desde la programación en C a la programación en Python. 5 00:00:12,100 --> 00:00:15,120 >> Python es un lenguaje de script. 6 00:00:15,120 --> 00:00:17,870 Es en gran medida como C en la sintaxis, aunque algunos 7 00:00:17,870 --> 00:00:20,390 de los detalles técnicos de cómo es ejecutado que la sintaxis 8 00:00:20,390 --> 00:00:22,240 son ligeramente diferentes. 9 00:00:22,240 --> 00:00:24,780 Es menos potente que C en algunos aspectos. 10 00:00:24,780 --> 00:00:28,130 Es menos expresiva de el lugar exacto en el equipo 11 00:00:28,130 --> 00:00:30,030 memoria se expuso, la forma en que se expuso, 12 00:00:30,030 --> 00:00:32,030 cuando se pone la libertad, y ese tipo de cosas. 13 00:00:32,030 --> 00:00:36,150 >> Es más útil que C en algunos aspectos, porque es más fácil de programar en. 14 00:00:36,150 --> 00:00:39,920 El lenguaje es, en cierta gente, más intuitivo. 15 00:00:39,920 --> 00:00:44,820 Y en realidad, el objetivo es que que sea más rápido para programar 16 00:00:44,820 --> 00:00:46,490 y potencialmente más lento para ejecutar. 17 00:00:46,490 --> 00:00:48,198 >> Ahora bien, si se piensa en la cantidad de tiempo 18 00:00:48,198 --> 00:00:50,514 que gastó en su último escritura fijado problema 19 00:00:50,514 --> 00:00:52,430 su código en contra de la cantidad de tiempo que pasa 20 00:00:52,430 --> 00:00:55,310 en su último problema establecer la ejecución de su código, 21 00:00:55,310 --> 00:00:58,300 era de imaginar que el idioma que era dos veces más rápido de escribir, 22 00:00:58,300 --> 00:01:02,170 y dos veces más lento para ejecutar, podría ser una mejora sobre C en algunos aspectos. 23 00:01:02,170 --> 00:01:05,730 Ciertamente, cuando usted está tratando de escribir pequeños programas que se pueden hacer pequeñas cosas, 24 00:01:05,730 --> 00:01:08,520 Python es un lenguaje útil de elección. 25 00:01:08,520 --> 00:01:10,620 >> Y al final de esta seminario, espero que 26 00:01:10,620 --> 00:01:12,950 ser capaz de hacer la elección en futuros proyectos 27 00:01:12,950 --> 00:01:17,710 sobre el cual el lenguaje es correcto a utilizar, no la idea 28 00:01:17,710 --> 00:01:21,405 que una lengua es más corregir todo el tiempo. 29 00:01:21,405 --> 00:01:23,030 Un par de cosas sobre lo que el seminario es. 30 00:01:23,030 --> 00:01:25,910 Este seminario no pretende enseñará Python desde cero. 31 00:01:25,910 --> 00:01:28,310 Python es muy similar a C, y yo estoy asumiendo 32 00:01:28,310 --> 00:01:34,056 que eres un estudiante CS50, o alguien con una familiaridad similar con C. 33 00:01:34,056 --> 00:01:36,700 >> Si eres estudiante CS50 alrededor problema fijó 6, 34 00:01:36,700 --> 00:01:38,866 Así que ha ver una gran cantidad de cosas en C, te voy a dar 35 00:01:38,866 --> 00:01:40,740 las principales diferencias, y algunas de las cosas 36 00:01:40,740 --> 00:01:42,840 que hacen Python diferente y especial y útil, 37 00:01:42,840 --> 00:01:45,256 pero yo no voy a ir a por lo que es un lenguaje de programación es 38 00:01:45,256 --> 00:01:46,920 y cómo escribir programas. 39 00:01:46,920 --> 00:01:49,820 Sin embargo, este seminario enseñará a escribir un programas Python 40 00:01:49,820 --> 00:01:52,310 si usted es uno de esos pocos grupos. 41 00:01:52,310 --> 00:01:54,820 Una vez más vamos a ver cómo usted aplicar psets-- 42 00:01:54,820 --> 00:01:57,550 que debe ser 1-6 Python-- y proporcionar punteros 43 00:01:57,550 --> 00:02:00,322 a la documentación oficial Para futura referencia. 44 00:02:00,322 --> 00:02:03,030 La otra cosa que es importante acerca de cómo se asigna esta charla, 45 00:02:03,030 --> 00:02:05,360 este video será en línea, cortesía de CS50, 46 00:02:05,360 --> 00:02:07,550 por lo que no debe sentirse como usted necesita tomar notas. 47 00:02:07,550 --> 00:02:11,180 Siempre se puede volver atrás y mirar en él más adelante como referencia. 48 00:02:11,180 --> 00:02:13,340 Adicionalmente las diapositivas están disponibles en este momento 49 00:02:13,340 --> 00:02:16,480 en este sitio, que debe tome usted hace un doc Google. 50 00:02:16,480 --> 00:02:21,010 Es una versión ligeramente abreviada de lo que estoy mostrando en la pantalla. 51 00:02:21,010 --> 00:02:24,850 >> Una advertencia cuidado antes saltamos adentro, Python 3 52 00:02:24,850 --> 00:02:26,700 es una lengua diferente de Python 2. 53 00:02:26,700 --> 00:02:30,020 Se parecen mucho la misma; hay diferencias técnicas muy leves 54 00:02:30,020 --> 00:02:32,530 que hará que los programas escrito en Python 2 55 00:02:32,530 --> 00:02:37,140 de no ser capaz de ser ejecutado en el entorno Python 3. 56 00:02:37,140 --> 00:02:41,969 >> El aparato viene con CS50 Python, por defecto que utiliza Python 2. 57 00:02:41,969 --> 00:02:44,010 Usted puede comprobar esto escribir en la línea de comandos 58 00:02:44,010 --> 00:02:51,310 --version pitón, que debería de salida 2.7.6 en el dispositivo actual. 59 00:02:51,310 --> 00:02:53,580 Trate de Python 3, que hace trabajar en el aparato, 60 00:02:53,580 --> 00:02:58,500 si por defecto de Python a 2.X.Y, ya sea en el aparato o en sus propias máquinas. 61 00:02:58,500 --> 00:03:03,730 Debe reemplazar Python 3 en cualquier momento en esta charla que escribo Python. 62 00:03:03,730 --> 00:03:05,760 Si su máquina es correr 2 por defecto, el tipo 63 00:03:05,760 --> 00:03:09,770 Python 3 con el fin de ser capaz de realidad seguir adelante y ejecutar estas cosas. 64 00:03:09,770 --> 00:03:12,280 >> Además, voy a señalar que a los recursos oficiales ahora. 65 00:03:12,280 --> 00:03:16,082 docs.python.org/3--~~V cuidado que eso es un 3 y no un 2-- 66 00:03:16,082 --> 00:03:17,030 tiene referencias útiles. 67 00:03:17,030 --> 00:03:19,280 Tutorial le llevará a través gran parte de las mismas cosas 68 00:03:19,280 --> 00:03:21,460 que estoy haciendo ahora, excepto en forma de texto. 69 00:03:21,460 --> 00:03:23,725 Referencia es útil como una referencia para la lengua, 70 00:03:23,725 --> 00:03:26,100 y la Biblioteca Estándar da que algunas de las extensiones 71 00:03:26,100 --> 00:03:27,770 con la funcionalidad adicional. 72 00:03:27,770 --> 00:03:31,300 >> Así, un primer programa en Python. 73 00:03:31,300 --> 00:03:34,410 A la izquierda tenemos estándar de C, a la derecha, tenemos Python. 74 00:03:34,410 --> 00:03:36,780 Es posible que haya reconocido este problema, que es 75 00:03:36,780 --> 00:03:40,760 uno de los primero problema conjuntos en CS50, y éstas 76 00:03:40,760 --> 00:03:42,677 resolverlo usando la misma solución. 77 00:03:42,677 --> 00:03:45,010 Ahora, la razón por la que estamos mirando a éstos al lado del otro 78 00:03:45,010 --> 00:03:46,830 es tan podemos mirar diferencias sintácticas. 79 00:03:46,830 --> 00:03:49,580 Uno de los elefantes en la habitación que usted puede haber notado la derecha 80 00:03:49,580 --> 00:03:56,350 De buenas a primeras, es que Python no tiene envoltura función principal alrededor del código. 81 00:03:56,350 --> 00:03:59,170 Así que en C, se escribe un montón de archivos, los vinculan entre sí, 82 00:03:59,170 --> 00:04:02,590 y el programa comienza a ejecutarse en esta cosa llamada int main. 83 00:04:02,590 --> 00:04:04,930 >> En Python, se escribe una que presentar, ejecutar el archivo, 84 00:04:04,930 --> 00:04:07,882 el programa comienza a ejecutarse en la parte superior del archivo. 85 00:04:07,882 --> 00:04:09,590 Así que va a comenzar en la parte superior del archivo 86 00:04:09,590 --> 00:04:11,280 ir hacia abajo hasta que encuentre otra cosa. 87 00:04:11,280 --> 00:04:14,440 Si encuentra una definición de función, que en realidad no ejecutar ese código, 88 00:04:14,440 --> 00:04:15,940 será simplemente definir la función. 89 00:04:15,940 --> 00:04:18,459 Pero aquí, cuando la primera programa es n es igual a 10, 90 00:04:18,459 --> 00:04:21,273 la primera cosa que este programa va a hacer es tomar este valor de 10 91 00:04:21,273 --> 00:04:24,120 y lo puso en una variable llamada n. 92 00:04:24,120 --> 00:04:27,690 >> Hablando de esa línea, uno de otras cosas-- sorry-- este 93 00:04:27,690 --> 00:04:31,040 significa que los programas en C, que voy a escribir ellos, 94 00:04:31,040 --> 00:04:34,899 podrás hacerlos, lo que hará invocar algunos comandos clang, 95 00:04:34,899 --> 00:04:36,690 y luego se encontrará con un resultante ejecutable. 96 00:04:36,690 --> 00:04:41,030 Programas en Python, se corre el texto file-- este mario.py podría 97 00:04:41,030 --> 00:04:44,900 ser este archivo que acabo mostré usted-- podrás ejecutar ese archivo 98 00:04:44,900 --> 00:04:47,450 y se le ejecuta, y el contenido de la misma 99 00:04:47,450 --> 00:04:50,390 será ejecutado por el intérprete de Python. 100 00:04:50,390 --> 00:04:52,470 Usted puede hacer esto en su IDE. 101 00:04:52,470 --> 00:05:02,260 >> Así que si tengo un archivo Hola, que simplemente tiene este contenido. 102 00:05:02,260 --> 00:05:04,840 Esto es en realidad Python 2, no Python 3, por lo que no lo hacen 103 00:05:04,840 --> 00:05:06,600 preocuparse por la sintaxis por ahora. 104 00:05:06,600 --> 00:05:14,230 Pero voy a correr Python, en hello.py, y se ejecuta. 105 00:05:14,230 --> 00:05:18,890 >> Otra forma en que puedo usar Python que No voy a tratar con mucho en esta charla, 106 00:05:18,890 --> 00:05:21,840 es si sólo escribo Python, que me cae en un entorno donde 107 00:05:21,840 --> 00:05:24,370 Puedo alimentarlo línea de Python por línea. 108 00:05:24,370 --> 00:05:31,260 Así que aquí, si escribo en espacio print 'hola, mundo'. 109 00:05:31,260 --> 00:05:32,360 Escriba entrar. 110 00:05:32,360 --> 00:05:37,430 Me escupirá que una copia de los resultados esa línea individuo inmediatamente. 111 00:05:37,430 --> 00:05:38,470 >> Esto es podría ser útil. 112 00:05:38,470 --> 00:05:40,700 En esta charla que voy a hacer las cosas en las diapositivas. 113 00:05:40,700 --> 00:05:43,940 Y por lo que será capaz de seguir a lo largo de cualquiera aquí, o escribiendo 114 00:05:43,940 --> 00:05:45,725 archivos reales y luego ejecutarlos. 115 00:05:45,725 --> 00:05:48,340 116 00:05:48,340 --> 00:05:50,995 >> Pero, volviendo a esta código, otra cosa 117 00:05:50,995 --> 00:05:53,230 que podría tener noticed-- bueno, hay 118 00:05:53,230 --> 00:05:55,980 dos cosas que usted puede ser cuenta acerca de estos bloques. 119 00:05:55,980 --> 00:05:59,280 La primera, bastante más mundana, es que Python no tiene punto y coma final. 120 00:05:59,280 --> 00:06:02,630 >> Puntos y comas son opcionales en todas partes e inofensivo en todas partes. 121 00:06:02,630 --> 00:06:03,722 Puedes añadirlas. 122 00:06:03,722 --> 00:06:06,430 Podría hacer que las personas que escriben Python para una risita de estar contigo 123 00:06:06,430 --> 00:06:08,860 detrás de la espalda, porque no son necesarias. 124 00:06:08,860 --> 00:06:13,497 A menudo son un signo de que se celebra sobre de C. Los diseñadores de la lengua 125 00:06:13,497 --> 00:06:16,580 siente que es más claro de esta manera y que no es necesario declarar 126 00:06:16,580 --> 00:06:18,700 cada vez que termina una línea. 127 00:06:18,700 --> 00:06:21,799 >> Otra cosa extraña acerca de este n es que no tiene un tipo de adjunto. 128 00:06:21,799 --> 00:06:24,590 Una de las piezas mágicas de Python-- y yo voy a llamarlo magia, 129 00:06:24,590 --> 00:06:26,381 pero hay muy razones técnicas por las que 130 00:06:26,381 --> 00:06:28,560 works-- una de las piezas mágicas de Python 131 00:06:28,560 --> 00:06:32,700 es que las variables pueden expandir o reducir el tamaño para contener cualquier dato 132 00:06:32,700 --> 00:06:34,530 tipos que quieren que lo hagan. 133 00:06:34,530 --> 00:06:35,580 >> Así que esto es un 10. 134 00:06:35,580 --> 00:06:40,060 Si más adelante en asigné a este n 0.5, se necesitaría que 0,5. 135 00:06:40,060 --> 00:06:43,770 No importa que sea un int aquí y flotar allí, cualquier cosa que utiliza este n 136 00:06:43,770 --> 00:06:47,057 será, más o menos, ser capaz de traquetea a lo largo de si se pone uno de esos. 137 00:06:47,057 --> 00:06:49,640 A menos que haya alguna muy real por lo que no puede utilizar los datos 138 00:06:49,640 --> 00:06:52,170 escriba que n tiene actualmente, momento en el cual se obtendrá 139 00:06:52,170 --> 00:06:54,490 encajado y lanzar un error, y ese tipo de cosas. 140 00:06:54,490 --> 00:06:57,050 >> Pero aquí, Python en realidad no importa lo que 141 00:06:57,050 --> 00:06:59,140 es que me voy a quedar en este condena, como, usted quiere esta cosa? 142 00:06:59,140 --> 00:06:59,840 Esta cosa en eso? 143 00:06:59,840 --> 00:07:00,640 Sí, es una especie de cosa. 144 00:07:00,640 --> 00:07:01,810 Yo me quedo en el final. 145 00:07:01,810 --> 00:07:04,740 Va a ser un problema más adelante, si alguien que quiere usar ese fin 146 00:07:04,740 --> 00:07:05,710 no puede manejarlo. 147 00:07:05,710 --> 00:07:08,500 Este es uno de los principales diferencias entre Python y C 148 00:07:08,500 --> 00:07:10,790 que hace que sea fácil de escribir grandes programas en C 149 00:07:10,790 --> 00:07:15,120 y hace que sea más fácil escribir programa de Python muy pequeño. 150 00:07:15,120 --> 00:07:19,564 >> La sintaxis para el no es muy diferente en lo que hace. 151 00:07:19,564 --> 00:07:21,480 Es ligeramente diferente en cómo se expresa. 152 00:07:21,480 --> 00:07:25,370 Así que este es un muy, lo que se llama Pythonic, forma de escribirlo. 153 00:07:25,370 --> 00:07:28,969 para la fila en el rango (n), este es el rango de números del 0 al n, 154 00:07:28,969 --> 00:07:31,010 incluido en la parte inferior y exclusivo en la parte superior. 155 00:07:31,010 --> 00:07:34,790 Así que es de 0 a n-1, que es exactamente lo que el código C está haciendo, 156 00:07:34,790 --> 00:07:38,690 excepto que es mucho más fácil mirar tal vez. 157 00:07:38,690 --> 00:07:42,710 >> El bloque correspondiente es No desencadenada por los apoyos, 158 00:07:42,710 --> 00:07:44,540 en cambio se puso en marcha por esta hendidura. 159 00:07:44,540 --> 00:07:47,580 Así que todas estas líneas son cuatro espacios más a la derecha, 160 00:07:47,580 --> 00:07:50,410 o le gusta de una anchura elefante. 161 00:07:50,410 --> 00:07:54,570 Y esos son los que son va a ser ejecutado en esto para. 162 00:07:54,570 --> 00:07:57,020 Si me equivoco la muesca en esto y yo 163 00:07:57,020 --> 00:08:01,420 empujar esa impresión a la indentación original, 164 00:08:01,420 --> 00:08:04,320 que la letra impresa saldrá del bucle for. 165 00:08:04,320 --> 00:08:08,560 A diferencia de C, donde aquí que en realidad tenga que mover ese corsé cerrado alrededor. 166 00:08:08,560 --> 00:08:11,820 >> Esto significa que usted no recibe errores que saltan a la vista, ya que 167 00:08:11,820 --> 00:08:13,580 poner una llave en el lugar equivocado. 168 00:08:13,580 --> 00:08:16,460 Lo que significa es que usted obtenga los errores que saltan a la vista, ya que 169 00:08:16,460 --> 00:08:17,620 sangría un mal línea. 170 00:08:17,620 --> 00:08:19,290 Así que tiene hendiduras super cuidado. 171 00:08:19,290 --> 00:08:22,123 Esperemos que estabas siendo súper cuidado con su sangría de todos modos, 172 00:08:22,123 --> 00:08:25,300 y así que esto no es que mucho más de una carga. 173 00:08:25,300 --> 00:08:28,762 >> Sin embargo, una regla básica para Python, y vamos a tener un par de estos 174 00:08:28,762 --> 00:08:30,970 que vamos a ir a través a través de el curso de la charla, 175 00:08:30,970 --> 00:08:33,840 es tratar de sintaxis naturales antes de buscar cualquier cosa para arriba. 176 00:08:33,840 --> 00:08:37,610 Así que esta sintaxis, por este número en el rango, 177 00:08:37,610 --> 00:08:41,460 es muy distintivo en términos de estilo. 178 00:08:41,460 --> 00:08:45,260 Un montón de cosas en Python veremos tomar este formulario. 179 00:08:45,260 --> 00:08:47,420 >> Y por lo que si usted viene para arriba con un nuevo objeto que 180 00:08:47,420 --> 00:08:50,870 cree que debería ser capaz de iterar sobre esto, en este formato, 181 00:08:50,870 --> 00:08:53,720 Resulta que, probablemente, soporta ese formato. 182 00:08:53,720 --> 00:08:56,990 No vamos a ir muy profundamente en las razones técnicas por las que es cierto. 183 00:08:56,990 --> 00:09:00,167 >> Pero es una intuición útil tener cuando te estás acercando programas Python, 184 00:09:00,167 --> 00:09:01,750 que esto sólo va a trabajar. 185 00:09:01,750 --> 00:09:03,020 Intentalo. 186 00:09:03,020 --> 00:09:06,480 Arrancar la línea de comandos Intérprete, ver si funciona, 187 00:09:06,480 --> 00:09:09,827 seguir adelante con las cosas, antes de incluso necesidad de abrir Google y decir: 188 00:09:09,827 --> 00:09:11,660 ¿cuál es la sintaxis para esta cosa en particular? 189 00:09:11,660 --> 00:09:14,740 Un montón de Python que podría descubrir con sólo intentarlo. 190 00:09:14,740 --> 00:09:19,005 >> Este caso es aún más similares para C entonces los fors son. 191 00:09:19,005 --> 00:09:20,380 Tenga en cuenta que no hay paréntesis. 192 00:09:20,380 --> 00:09:23,490 Los paréntesis son, de nuevo, inofensivo, pero innecesario. 193 00:09:23,490 --> 00:09:25,750 Hay dos puntos al final al igual que la de los bucles, 194 00:09:25,750 --> 00:09:30,800 y de nuevo, los bloques son relativos sangría en lugar de estallar por llaves. 195 00:09:30,800 --> 00:09:33,080 Esta persona se encuentra en el original nivel de sangría, 196 00:09:33,080 --> 00:09:35,930 y su bloque correspondiente sangría de nuevo. 197 00:09:35,930 --> 00:09:41,720 Los trabajos exactamente como lo hacen en C. 198 00:09:41,720 --> 00:09:44,520 >> Esto es en realidad muy similar. 199 00:09:44,520 --> 00:09:49,430 Una vez más, la impresión pierde un carácter fuera de printf Se pasa algunas cadenas. 200 00:09:49,430 --> 00:09:51,520 Resulta cadenas o bien puede ser delimitado 201 00:09:51,520 --> 00:09:53,562 por comillas simples o dobles. 202 00:09:53,562 --> 00:09:55,270 No hay ninguna diferencia, excepto que dentro de 203 00:09:55,270 --> 00:09:57,722 de comillas simples que usted puede utilizar comillas dobles con abandonar, 204 00:09:57,722 --> 00:09:59,430 en lugar de tener que escapar de todos ellos. 205 00:09:59,430 --> 00:10:01,480 Y dentro de comillas dobles, que puede usar comillas simples con abandonar 206 00:10:01,480 --> 00:10:02,420 sin tener que escapar de ellos. 207 00:10:02,420 --> 00:10:04,253 Si usted quisiera mezclar ellos, que sin duda puede 208 00:10:04,253 --> 00:10:06,100 mirar hacia arriba en línea cómo hacer eso. 209 00:10:06,100 --> 00:10:09,581 >> Se dará cuenta de que aquí, He pasado en extremo = esta cosa. 210 00:10:09,581 --> 00:10:12,580 Este es un ejemplo de un opcional argumento, que es una de esas cosas 211 00:10:12,580 --> 00:10:14,990 que Python soporta que hace que sea muy útil. 212 00:10:14,990 --> 00:10:18,240 Así impresión en realidad tiene una gran cantidad de argumentos, que son por lo general 213 00:10:18,240 --> 00:10:20,140 establece en su valor predeterminado valor, pero aquí tengo 214 00:10:20,140 --> 00:10:21,924 decidió anular el llamado final. 215 00:10:21,924 --> 00:10:24,340 La razón por la que tengo que anularlo con una cadena vacía 216 00:10:24,340 --> 00:10:26,756 es que la impresión en Python, por De forma predeterminada, imprime una nueva línea 217 00:10:26,756 --> 00:10:28,630 después de lo que le dijiste a ella también. 218 00:10:28,630 --> 00:10:31,462 >> Así que este hash es en realidad va a imprimir un hash en una nueva línea. 219 00:10:31,462 --> 00:10:34,670 Y si yo no quiero hash para imprimir una nueva línea después, entonces tengo que decir 220 00:10:34,670 --> 00:10:35,340 no imprima una. 221 00:10:35,340 --> 00:10:37,980 222 00:10:37,980 --> 00:10:43,690 Pero, aún así, la última cosa que este programa no se encuentra que uno tiene es 223 00:10:43,690 --> 00:10:44,960 una incluye en la parte superior. 224 00:10:44,960 --> 00:10:48,120 Imprimir se cuece en Python, así que básicamente que no hay cabecera o módulo 225 00:10:48,120 --> 00:10:49,869 que necesita incluir, aunque si quería 226 00:10:49,869 --> 00:10:52,029 para incluir otras cosas en una secuencia de comandos de Python, 227 00:10:52,029 --> 00:10:55,320 Yo lo haría en un format-- muy similar las palabras son sólo un poco diferente. 228 00:10:55,320 --> 00:10:58,840 229 00:10:58,840 --> 00:11:01,360 >> Mencioné que no es necesario un principal aquí, 230 00:11:01,360 --> 00:11:03,372 porque el Python empieza ejecutar en la parte superior. 231 00:11:03,372 --> 00:11:05,080 Si quería envolver esto en una función, I 232 00:11:05,080 --> 00:11:07,667 lo haría como esto-- I diría def nombre de la función, 233 00:11:07,667 --> 00:11:10,500 argumentos podrían ir aquí y vamos a ver algunos de los que más tarde, dos puntos, 234 00:11:10,500 --> 00:11:13,040 y luego de nuevo, esta toda bloque de estallar 235 00:11:13,040 --> 00:11:16,810 es lo que es la operativa bloquear para esa función. 236 00:11:16,810 --> 00:11:18,560 Así que esta es la definición de la función. 237 00:11:18,560 --> 00:11:21,587 Y hay una declaración, luego hacia abajo aquí, puedo llamar a la función. 238 00:11:21,587 --> 00:11:23,920 Y de nuevo, el programa intérprete, comenzando en la parte superior, 239 00:11:23,920 --> 00:11:25,280 verá esta es la definición. 240 00:11:25,280 --> 00:11:27,960 No va a ejecutar este hasta que llegar hasta aquí, y entonces es como, ¡oh 241 00:11:27,960 --> 00:11:30,860 Ahora que has llamado, me Supongo que debería ejecutarlo. 242 00:11:30,860 --> 00:11:33,850 >> Una cosa que es muy común para ver en los archivos de Python, 243 00:11:33,850 --> 00:11:36,700 especialmente los archivos de Python que se lanzan al público 244 00:11:36,700 --> 00:11:41,650 y desarrollado por-- y desarrollado y mantenido, es algo de este formulario. 245 00:11:41,650 --> 00:11:44,540 Esto se debe a que basically-- Python, se empieza en la parte superior 246 00:11:44,540 --> 00:11:50,310 y luego se ejecuta hasta el fondo, I si sólo tenía Mario llamado aquí, 247 00:11:50,310 --> 00:11:54,190 entonces cualquier momento Incluí este archivo en otro archivo, porque quería utilizar 248 00:11:54,190 --> 00:11:58,580 es función de Mario, que lo haría otro archivo también tienen este llamado a Mario en ella. 249 00:11:58,580 --> 00:12:01,000 Y cuando me encontré con ese archivo, sería llamar a Mario. 250 00:12:01,000 --> 00:12:04,520 >> Así que es posible que sólo quiere ejecutar este si he hecho 251 00:12:04,520 --> 00:12:07,290 ejecutado este archivo en particular. 252 00:12:07,290 --> 00:12:11,520 Y para que pueda terminar con esto en un Idiom como este, donde digo, 253 00:12:11,520 --> 00:12:14,820 si el nombre de esta ejecución medio ambiente es el principal, 254 00:12:14,820 --> 00:12:16,200 entonces quiero hacer estas cosas. 255 00:12:16,200 --> 00:12:18,710 De lo contrario, alguien más puede servicio- son mi function-- 256 00:12:18,710 --> 00:12:22,510 mi archivo, y sólo para obtener el acceso a estas funciones 257 00:12:22,510 --> 00:12:25,552 sin tener que ejecutar las cosas que quiero ejecutar en este archivo. 258 00:12:25,552 --> 00:12:27,260 Esto es, de nuevo, opcional pero muy común. 259 00:12:27,260 --> 00:12:30,450 260 00:12:30,450 --> 00:12:33,840 >> Estas cosas son entirely-- son exactamente de la misma entre C y Python, 261 00:12:33,840 --> 00:12:35,100 ciertamente, en 3. 262 00:12:35,100 --> 00:12:38,610 Creo que en 2, el operador de división a veces te da la espalda cuando flota 263 00:12:38,610 --> 00:12:41,450 que operó en enteros, y, o bien querías eso o no lo hiciste. 264 00:12:41,450 --> 00:12:44,777 Pero más, menos, y los tiempos trabajar exactamente como era de esperar, 265 00:12:44,777 --> 00:12:46,110 excepto durante poco más tipos. 266 00:12:46,110 --> 00:12:49,740 Así que usted puede multiplicar carrozas por enteros, y ese tipo de cosas. 267 00:12:49,740 --> 00:12:52,480 >> conjunto funciona exactamente igual. 268 00:12:52,480 --> 00:12:54,310 Se pueden utilizar dos signos igual. 269 00:12:54,310 --> 00:12:59,000 inequals-- mayor que, menor que, este tipo de cosas-- 270 00:12:59,000 --> 00:13:02,580 tienen los significados que usted está familiarizado con ellos. 271 00:13:02,580 --> 00:13:05,770 >> Donde C utiliza estos operadores, Python utiliza un poco más Inglés 272 00:13:05,770 --> 00:13:06,390 Los legibles. 273 00:13:06,390 --> 00:13:09,348 Así que en lugar de dos, símbolos de unión, que literalmente, escriba la palabra "y", "o" 274 00:13:09,348 --> 00:13:10,740 o no." 275 00:13:10,740 --> 00:13:13,420 Al igual que en su si-- en su sentencias condicionales, 276 00:13:13,420 --> 00:13:17,670 vimos anteriormente que esta sintaxis en C corresponde a esta sintaxis en Python. 277 00:13:17,670 --> 00:13:21,010 Y no, no muy diferente allí, excepto por un poco 278 00:13:21,010 --> 00:13:24,780 de puntuacion alrededor de los lados. 279 00:13:24,780 --> 00:13:28,890 Una vez más, donde C haría otra cosa si, Python usa elif, 280 00:13:28,890 --> 00:13:33,960 pero estos son en su mayoría cambios en el nivel superficial. 281 00:13:33,960 --> 00:13:38,450 >> Iteración como éste es a menudo escrito en este idioma en Python. 282 00:13:38,450 --> 00:13:42,350 Usted puede fabricar este tipo de cosa con un bucle while en el exterior 283 00:13:42,350 --> 00:13:46,387 si quería, pero desde luego no tener que hacerlo. 284 00:13:46,387 --> 00:13:48,970 Y de nuevo, si quería la imprimir elementos de un array 285 00:13:48,970 --> 00:13:50,560 es posible hacerlo de esta manera. 286 00:13:50,560 --> 00:13:52,927 Una de las cosas divertidas sobre Python, sin embargo, 287 00:13:52,927 --> 00:13:54,760 es que no es necesario utilizar este paradigma, 288 00:13:54,760 --> 00:13:57,290 y se puede utilizar una ligeramente más elegante una. 289 00:13:57,290 --> 00:13:59,370 Usted dice una de ary. 290 00:13:59,370 --> 00:14:02,980 >> Así que en lugar de ir aquí y en ejecución en los índices, 291 00:14:02,980 --> 00:14:05,630 y luego sacando elementos individuales, 292 00:14:05,630 --> 00:14:08,644 usted le dice al de al realidad sólo atropellar a los propios elementos. 293 00:14:08,644 --> 00:14:11,060 Y entonces lo que estás haciendo en el interior se puede operar directamente 294 00:14:11,060 --> 00:14:13,260 sobre los elementos, lo que es bastante divertido. 295 00:14:13,260 --> 00:14:16,710 Y vamos a ver-- usaremos ese idioma y otra vez 296 00:14:16,710 --> 00:14:18,050 mientras caminamos a través de código. 297 00:14:18,050 --> 00:14:20,091 >> Esto es, de nuevo, un ejemplo de algo que voy a 298 00:14:20,091 --> 00:14:23,300 llamar Python magia, aunque hay razones muy técnicos por qué funciona. 299 00:14:23,300 --> 00:14:26,340 Y hay cosas técnicas que tenga que ser verdad acerca matriz en orden 300 00:14:26,340 --> 00:14:28,340 Para que esto funcione detrás de las escenas. 301 00:14:28,340 --> 00:14:31,390 La cosa es que la mayoría de los tipos que era de esperar que esto funcione 302 00:14:31,390 --> 00:14:36,610 haber tenido esta implementado para que en el lenguaje incorporado. 303 00:14:36,610 --> 00:14:40,030 >> Otra cosa que sería bueno si esto funcionó en todos los idiomas, 304 00:14:40,030 --> 00:14:45,460 pero hay algunas razones por las que no se puede, imprimir esta cadena veces este número. 305 00:14:45,460 --> 00:14:48,860 Resulta que en Python, esto hace exactamente lo que le gustaría, que es sólo diversión, 306 00:14:48,860 --> 00:14:52,840 y significa que podemos realidad reducir este programa, de nuevo mario.c. 307 00:14:52,840 --> 00:14:57,150 En lugar de la iteración mucho, podemos a decir, quiero un poco número de espacios, 308 00:14:57,150 --> 00:15:01,120 Quiero que el número de hashes, y algunos hashes al final. 309 00:15:01,120 --> 00:15:02,640 Y de nuevo, usamos este formato. 310 00:15:02,640 --> 00:15:05,340 >> Aquí, estamos pasando una variable de esta manera. 311 00:15:05,340 --> 00:15:08,050 Una vez más, no necesitamos decir qué tipo de variables es, 312 00:15:08,050 --> 00:15:11,322 y la única vez que vamos a obtener errores es en tiempo de ejecución. 313 00:15:11,322 --> 00:15:13,030 Cuando alguien intenta pasar algo en, 314 00:15:13,030 --> 00:15:14,860 que va a entrar en la función de bien. 315 00:15:14,860 --> 00:15:18,240 Si cuña aquí porque este no es el Lo que usted puede crear rangos más, 316 00:15:18,240 --> 00:15:22,100 Voy a buscar un error de ejecución allí, y voy a tener que depurar esa manera. 317 00:15:22,100 --> 00:15:25,050 Pero, mientras tanto, no tengo que ser muy cuidadoso con lo 318 00:15:25,050 --> 00:15:32,800 se pasa en, tanto tiempo como en el actual ejecución todo funciona muy limpiamente. 319 00:15:32,800 --> 00:15:35,080 >> Incluso podría hacer este un poco más limpia 320 00:15:35,080 --> 00:15:41,770 utilizando una función incorporada en particular, en cadenas, que se Derecha Justificar. 321 00:15:41,770 --> 00:15:45,250 Esto es sólo una función útil ahí la biblioteca. 322 00:15:45,250 --> 00:15:47,660 Está en la documentación si vas y lo busca. 323 00:15:47,660 --> 00:15:51,650 Y yo digo, así que voy a tener esta cadena, un número de hashes, 324 00:15:51,650 --> 00:15:56,390 y me gustaría justificar derecho pad it-- hacia fuera con espacios sea esta longitud. 325 00:15:56,390 --> 00:16:00,584 >> Una vez más, esto es en el documentación, que trae nosotros-- 326 00:16:00,584 --> 00:16:03,500 Voy a realmente hacer clic a través these-- lo que nos lleva a nuestra segunda regla 327 00:16:03,500 --> 00:16:06,990 para la biblioteca estándar Python-- métodos de función son tus amigos. 328 00:16:06,990 --> 00:16:09,880 Y es a menudo vale la pena para ir en busca de me pregunto 329 00:16:09,880 --> 00:16:12,310 si hay una cosa que simplemente lo hace. 330 00:16:12,310 --> 00:16:13,830 Hay probablemente lo es. 331 00:16:13,830 --> 00:16:15,990 Si desea pad fuera una cadena, si lo 332 00:16:15,990 --> 00:16:17,470 Aprovecho la espalda medio de una cadena, si lo 333 00:16:17,470 --> 00:16:20,370 gustaría buscar a través de una cadena, si desea romper un par de cosas 334 00:16:20,370 --> 00:16:22,420 junto con una cadena con comas entre ellos, 335 00:16:22,420 --> 00:16:24,640 hay biblioteca estándar funciones para hacer esto. 336 00:16:24,640 --> 00:16:27,190 >> Y hace que su vida más fácil si se utilizan 337 00:16:27,190 --> 00:16:29,240 en lugar de despliegue todo por su cuenta 338 00:16:29,240 --> 00:16:31,650 en cinco líneas de código aquí, cinco líneas de código aquí. 339 00:16:31,650 --> 00:16:34,430 Eso realmente comienza a las sumar a tiempo real. 340 00:16:34,430 --> 00:16:37,430 >> Una de las cosas interesantes acerca de cómo esto se llama. 341 00:16:37,430 --> 00:16:39,980 Se dará cuenta de que hay una cosa de puntos. 342 00:16:39,980 --> 00:16:43,490 Tengo algún objeto a la izquierda, y luego llamé a un punto de una función. 343 00:16:43,490 --> 00:16:49,780 Este es uno de los paradigmas que Python utiliza para la fijación de los métodos a los objetos. 344 00:16:49,780 --> 00:16:54,410 Vamos a hablar de lo que esto es muy brevemente al final, 345 00:16:54,410 --> 00:16:58,510 pero sabemos que los dos podemos operar sobre cosas mediante la adopción de ese punto lo que dice 346 00:16:58,510 --> 00:17:01,690 lo que sea, o llamando al una función que toma 347 00:17:01,690 --> 00:17:04,339 ese objeto y algunos otros argumentos. 348 00:17:04,339 --> 00:17:07,450 >> Así que estas son las dos formas en que se hacen las cosas en Python. 349 00:17:07,450 --> 00:17:09,780 Y si un particular, funcionalidad se implementa 350 00:17:09,780 --> 00:17:14,230 en este estilo o este estilo es algo que 351 00:17:14,230 --> 00:17:19,990 debe mirar hacia arriba hasta que obtenga un bloqueo de los cuales uno es probable que caiga en. 352 00:17:19,990 --> 00:17:22,660 Hay una más o menos cohesivo filosofía detrás de Python 353 00:17:22,660 --> 00:17:24,930 que absorbe la mayoría escribiendo mucho en él. 354 00:17:24,930 --> 00:17:28,190 En algún momento, que uno de estos algo va a ser implementado como 355 00:17:28,190 --> 00:17:29,470 se vuelve natural. 356 00:17:29,470 --> 00:17:32,420 Por ahora, es sólo algo a aprender como a determinar 357 00:17:32,420 --> 00:17:34,140 cada cosa individual. 358 00:17:34,140 --> 00:17:36,420 >> Así biblioteca estándar funciones son sus amigos, 359 00:17:36,420 --> 00:17:41,320 y que permiten escribir cosas que asumir este espacio muy breve, 360 00:17:41,320 --> 00:17:42,040 muy elegantemente. 361 00:17:42,040 --> 00:17:45,670 Y esto es en realidad probablemente más legibles, yo diría, que el programa de C 362 00:17:45,670 --> 00:17:46,780 Por ahí. 363 00:17:46,780 --> 00:17:49,730 Por no mencionar el hecho de que es tan corta puede caber todo un elefante 364 00:17:49,730 --> 00:17:52,250 en el espacio que hemos ahorrado. 365 00:17:52,250 --> 00:17:56,270 >> Otra cosa, esta es una implementación de mario eso es punto C, que creo que 366 00:17:56,270 --> 00:17:57,890 es el menor lo puede conseguir. 367 00:17:57,890 --> 00:18:00,757 No tiene el get int, pero que los códigos duros el valor de 10 368 00:18:00,757 --> 00:18:02,090 de la misma manera que éste hace. 369 00:18:02,090 --> 00:18:06,080 Resulta que este uno de los relojes en 84 caracteres, mientras que Python es 64. 370 00:18:06,080 --> 00:18:11,490 Y esto es infinitamente más legible que esta basura aquí. 371 00:18:11,490 --> 00:18:14,610 Así Python es más eficiente en el espacio. 372 00:18:14,610 --> 00:18:17,260 Es ligeramente menos eficiente en el tiempo, pero no por mucho. 373 00:18:17,260 --> 00:18:18,890 >> Las listas son una cosa importante en Python. 374 00:18:18,890 --> 00:18:21,540 375 00:18:21,540 --> 00:18:24,587 No los hemos visto, pero operar al igual que las matrices pueden hacer en C. 376 00:18:24,587 --> 00:18:27,170 Así que aquí, puede declararlos, usted puede pasarlos en una cosa. 377 00:18:27,170 --> 00:18:29,810 Ahora cuadrados sostiene un conjunto de estas cosas. 378 00:18:29,810 --> 00:18:33,480 Una vez más, no hemos declarado tipo, pero si alguna vez tratamos de usarlo, 379 00:18:33,480 --> 00:18:36,260 cualquier cosa que usted esperaba trabajar en una matriz de enteros 380 00:18:36,260 --> 00:18:40,130 va a trabajar en una matriz de enteros. 381 00:18:40,130 --> 00:18:42,030 >> Esto es una cosa que a pesar de todo no se puede 382 00:18:42,030 --> 00:18:47,390 hacerlo en C, ya que el la memoria es tan manos, 383 00:18:47,390 --> 00:18:48,950 pero es muy fácil de hacer en Python. 384 00:18:48,950 --> 00:18:55,310 Si quiero que mi matriz a ser más grande, que pueda añadir un elemento a la misma y que está bien. 385 00:18:55,310 --> 00:18:57,150 >> ¿Qué está pasando detrás de las escenas? 386 00:18:57,150 --> 00:18:59,150 El intérprete irá y conseguir un poco de memoria, 387 00:18:59,150 --> 00:19:00,860 y tal vez obtendrá un poco de memoria extra, 388 00:19:00,860 --> 00:19:03,090 por lo que no, así que no tengo a realloc cada vez. 389 00:19:03,090 --> 00:19:04,897 Pero, ¿cuánto tienen más memoria no lo necesitan? 390 00:19:04,897 --> 00:19:06,730 Esto no son decisiones que usted tiene que hacer, 391 00:19:06,730 --> 00:19:10,540 estas son decisiones que los intérprete se va a hacer. 392 00:19:10,540 --> 00:19:12,270 >> Aquí vemos gama posible tomar dos argumentos, 393 00:19:12,270 --> 00:19:16,430 pero aún así va a ser incluido de la parte superior así que agregamos 1 existe. 394 00:19:16,430 --> 00:19:21,970 Esta es una expresión idiomática, que es un aún más forma inteligente de escribir cosas como esta. 395 00:19:21,970 --> 00:19:25,980 Se llama lista por comprensión, y aquí lo que estamos diciendo 396 00:19:25,980 --> 00:19:32,560 es que me gustaría poner en I cuadrado para cada valor de i en este rango. 397 00:19:32,560 --> 00:19:35,770 Esta cosa de la derecha podría ser otro matriz, y esta cosa de la izquierda 398 00:19:35,770 --> 00:19:40,740 al ser cualquier función en particular que llevaría en i como variable 399 00:19:40,740 --> 00:19:42,250 y darme a cabo algún resultado. 400 00:19:42,250 --> 00:19:43,480 >> Lo que voy a hacer es, Voy a construir 401 00:19:43,480 --> 00:19:46,200 una matriz que es todas estas cosas para cada valor en este rango. 402 00:19:46,200 --> 00:19:48,960 403 00:19:48,960 --> 00:19:55,670 Y esto es super elegante, súper corto, y es muy claro lo que significa. 404 00:19:55,670 --> 00:19:59,190 Esta es una de las cosas-- esto es de nuevo, 405 00:19:59,190 --> 00:20:03,860 se de-- muy emblemático de la razones que la gente como Python. 406 00:20:03,860 --> 00:20:05,900 Si te gusta la programación así, entonces Python 407 00:20:05,900 --> 00:20:07,830 es un lenguaje que le gustaría aprender. 408 00:20:07,830 --> 00:20:10,950 >> Y de nuevo, hay técnica razones por las que esto funcione. 409 00:20:10,950 --> 00:20:14,730 Pero en lo que a nosotros respecta, que más o menos no nos importa. 410 00:20:14,730 --> 00:20:18,500 >> Así que si usted desea imprimir listas, algunos de los mismos modismos son útiles. 411 00:20:18,500 --> 00:20:20,940 Para i en este rango, podríamos índice a través de todas las cosas 412 00:20:20,940 --> 00:20:23,140 y luego imprimirlos todos. 413 00:20:23,140 --> 00:20:24,650 Y verás Len aquí. 414 00:20:24,650 --> 00:20:27,150 Si alguna vez has querido conseguir la longitud de la matriz, que es 415 00:20:27,150 --> 00:20:31,150 muy fácil en Python, es muy difícil en C. 416 00:20:31,150 --> 00:20:33,720 Esto imprimir exactamente lo que se espera que lo haga. 417 00:20:33,720 --> 00:20:36,986 Podríamos también, como hemos visto antes, iterar sobre los elementos de matriz 418 00:20:36,986 --> 00:20:39,860 directamente, y luego simplemente hablar ellos, en lugar de tener el índice 419 00:20:39,860 --> 00:20:43,190 de nuevo en la matriz cada vez. 420 00:20:43,190 --> 00:20:45,990 >> Y esto es una cosa que usted puede hacer. 421 00:20:45,990 --> 00:20:49,984 Así que en C, si pides algo así, la impresión diría, 422 00:20:49,984 --> 00:20:51,150 eso es una matriz de enteros. 423 00:20:51,150 --> 00:20:53,456 Eso no es definitivamente un cadena, no puedo imprimir. 424 00:20:53,456 --> 00:20:54,830 Python más o menos no le importa. 425 00:20:54,830 --> 00:20:57,496 Es como, ¿hay alguna manera de que yo podría convertir esto en una cadena? 426 00:20:57,496 --> 00:20:58,500 Sí, lo haré. 427 00:20:58,500 --> 00:21:01,600 Y así que voy a imprimir eso. 428 00:21:01,600 --> 00:21:03,640 Esto significa que usted puede hacer cosas como-- éstos 429 00:21:03,640 --> 00:21:06,530 son la mayoría de las partes duras del juego de quince, por escrito 430 00:21:06,530 --> 00:21:08,930 muy brevemente en Python. 431 00:21:08,930 --> 00:21:11,320 >> Verás que hay un poco de-- aquí 432 00:21:11,320 --> 00:21:14,441 He echo un entero a una cadena, y tengo que hacerlo manualmente. 433 00:21:14,441 --> 00:21:16,190 Y yo voy a añadir a otra cadena, 434 00:21:16,190 --> 00:21:17,590 o de otra manera Python se confunde. 435 00:21:17,590 --> 00:21:19,840 Pero si cuando estás añadir una cadena a un entero, 436 00:21:19,840 --> 00:21:22,630 Estoy supongo que para conseguir una entero espalda o una cadena de vuelta? 437 00:21:22,630 --> 00:21:24,480 Pero, de nuevo, si sólo llamar str en una cosa, 438 00:21:24,480 --> 00:21:27,240 y podría en cualquier posible mundo se convierte en una cadena, 439 00:21:27,240 --> 00:21:30,390 probablemente será convertido en una cadena. 440 00:21:30,390 --> 00:21:33,120 >> Aquí, vemos el uso de lista anidada comprensión 441 00:21:33,120 --> 00:21:38,690 a la izquierda, algunos de indexación, que es exactamente como era de estar acostumbrado a ella, 442 00:21:38,690 --> 00:21:40,060 y algunos la impresión de las cosas. 443 00:21:40,060 --> 00:21:42,560 Una vez más, hemos definido algunos funciones y que llamaremos abajo 444 00:21:42,560 --> 00:21:45,820 en principal cuando conseguimos realmente el archivo. 445 00:21:45,820 --> 00:21:52,004 retorno funciona exactamente como te gustaría esperar de trabajar con C. Buscar, 446 00:21:52,004 --> 00:21:54,420 podemos configurar cosas como esto-- aquí está la lista de la comprensión 447 00:21:54,420 --> 00:21:59,245 hay una asignación a una variable, y que en realidad podemos hacer que sea aún más fácil. 448 00:21:59,245 --> 00:22:01,870 No necesitamos escribir la búsqueda, ya incorporada a la lengua 449 00:22:01,870 --> 00:22:04,230 es si esto es en esta matriz. 450 00:22:04,230 --> 00:22:05,680 Devuelve verdadero, de lo return false. 451 00:22:05,680 --> 00:22:08,830 Así que esa es la totalidad del hallazgo. 452 00:22:08,830 --> 00:22:12,230 >> La totalidad de especie implica llamar especie, 453 00:22:12,230 --> 00:22:15,462 de que éstos existen implementaciones de esta integrada en ciertas librerías C. 454 00:22:15,462 --> 00:22:17,170 Si desea este especie de revés, que 455 00:22:17,170 --> 00:22:20,450 puede anular esta opción argumento a la inversa con una verdadera. 456 00:22:20,450 --> 00:22:23,350 457 00:22:23,350 --> 00:22:27,860 Y si desea ordenar más cuerdas, que se construye en también. 458 00:22:27,860 --> 00:22:31,950 >> Así que esto no es para decir que son cosas que usted necesita para hacer todos los días, 459 00:22:31,950 --> 00:22:34,280 pero la idea es que este Es la filosofía de Python, 460 00:22:34,280 --> 00:22:37,530 que todas estas cosas que había especie de querer hacer están incorporados. 461 00:22:37,530 --> 00:22:42,410 Y la mayoría de las funciones estándar, así que tipo, longitud, lo que sea, 462 00:22:42,410 --> 00:22:44,380 apoyar insumo más lógicamente sensible. 463 00:22:44,380 --> 00:22:49,020 Usted llamar Len en una serie de la misma forma de llamar a Len en una cuerda. 464 00:22:49,020 --> 00:22:55,785 Usted multiply-- ordenar cadenas de la misma manera a resolver matrices. 465 00:22:55,785 --> 00:22:58,930 466 00:22:58,930 --> 00:23:00,740 >> La mayoría de las funciones estándar que las personas construyen, 467 00:23:00,740 --> 00:23:03,000 y la mayor parte de terceros BIBLIOTECAS personas 468 00:23:03,000 --> 00:23:06,980 construir, porque están emulando el diseño de la biblioteca estándar, 469 00:23:06,980 --> 00:23:10,190 Se puede llamar a todo lo que eres al igual que, ¿por qué no esto sólo funciona, 470 00:23:10,190 --> 00:23:12,800 en C. Más o menos, que funcionará en Python 471 00:23:12,800 --> 00:23:15,930 porque la gente trabaja detrás de la figura qué cosa es y luego operar 472 00:23:15,930 --> 00:23:17,510 adecuadamente en él. 473 00:23:17,510 --> 00:23:22,760 Así que de nuevo, formación técnica, pero hace nuestra vida más fácil como programadores. 474 00:23:22,760 --> 00:23:26,820 >> Así que aquí está el archivo de E / S. File I / O tiene un montón de pequeñas cosas que hacen que sea complicado, 475 00:23:26,820 --> 00:23:29,890 y por lo que hay recursos en línea, pero en pocas palabras, 476 00:23:29,890 --> 00:23:33,010 usted llama abierta en un archivo nombrar con un tipo particular. 477 00:23:33,010 --> 00:23:37,640 Así que eso es leer, leer y escribir, escribir o anexar. 478 00:23:37,640 --> 00:23:41,790 Usted lee un cierto número de personajes y que se imprimen los, 479 00:23:41,790 --> 00:23:42,595 obtendrá Hola! 480 00:23:42,595 --> 00:23:43,970 Es decir, al igual que este archivo tenía Hola! 481 00:23:43,970 --> 00:23:46,480 En ella, llame a leer, y lo que se obtiene de vuelta 482 00:23:46,480 --> 00:23:49,520 es una cadena que tiene toda del resto de la matriz, 483 00:23:49,520 --> 00:23:50,860 o la totalidad del resto del archivo. 484 00:23:50,860 --> 00:23:53,805 485 00:23:53,805 --> 00:23:56,055 Si llama a leer de nuevo, estás en el final del archivo, 486 00:23:56,055 --> 00:23:58,138 y así no obtiene cualquier cosa y por lo que cierra. 487 00:23:58,138 --> 00:24:02,510 De nuevo, esto es .close en lugar de cerrar el archivo, ya que sería en C. 488 00:24:02,510 --> 00:24:07,190 Esto es más o menos porque f es una cosa, y que le gustaría para f para cerrar. 489 00:24:07,190 --> 00:24:12,092 Pero archivo básico de E / S no es particularmente complicado. 490 00:24:12,092 --> 00:24:15,300 Una vez más, si desea abrir un archivo, si desea leer una línea en particular, 491 00:24:15,300 --> 00:24:17,870 usted puede salir de especial line-- hay muebles empotrados para eso. 492 00:24:17,870 --> 00:24:19,995 Si desea escribir una cosa, usted puede escribir esto. 493 00:24:19,995 --> 00:24:23,412 Si desea escribir individuo picaduras, puede escribir esos. 494 00:24:23,412 --> 00:24:25,620 Y si desea repetir sobre las líneas de un archivo 495 00:24:25,620 --> 00:24:29,557 de forma individual, como lo hicimos en un pedazo de Hace unas semanas, se puede hacer eso a. 496 00:24:29,557 --> 00:24:32,140 Una vez más, la mayoría de los objetos que había gustaría ser capaz de iterar sobre 497 00:24:32,140 --> 00:24:33,780 apoyo iterar sobre ellos. 498 00:24:33,780 --> 00:24:37,430 En pitones, un archivo es tal vez una cosa que Me gustaría iterar sobre línea por línea. 499 00:24:37,430 --> 00:24:39,138 Si se trataba de un diccionario de las palabras y yo era 500 00:24:39,138 --> 00:24:42,181 tratando de conseguir los individuo palabras que salieron, pues, dentro de este ciclo, 501 00:24:42,181 --> 00:24:44,180 la línea que va a ser cada palabra a su vez, y esto 502 00:24:44,180 --> 00:24:47,880 va a ser ejecutado por cada línea en el archivo hasta el final del archivo. 503 00:24:47,880 --> 00:24:52,280 Y de nuevo, si Imprimí cada línea, las líneas vienen con nuevas líneas, 504 00:24:52,280 --> 00:24:54,740 así que estoy estableciendo el final respaldar a una cosa como esta. 505 00:24:54,740 --> 00:24:56,580 Entonces me gustaría conseguir el contenido de mi archivo. 506 00:24:56,580 --> 00:25:03,610 507 00:25:03,610 --> 00:25:07,480 >> La segunda cosa que opera en algunos aspectos como las listas, y en algunos aspectos 508 00:25:07,480 --> 00:25:11,870 como algo sustancialmente mas poderoso, 509 00:25:11,870 --> 00:25:16,170 son los diccionarios, que son realmente fresco de usar, pero son básicamente de hash 510 00:25:16,170 --> 00:25:17,670 mesas disfrazados. 511 00:25:17,670 --> 00:25:23,330 Puede crear uno usando exactamente dos personajes, que es impresionante 512 00:25:23,330 --> 00:25:25,959 si se trató de implementar el tabla hash para el conjunto de problemas, 513 00:25:25,959 --> 00:25:27,250 usted sabe tanto dolor que puede ser. 514 00:25:27,250 --> 00:25:29,390 Pero la gente ha hecho , y lo ha hecho tan bien, 515 00:25:29,390 --> 00:25:32,260 que usted no tiene que preocuparse de más. 516 00:25:32,260 --> 00:25:35,180 >> A continuación, puede insertar cosas individuales. 517 00:25:35,180 --> 00:25:38,110 Tables-- Hash o diccionarios hacer no particularmente 518 00:25:38,110 --> 00:25:40,240 importa lo que usted está almacenando en ellos. 519 00:25:40,240 --> 00:25:44,210 Así que si algunas entradas son números, y algunas entradas están listas, 520 00:25:44,210 --> 00:25:47,360 si algunas entradas son otros diccionarios, y algunas entradas son cadenas, 521 00:25:47,360 --> 00:25:49,930 Python no hace mucho cuidado. 522 00:25:49,930 --> 00:25:53,460 >> Una vez más, si vas en él esperando una cadena y lo que recibe 523 00:25:53,460 --> 00:25:56,269 es una matriz, ese es su problema. 524 00:25:56,269 --> 00:25:58,810 Y tal vez es culpa de quien pensó que estaba poniendo las cosas 525 00:25:58,810 --> 00:26:00,476 en el diccionario, tal vez eso era usted. 526 00:26:00,476 --> 00:26:02,350 Si eso era alguien otra cosa, es de esperar que eran 527 00:26:02,350 --> 00:26:04,520 buen comportamiento en lo que estaba pasando en el diccionario 528 00:26:04,520 --> 00:26:07,420 y no dejar ninguna trampas para que usted se cae en. 529 00:26:07,420 --> 00:26:10,890 >> Pero las funciones estándar devolverte las cosas de buen comportamiento. 530 00:26:10,890 --> 00:26:13,500 Eso dicen esto devuelve copias de un diccionario de cadenas, 531 00:26:13,500 --> 00:26:15,860 entonces todo lo que vas para salir de una cadena. 532 00:26:15,860 --> 00:26:20,710 Si lo hace un poco de esto y ADPIC para arriba, así que puede ser que sea en ti. 533 00:26:20,710 --> 00:26:25,542 Python sin duda le da suficiente cuerda para ahorcarse, si lo desea. 534 00:26:25,542 --> 00:26:28,250 Ahora podemos imprimir individuo elementos de este y este vuelve 535 00:26:28,250 --> 00:26:29,935 exactamente lo que cabría esperar. 536 00:26:29,935 --> 00:26:32,810 Exactamente lo que se espera, supongo, es una frase que estoy usando mucho, 537 00:26:32,810 --> 00:26:35,070 pero eso es más o menos cómo funciona Python. 538 00:26:35,070 --> 00:26:39,880 Si usted pide una cosa que no es que, Python tirar un error 539 00:26:39,880 --> 00:26:43,194 y te dejará fuera de cualquier programa que estabas en. 540 00:26:43,194 --> 00:26:45,360 En realidad va a imprimir más información que eso, 541 00:26:45,360 --> 00:26:49,110 que va a apuntar usted-- Va añadir una línea, y así. 542 00:26:49,110 --> 00:26:52,190 >> Y, de nuevo, tal vez queremos para repetir diccionarios 543 00:26:52,190 --> 00:26:54,410 y encontrar todas las cosas en él. 544 00:26:54,410 --> 00:26:57,440 Aquí estamos iterando sobre dos cosas al mismo tiempo. 545 00:26:57,440 --> 00:27:03,040 Y así lo haremos con una clave, el valor, pero luego imprimir todos estos. 546 00:27:03,040 --> 00:27:06,300 >> Y si quisiéramos cast-- si en realidad encontramos esto, 547 00:27:06,300 --> 00:27:10,840 tendríamos algunos problemas porque en-- cuando fuimos con David, 548 00:27:10,840 --> 00:27:13,920 no podía add-- si no lo hiciéramos echarlo a una cadena en primer lugar, 549 00:27:13,920 --> 00:27:17,802 no podríamos añadir que array de cadenas en una cadena. 550 00:27:17,802 --> 00:27:19,760 Pero si echamos a un cadena, obtenemos algo 551 00:27:19,760 --> 00:27:22,590 como este, que es tal vez lo que nos gustaría leer. 552 00:27:22,590 --> 00:27:27,000 553 00:27:27,000 --> 00:27:30,500 >> Y esto es corrector ortográfico. 554 00:27:30,500 --> 00:27:32,460 Acabamos de leer en las cosas. 555 00:27:32,460 --> 00:27:35,770 Así podemos leer en palabras individuales como líneas. 556 00:27:35,770 --> 00:27:38,240 Nosotros cortamos fuera el último cosa, por lo menos 1 de colon 557 00:27:38,240 --> 00:27:41,651 Chomps fuera lo último que nosotros-- el último carácter de una cadena. 558 00:27:41,651 --> 00:27:42,150 Bien dicho. 559 00:27:42,150 --> 00:27:44,730 OK, cada uno de los que obtiene insertado en este diccionario, 560 00:27:44,730 --> 00:27:45,810 asignación a un valor de 1. 561 00:27:45,810 --> 00:27:48,006 Lo hacemos no particularmente se preocupan por que uno, 562 00:27:48,006 --> 00:27:51,130 pero es sólo que hay que decir, bueno, esta cosa que va a poner en el diccionario. 563 00:27:51,130 --> 00:27:53,182 Porque más tarde de lo que somos vamos a hacer es que estamos 564 00:27:53,182 --> 00:27:55,390 va a decir, bueno, si es en el diccionario en absoluto. 565 00:27:55,390 --> 00:27:57,650 >> Una vez más, este cheque por membresía depende operativo 566 00:27:57,650 --> 00:28:00,940 utilizando un completamente diferente algoritmo de lo que será en una lista, 567 00:28:00,940 --> 00:28:05,709 pero nosotros lo llamamos de la misma manera, lo que es parte de esa capa de azúcar Python 568 00:28:05,709 --> 00:28:07,250 cosas para que sean más fáciles de usar. 569 00:28:07,250 --> 00:28:10,230 Y una vez más, hemos visto cosas como esto antes. 570 00:28:10,230 --> 00:28:12,940 Esto es, básicamente, encontrar, o es exactamente la misma sintaxis 571 00:28:12,940 --> 00:28:16,480 como encontrar, pero está funcionando más de un completamente diferente estructura. 572 00:28:16,480 --> 00:28:20,170 Y no nos preocupamos especialmente. 573 00:28:20,170 --> 00:28:25,540 Así que esas son las cosas que usted se les pidió que aplicar para la ortografía. 574 00:28:25,540 --> 00:28:29,278 A este ritmo, vamos a conseguir más o menos todos los conjuntos de procesadores hecho. 575 00:28:29,278 --> 00:28:31,474 >> AUDIENCIA: Para que básicamente vuelve 576 00:28:31,474 --> 00:28:34,852 como incorrectamente escrito si no lo hace coincidir con algo en el diccionario? 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 Y así, se trata de una adaptación de un problema establecido 580 00:28:40,880 --> 00:28:43,150 que pide para hacer exactamente eso. 581 00:28:43,150 --> 00:28:46,357 >> AUDIENCIA: ¿Por qué es la línea menos 1 allí? 582 00:28:46,357 --> 00:28:48,190 ROSS Rheingans-YOO: Así cuando se está iterando 583 00:28:48,190 --> 00:28:50,300 sobre un archivo pidiendo por líneas, las líneas 584 00:28:50,300 --> 00:28:53,900 vienen con un carácter de nueva línea al final de la it-- menos 1 585 00:28:53,900 --> 00:28:55,260 es sólo para ir de compras los apagado. 586 00:28:55,260 --> 00:28:59,549 Y esta es una particularmente flexible modo de indexación en las cosas. 587 00:28:59,549 --> 00:29:01,590 Así que si usted tiene una cadena, y que le gustaría, así que estoy 588 00:29:01,590 --> 00:29:05,340 va a comenzar en el carácter de tres y me voy a ir hasta el final. 589 00:29:05,340 --> 00:29:07,140 3 de colon lo hará por usted. 590 00:29:07,140 --> 00:29:10,570 Si usted es como, quiero empezar por el a partir e ir a la última menos 1 591 00:29:10,570 --> 00:29:12,400 carácter, colon menos 1. 592 00:29:12,400 --> 00:29:14,940 Y si quería ir de la tercera a la primera, menos, 593 00:29:14,940 --> 00:29:16,570 entonces dirías 3 menos 1. 594 00:29:16,570 --> 00:29:19,464 595 00:29:19,464 --> 00:29:22,400 >> Además, si desea indizar en las cosas a contar desde la parte de atrás, 596 00:29:22,400 --> 00:29:24,470 que acaba de índice en números negativos. 597 00:29:24,470 --> 00:29:26,980 Y porque, donde C explotaría o tal vez 598 00:29:26,980 --> 00:29:31,090 alimentarte otra memoria que no tenía acceso a oír que se puede decir menos 1 599 00:29:31,090 --> 00:29:34,104 significa la penúltima 1 carácter en una cadena. 600 00:29:34,104 --> 00:29:36,950 601 00:29:36,950 --> 00:29:43,590 >> Los módulos son version-- son análogos a las bibliotecas de C 602 00:29:43,590 --> 00:29:45,119 y son útiles para muchas cosas. 603 00:29:45,119 --> 00:29:46,910 Un montón de cosas que le gustaría hacer en Python, 604 00:29:46,910 --> 00:29:50,040 además de sencillo manipulación de variables, 605 00:29:50,040 --> 00:29:52,290 desea conectar a la bibliotecas más grandes con mayor 606 00:29:52,290 --> 00:29:55,910 interfaces y más capacidades para interactuar 607 00:29:55,910 --> 00:29:57,195 con otras partes del mundo. 608 00:29:57,195 --> 00:29:58,910 sys es uno de los con un montón de herramientas 609 00:29:58,910 --> 00:30:01,159 que son útiles para interactuar con el propio sistema de 610 00:30:01,159 --> 00:30:05,050 y que importarlo como import sys. 611 00:30:05,050 --> 00:30:07,820 >> Hay más documentación eso, que usted podría ir aquí, 612 00:30:07,820 --> 00:30:11,490 o usted podría encontrar en Google por google sys Python. 613 00:30:11,490 --> 00:30:12,640 Usted escribe en entrar. 614 00:30:12,640 --> 00:30:15,140 El primer enlace va a ser la documentación en Python 2, 615 00:30:15,140 --> 00:30:19,260 el segundo enlace va a la documentación de Python 3. 616 00:30:19,260 --> 00:30:24,830 >> Y si escribimos un archivo que parecía así- Si, en particular, estamos 617 00:30:24,830 --> 00:30:27,910 mirando a operar en argumentos de la línea de comandos, 618 00:30:27,910 --> 00:30:30,040 como aprendimos a hacer muy desde el principio en esta clase. 619 00:30:30,040 --> 00:30:32,190 Esto no es difícil. Usted puede salir argv, 620 00:30:32,190 --> 00:30:34,565 que es una de esas cosas el cual es implementado por sys. 621 00:30:34,565 --> 00:30:37,210 No es incorporado a la paquete básico, pero de nuevo, 622 00:30:37,210 --> 00:30:40,080 puede extenderlo mediante la importación que la funcionalidad de sys. 623 00:30:40,080 --> 00:30:41,090 Usted lo llama sys. 624 00:30:41,090 --> 00:30:42,611 lo que sea. 625 00:30:42,611 --> 00:30:43,360 Aquí hay argv. 626 00:30:43,360 --> 00:30:45,193 En realidad hay ninguna argc en sys, porque 627 00:30:45,193 --> 00:30:47,880 puede llegar tan fácilmente llamando len. 628 00:30:47,880 --> 00:30:55,390 Luego imprimimos eso, entonces nosotros corrió en nuestro echo-args.py terminal. 629 00:30:55,390 --> 00:30:58,360 Volvemos una matriz, que Es este primer argumento. 630 00:30:58,360 --> 00:31:02,240 De nuevo, esto es argv 0, que es el nombre de la cosa que consiguió llama. 631 00:31:02,240 --> 00:31:04,870 Si lo llamamos con adicional argumentos, que conseguirían los de vuelta. 632 00:31:04,870 --> 00:31:07,687 633 00:31:07,687 --> 00:31:09,770 Esta es una manera de conseguir argumentos de la línea de comandos. 634 00:31:09,770 --> 00:31:13,440 Si quieres banderas donde se gira cosas particulares sobre o anulación 635 00:31:13,440 --> 00:31:16,050 un incumplimiento concreto, argparse es su amigo. 636 00:31:16,050 --> 00:31:21,550 Y una vez más te encuentras con que en línea en python argparse en Google. 637 00:31:21,550 --> 00:31:24,300 >> Hay un par de utilidad módulos que usted se encuentra usando 638 00:31:24,300 --> 00:31:27,630 y otra vez, si uno pasa algún tiempo de esta lengua importación jsons 639 00:31:27,630 --> 00:31:33,300 para la lectura dentro y fuera de json archivos, no es tan complicado. 640 00:31:33,300 --> 00:31:37,139 Usted abre un archivo, llamado json.load en ese archivo y te devuelven nada. 641 00:31:37,139 --> 00:31:37,930 ¿Que es esa cosa? 642 00:31:37,930 --> 00:31:40,329 Es un objeto JSON. 643 00:31:40,329 --> 00:31:42,370 Donde que json tiene arreglo, Python tiene matrices. 644 00:31:42,370 --> 00:31:44,420 ¿Dónde tiene que json matrices asociativas, Python 645 00:31:44,420 --> 00:31:48,810 diccionarios, cuerdas, y números, y así sucesivamente. 646 00:31:48,810 --> 00:31:53,560 Usted quiere volcar que fuera, abrir un nuevo archivo, se llama a vertedero, 647 00:31:53,560 --> 00:31:57,590 y cargas y vertederos de entrar y salir de las cuerdas. 648 00:31:57,590 --> 00:32:02,120 >> Del mismo modo, la salmuera se llama básicamente de la misma interfaz. 649 00:32:02,120 --> 00:32:04,740 Es un poco más útil si estás vertido objetos Python. 650 00:32:04,740 --> 00:32:08,370 Así que si alguna vez has querido guardar una versión de la situación actual 651 00:32:08,370 --> 00:32:11,930 de una variable para un futuro gestión de su programa, 652 00:32:11,930 --> 00:32:14,740 salmuera es Python biblioteca para hacer eso. 653 00:32:14,740 --> 00:32:19,140 >> Si tiene cualquier tipo de variable que se puede escribir a cabo 654 00:32:19,140 --> 00:32:21,990 en palabras como y caracteres y bytes-- gusta este diccionario, 655 00:32:21,990 --> 00:32:24,230 podríamos escribir, nos podría escribirlo como 656 00:32:24,230 --> 00:32:26,670 como un objeto JSON, que era literalmente estos caracteres. 657 00:32:26,670 --> 00:32:29,420 Y entonces sería muy fácil para un ser humano para abrirlo up-- abren 658 00:32:29,420 --> 00:32:30,889 y leerlo. 659 00:32:30,889 --> 00:32:33,180 Si no lo hiciéramos todo preocuparse por los seres humanos la lectura, 660 00:32:33,180 --> 00:32:38,490 podríamos empaquetar aún más eficiente en formas que más tarde podría ser desempaquetado 661 00:32:38,490 --> 00:32:42,860 o que más tarde podría ser inflado. 662 00:32:42,860 --> 00:32:46,740 Y esto ahorra 80% de la espacio que los objetos podrían 663 00:32:46,740 --> 00:32:49,390 tomar si usted les escribió a cabo longhand. 664 00:32:49,390 --> 00:32:52,384 >> Usted llama pepinillo mucho el mismo manera-- descarga, carga, 665 00:32:52,384 --> 00:32:53,800 y luego a conseguir sus cosas de nuevo. 666 00:32:53,800 --> 00:32:56,880 Así que si usted está escribiendo muy programas Python cortos que 667 00:32:56,880 --> 00:32:59,952 quiere guardar el estado, y luego leer de nuevo más tarde, cosas como esta 668 00:32:59,952 --> 00:33:00,660 son tus amigos. 669 00:33:00,660 --> 00:33:02,640 Que podría muy volcar fácilmente como JSON. 670 00:33:02,640 --> 00:33:04,550 La mayoría de los objetos de Python puede volcar el json 671 00:33:04,550 --> 00:33:11,310 si hay alguna esperanza de que estructuralmente que podían ser representados de ese modo. 672 00:33:11,310 --> 00:33:14,410 >> Estos son sólo la punta del Iceberg en los módulos que son útiles. 673 00:33:14,410 --> 00:33:19,510 Así sys, os, multiprocesamiento, son tipo de caballos de batalla básicos para cosas 674 00:33:19,510 --> 00:33:23,120 tenemos que interactuar con el sistema operativo del sistema de archivos., 675 00:33:23,120 --> 00:33:28,764 como os.isfile, os.isdirectory, os.makefile, estos son tus amigos. 676 00:33:28,764 --> 00:33:30,930 Si quieres interactuar con un determinado tipo de archivo, 677 00:33:30,930 --> 00:33:32,190 json, pepinillo, csv. 678 00:33:32,190 --> 00:33:37,160 Si desea interactuar con la web páginas, el urllib para obtener http 679 00:33:37,160 --> 00:33:41,370 páginas. bs4-- BeautifulSoup-- es un analizador maravilloso para html. 680 00:33:41,370 --> 00:33:47,047 Se ejecuta en un html y usted conseguir este objeto de matriz anidada ahora, 681 00:33:47,047 --> 00:33:49,630 que se puede recorrer más de lookin, con igual sólo en busca de 682 00:33:49,630 --> 00:33:52,380 si, es, en, que es fantástico. 683 00:33:52,380 --> 00:33:55,920 >> Hay un montón de paquetes para running-- 684 00:33:55,920 --> 00:33:57,960 para hacer todo Mathy cosas. 685 00:33:57,960 --> 00:34:01,790 Así que si quieres multiplicar, invertir, transformar matrices, 686 00:34:01,790 --> 00:34:05,690 numpy es utilizado por personas todos el mundo por eso. 687 00:34:05,690 --> 00:34:09,620 scipy es aún más útil herramientas en esa dirección. 688 00:34:09,620 --> 00:34:13,980 aprendizaje automático sklearn--, procesamiento natural del lenguaje, 689 00:34:13,980 --> 00:34:17,880 súper cosas útiles, se pone implementado en Python todo el tiempo. 690 00:34:17,880 --> 00:34:21,469 >> Y de nuevo, toma un poco más en write-- siento, 691 00:34:21,469 --> 00:34:26,199 toma un poco más para correr, pero la razón por la que los ingenieros reales tienden 692 00:34:26,199 --> 00:34:29,900 el uso de Python se debe a que tienden a ser bloqueado en que escribir el código, en lugar 693 00:34:29,900 --> 00:34:32,699 de su equipo que ejecuta el código. 694 00:34:32,699 --> 00:34:35,860 Así que si usted va a escribir una programa, que muchas otras personas 695 00:34:35,860 --> 00:34:37,699 se va a utilizar siempre, como Linux, 696 00:34:37,699 --> 00:34:41,900 podría escribirlo en C. Si usted fuera va a escribir un motor de cálculo, 697 00:34:41,900 --> 00:34:46,124 podría escribir en Python si necesitabas para cambiarlo cada dos meses. 698 00:34:46,124 --> 00:34:48,540 Algunas personas escribirían en C porque son así. 699 00:34:48,540 --> 00:34:51,100 700 00:34:51,100 --> 00:34:54,050 >> Así que hemos visto import sys como una manera de hacer las cosas 701 00:34:54,050 --> 00:34:57,070 de conseguir módulo en su programa. 702 00:34:57,070 --> 00:35:00,370 También puede importar como un apodo, si usted quisiera. 703 00:35:00,370 --> 00:35:03,660 Una vez más multiprocesamiento es un dolor para escriba a cabo cada vez, así como importar mp 704 00:35:03,660 --> 00:35:05,900 y luego cada vez que utilizarlo en el programa, 705 00:35:05,900 --> 00:35:09,732 podrás decir mp.process, o lo que sea. 706 00:35:09,732 --> 00:35:12,670 Si desea importar una sola cosa, 707 00:35:12,670 --> 00:35:19,450 así urllib tiene una cosa llamada petición, por lo que sólo puede importar eso. 708 00:35:19,450 --> 00:35:22,610 Más tarde, no se invoque como urllib.request, pero igual de solicitud 709 00:35:22,610 --> 00:35:24,590 por sí mismo. 710 00:35:24,590 --> 00:35:30,110 >> Y usted puede importar todo de un módulo si desea. 711 00:35:30,110 --> 00:35:34,820 Esto no es de vez en cuando una buena idea-- esto por lo general no es una buena idea, en realidad. 712 00:35:34,820 --> 00:35:39,080 Porque very-- porque si algo en ese módulo tiene un nombre que 713 00:35:39,080 --> 00:35:41,640 querido utilizar en otro lugar en su programa, no se puede. 714 00:35:41,640 --> 00:35:44,127 >> Y no siempre es obvio que ese es el caso. 715 00:35:44,127 --> 00:35:46,460 Con el fin de asegurarse de que lo que estaba haciendo era seguro, 716 00:35:46,460 --> 00:35:47,920 que necesita para abrir el módulo y ver todo 717 00:35:47,920 --> 00:35:50,295 de los nombres que terminan en allí-- todas las funciones, 718 00:35:50,295 --> 00:35:53,010 todas las variables que viven en ese módulo, 719 00:35:53,010 --> 00:35:57,040 porque usted está trayendo todos ellos en su espacio de nombres local. 720 00:35:57,040 --> 00:35:58,680 >> Así que la gente hace esto. 721 00:35:58,680 --> 00:36:01,322 En general se recomienda que no lo hace. 722 00:36:01,322 --> 00:36:03,280 Pero la gente hace esto todo el tiempo porque son 723 00:36:03,280 --> 00:36:05,180 perezosos y no quieren que 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 esta charla sobre los módulos me traen alrededor de una breve charla 727 00:36:13,310 --> 00:36:15,930 sobre cómo diseñar programas en Python. 728 00:36:15,930 --> 00:36:19,860 El primer paso es comprobar si alguien más ya lo ha hecho la cosa, 729 00:36:19,860 --> 00:36:22,160 o hecho el 90% de la cosa. 730 00:36:22,160 --> 00:36:26,010 Lo más probable es que probablemente tienen, y usted debe ir a buscar sus cosas y ejecutar eso. 731 00:36:26,010 --> 00:36:28,900 O escribir una envoltura alrededor de ella para adaptarlo a su propósito. 732 00:36:28,900 --> 00:36:31,250 Es sólo después de que tiene falló que es bastante continuación 733 00:36:31,250 --> 00:36:35,529 seguir y write-- empezar a pensar en cómo le gustaría poner esto juntos. 734 00:36:35,529 --> 00:36:37,320 Hay un montón de cosas por ahí, y eso es 735 00:36:37,320 --> 00:36:39,180 uno de los más útiles cosas sobre Python. 736 00:36:39,180 --> 00:36:40,930 Al igual que el lenguaje es elegante, el idioma 737 00:36:40,930 --> 00:36:43,800 es fácil de usar, sino también porque es tan elegante y fácil de usar, 738 00:36:43,800 --> 00:36:47,420 la gente ha estado usando por un mucho tiempo y hay un montón de cosas 739 00:36:47,420 --> 00:36:52,520 por ahí que pueda aprovechar para su propio uso. 740 00:36:52,520 --> 00:36:58,457 >> Así última regla de Python es, alguien cosa que ya ha escrito probablemente 741 00:36:58,457 --> 00:37:00,290 un módulo para que, alguien ya tiene 742 00:37:00,290 --> 00:37:02,980 probablemente escrito una biblioteca para eso. 743 00:37:02,980 --> 00:37:06,579 Antes de intentar hacer una cosa, mirar para ver si se ha implementado. 744 00:37:06,579 --> 00:37:07,370 No es tan dificil. 745 00:37:07,370 --> 00:37:11,960 Todos los módulos que puse arriba antes, tal vez con una sola excepción, 746 00:37:11,960 --> 00:37:15,220 vienen pre-instalados en todos los instalación de Python estándar. 747 00:37:15,220 --> 00:37:17,769 Y así, con una llamada a importar lo que sea, 748 00:37:17,769 --> 00:37:19,852 tener todos los que la funcionalidad en la punta de tus dedos. 749 00:37:19,852 --> 00:37:24,660 750 00:37:24,660 --> 00:37:28,920 >> A partir de concluir este hablar, hay algunas cosas 751 00:37:28,920 --> 00:37:32,770 que he dejado como cajas negras y una especie de pasado por alto, 752 00:37:32,770 --> 00:37:37,217 y hay unos cuantos blanco mentiras que tengo dijo que por el bien de la honestidad, 753 00:37:37,217 --> 00:37:39,050 Voy al menos punto en aquí, incluso si no lo haré 754 00:37:39,050 --> 00:37:43,980 ir muy profundamente en todos ellos y sus explicaciones técnicas. 755 00:37:43,980 --> 00:37:46,010 >> Muchas de las cosas que yo he llamado la magia 756 00:37:46,010 --> 00:37:48,980 es lo que otros llamarían programación orientada a objetos. 757 00:37:48,980 --> 00:37:52,470 Así que hay un montón de cosas-- por lo que las variables no son muy a menudo 758 00:37:52,470 --> 00:37:56,540 bytes simples sentado en, memoria, pero son muy complicadas 759 00:37:56,540 --> 00:38:01,910 objetos que tienen interna Estado acerca de las funciones y lotes 760 00:38:01,910 --> 00:38:05,570 las variables de ocultos, un montón de funcionalidad oculta, lo que 761 00:38:05,570 --> 00:38:09,480 le permite a su vez en cadenas, que le permite iterar sobre ellos. 762 00:38:09,480 --> 00:38:12,260 Y si usted está writing-- y la razón de que 763 00:38:12,260 --> 00:38:15,710 tener toda esta rica funcionalidad es porque las personas-- 764 00:38:15,710 --> 00:38:17,740 los arquitectos de la language-- han ido 765 00:38:17,740 --> 00:38:22,420 por y para cada norma objeto, puesto en la funcionalidad 766 00:38:22,420 --> 00:38:26,970 decir que esto es lo que es cómo esto va a funcionar 767 00:38:26,970 --> 00:38:28,470 si alguien quiere iterar sobre ella. 768 00:38:28,470 --> 00:38:31,240 >> Así que todo lo que alguien podría posiblemente desee para repetir, 769 00:38:31,240 --> 00:38:34,529 ha escrito en la lógica manual sobre cómo eres 770 00:38:34,529 --> 00:38:36,070 supone que iterar sobre ese objeto. 771 00:38:36,070 --> 00:38:40,274 Todo lo que usted podría desear vertido en una cadena ha escrito la lógica. 772 00:38:40,274 --> 00:38:43,440 Esta es la función que se llama a si desea volcar esto en una cadena. 773 00:38:43,440 --> 00:38:45,273 Es por eso que puede llamar len en las cosas, este 774 00:38:45,273 --> 00:38:49,900 Es por eso que se puede llamar en el, esto es por qué se puede llamar si en el todo 775 00:38:49,900 --> 00:38:53,490 que te gustaría, porque los todos están llevando con ellos, 776 00:38:53,490 --> 00:38:55,380 el know-how técnico para hacer eso. 777 00:38:55,380 --> 00:38:58,170 778 00:38:58,170 --> 00:39:00,432 >> Esto es algo que estoy súper no va a entrar. 779 00:39:00,432 --> 00:39:03,140 Pero para algo en la lista es sutilmente diferente del estilo de C para los bucles, 780 00:39:03,140 --> 00:39:06,160 y usted puede leer todo acerca de eso en internet si te interesa. 781 00:39:06,160 --> 00:39:08,930 Hay un lado oscuro en todo de este, que ya he mencionado, 782 00:39:08,930 --> 00:39:10,359 por lo que hay dos cosas. 783 00:39:10,359 --> 00:39:13,400 La primera es que esta orientado a objetos programación añade un montón de gastos generales 784 00:39:13,400 --> 00:39:16,080 de cosas al azar, por lo que terminan usando mucho más memoria; 785 00:39:16,080 --> 00:39:18,640 que terminan usando un poco más tiempo de lo que sería de otra manera. 786 00:39:18,640 --> 00:39:21,300 El otro-- pero cuanto más insidiosa lado oscuro a esta 787 00:39:21,300 --> 00:39:24,047 Es decir, si las cosas simplemente actúan como usted quiere que 788 00:39:24,047 --> 00:39:27,130 sin tener que pensar súper duro acerca de si esto debería ser un int 789 00:39:27,130 --> 00:39:29,713 o si debe haber una flotador, podría ser que por aquí 790 00:39:29,713 --> 00:39:34,240 usted produce un int, pero aquí usted piensan pero van a always-- siento, 791 00:39:34,240 --> 00:39:36,555 podría ser que aquí usted produce un flotador, 792 00:39:36,555 --> 00:39:39,430 pero cuando se llega a la segunda parte de su programa, que estás pensando, 793 00:39:39,430 --> 00:39:41,150 bueno, pero van a Siempre me pasa un int. 794 00:39:41,150 --> 00:39:43,608 Y si no lo hacen, es posible que encajado en algún lugar, 795 00:39:43,608 --> 00:39:47,600 si intenta usar eso para indexar en una matriz, o lo que sea. 796 00:39:47,600 --> 00:39:51,050 >> Así que uno de lo real cosas útiles sobre C es 797 00:39:51,050 --> 00:39:54,219 te obliga a pensar realmente duro antes de hacer any-- 798 00:39:54,219 --> 00:39:56,510 antes de traer cualquier variable a la existencia, como lo 799 00:39:56,510 --> 00:39:58,764 es el tipo de esta variable. 800 00:39:58,764 --> 00:40:00,680 Y va a tener que tipo para todos los tiempos. 801 00:40:00,680 --> 00:40:02,410 >> Esto no es cierto Python, y de hecho, 802 00:40:02,410 --> 00:40:04,740 can-- si estás solo especie de ir por el oído, 803 00:40:04,740 --> 00:40:07,690 y tomar algunas decisiones una forma en un solo lugar, 804 00:40:07,690 --> 00:40:09,870 y algunas decisiones de un forma en el otro lugar 805 00:40:09,870 --> 00:40:12,960 sin poner detrás de suficiente material las escenas en el otro lugar 806 00:40:12,960 --> 00:40:16,170 para coger las cosas correctamente, puede obtener algunos errores muy extraños. 807 00:40:16,170 --> 00:40:19,200 Y el programa puede seguir funcionando para un tiempo muy largo, porque es 808 00:40:19,200 --> 00:40:23,200 haciendo un montón de trabajo para decir, bueno esto podría operar de esta manera, 809 00:40:23,200 --> 00:40:25,070 así que voy a correr de esa manera. 810 00:40:25,070 --> 00:40:30,300 >> Y de hecho, el hecho de que empuja remitir a través de una gran cantidad de pequeños errores 811 00:40:30,300 --> 00:40:33,260 significa que, a menudo cuando un error es realmente malo 812 00:40:33,260 --> 00:40:38,720 y usted realmente quiere arreglarlo, termina millas distancia-- el programa 813 00:40:38,720 --> 00:40:41,780 termina parando millas de distancia desde cuando tuvo su error. 814 00:40:41,780 --> 00:40:46,590 Y así, una cosa que nos gustaría programas que hacer, sometimes-- una cosa 815 00:40:46,590 --> 00:40:48,910 que nos gustaría programas que hacer cuando estamos depuración 816 00:40:48,910 --> 00:40:54,160 es fallar en voz alta y fallan muy rápidamente cuando algo va mal. 817 00:40:54,160 --> 00:40:55,510 >> Python es muy malo en eso. 818 00:40:55,510 --> 00:40:58,820 Python es muy bueno en no en su defecto y rodando hacia adelante 819 00:40:58,820 --> 00:41:00,320 a través de cosas inesperadas. 820 00:41:00,320 --> 00:41:02,820 Así que esto es útil para cuando estás escribiendo pequeños programas. 821 00:41:02,820 --> 00:41:07,110 Al llegar complicada errores a veces 822 00:41:07,110 --> 00:41:09,300 tarda mucho tiempo para embromar a cabo. 823 00:41:09,300 --> 00:41:12,210 >> Así que hay un lado oscuro en todo de este, al igual que simplemente funciona. 824 00:41:12,210 --> 00:41:13,860 Simplemente funciona como era de esperar que lo haga. 825 00:41:13,860 --> 00:41:18,320 Excepto que cuando no lo hace, usted termina en un lugar completamente diferente 826 00:41:18,320 --> 00:41:21,530 y tratando de averiguar dónde fue lo que salió mal. 827 00:41:21,530 --> 00:41:25,180 >> La recolección de basura por lo es-- una cosa que te darás cuenta 828 00:41:25,180 --> 00:41:28,110 es que ninguna de estas cosas que He traído a existence-- 829 00:41:28,110 --> 00:41:34,114 estas matrices, estos diccionarios, estos objetos, éstos archivos-- nunca se liberaron. 830 00:41:34,114 --> 00:41:36,030 No había llamado a libre en cualquiera de esta charla. 831 00:41:36,030 --> 00:41:40,340 Y eso fue en el lado C, debido a nunca nos metimos en esas cosas. 832 00:41:40,340 --> 00:41:42,220 >> Pero en Python lado, no es un país libre. 833 00:41:42,220 --> 00:41:43,970 Las cosas se ponen automáticamente liberado cuando Python 834 00:41:43,970 --> 00:41:45,386 piensa que usted no está buscando a ellos. 835 00:41:45,386 --> 00:41:49,640 ¡No es realmente bueno liberar cosas que es posible que aún posiblemente estar mirando, 836 00:41:49,640 --> 00:41:54,262 pero esto significa que si usted fuera va a asignar esta gran cosa, 837 00:41:54,262 --> 00:41:55,970 y usted es como, ¡oh Ya he terminado con él ahora, 838 00:41:55,970 --> 00:42:00,360 es difícil decir Python que haya terminado con él ahora. 839 00:42:00,360 --> 00:42:02,986 >> A veces se puede establecer esa variable sea ninguna, 840 00:42:02,986 --> 00:42:05,110 y luego esperar que con el tiempo el recolector de basura 841 00:42:05,110 --> 00:42:06,720 viene a través y limpia hacia fuera. 842 00:42:06,720 --> 00:42:10,177 Pero, de nuevo, no lo hace tener control sobre eso. 843 00:42:10,177 --> 00:42:13,510 Y una de las razones por las que la gente utiliza C para realmente RENDIMIENTO cosas críticas, 844 00:42:13,510 --> 00:42:16,570 Es esta capacidad para realmente saber cuándo se asigna memoria 845 00:42:16,570 --> 00:42:19,369 y cuando es liberado, y tienen una gran cantidad de control sobre diciendo: 846 00:42:19,369 --> 00:42:20,910 Estoy usando no más memoria de lo que necesito. 847 00:42:20,910 --> 00:42:23,632 Lo cual es algo que Python no es tan grande en. 848 00:42:23,632 --> 00:42:25,090 AUDIENCIA: ¿Puedo hacerte una pregunta? 849 00:42:25,090 --> 00:42:29,800 ¿Qué entiende usted por fallar en voz alta? 850 00:42:29,800 --> 00:42:32,070 >> ROSS Rheingans-YOO: Así que si algo va mal 851 00:42:32,070 --> 00:42:34,950 y estás en la depuración de modo, que lo haría muy a menudo 852 00:42:34,950 --> 00:42:38,510 quiere que su programa que le diga dónde exactamente se ha ido mal, 853 00:42:38,510 --> 00:42:42,360 y no sólo en silencio dejar de correr. 854 00:42:42,360 --> 00:42:45,085 Pero será en realidad para imprimir a cabo todo tipo de información sobre 855 00:42:45,085 --> 00:42:46,972 , aquí estaba este. 856 00:42:46,972 --> 00:42:53,957 Esto sucedió Si está imprimiendo un wen-- si se está ejecutando un server-- web 857 00:42:53,957 --> 00:42:55,390 >> AUDIENCIA: [inaudible] 858 00:42:55,390 --> 00:42:59,800 >> ROSS Rheingans-YOO: Sí, si se está ejecutando un servidor web, 859 00:42:59,800 --> 00:43:02,680 a veces es malo si estás siempre descartar errores, 860 00:43:02,680 --> 00:43:04,530 y que usted está diciendo, así que no funcionó. 861 00:43:04,530 --> 00:43:05,300 Voy a parar. 862 00:43:05,300 --> 00:43:07,680 Yo sólo voy a ignorar y seguir adelante. 863 00:43:07,680 --> 00:43:11,260 Porque entonces usted puede conseguir en cientos de estos errores y no los ve. 864 00:43:11,260 --> 00:43:13,910 >> Sin duda, sería útil para propósitos de depuración 865 00:43:13,910 --> 00:43:20,327 si cada vez que su servidor web hizo una error, que tenía registros duraderos de eso. 866 00:43:20,327 --> 00:43:22,910 Tal vez incluso desea que el programa para detener, de manera que esos registros 867 00:43:22,910 --> 00:43:25,471 No se deje enterrado bajo las cosas. 868 00:43:25,471 --> 00:43:26,970 Pero, de nuevo, eso es en el modo de depuración. 869 00:43:26,970 --> 00:43:31,280 >> A menudo, en el modo de producción, la mundo es un poco diferente. 870 00:43:31,280 --> 00:43:36,380 Y en pequeños scripts que estoy corriendo, donde lo que he dicho que hacer 871 00:43:36,380 --> 00:43:40,680 podría ser solamente un poco fuera de lo que me gustaría hacer, 872 00:43:40,680 --> 00:43:44,010 entonces especie de empujar a través de errores es algo que usted puede ser que desee. 873 00:43:44,010 --> 00:43:49,410 Y en esos casos, sin duda Python realmente gana sus aperturas. 874 00:43:49,410 --> 00:43:54,617 >> La última cosa que yo no hablo en esto-- que yo no hablo de 875 00:43:54,617 --> 00:43:57,700 pero puede ser muy exasperante el primero tiempo que tiene uno de estos errores, 876 00:43:57,700 --> 00:44:00,491 y el segundo y tercero y cuarto tiempo que tiene uno de estos errores. 877 00:44:00,491 --> 00:44:03,490 Python, mencioné que utiliza el espacio en blanco 878 00:44:03,490 --> 00:44:06,700 que le diga qué nivel de sangrado y lo que de bloques funcionales que se encuentre, 879 00:44:06,700 --> 00:44:08,840 que trata a las fichas y espacios de manera diferente. 880 00:44:08,840 --> 00:44:12,780 Así que si usted pestaña más de cuatro, y luego la siguiente línea cuenta con cuatro espacios, 881 00:44:12,780 --> 00:44:16,910 incluso si se muestran como la misma cantidad en su editor, 882 00:44:16,910 --> 00:44:20,160 Python no tratarlos de la misma. 883 00:44:20,160 --> 00:44:23,610 >> De hecho, Python trata pestañas y espacios como el aceite y el agua. 884 00:44:23,610 --> 00:44:25,050 Ellos son sólo cosas diferentes. 885 00:44:25,050 --> 00:44:27,264 No hay particular, longitud que es una pestaña, 886 00:44:27,264 --> 00:44:30,180 así que no es como una pestaña es igual a 8 espacios, y por lo que obtendrían alrededor de ella 887 00:44:30,180 --> 00:44:30,860 de esa manera. 888 00:44:30,860 --> 00:44:34,110 Al igual que, cuando se dice, lo que nivel de espacio en blanco que estoy en, 889 00:44:34,110 --> 00:44:37,240 en realidad está buscando una patrón de espacios y tabuladores. 890 00:44:37,240 --> 00:44:43,050 Y por eso, la mejor manera de lidiar con este es utilizar siempre espacios todo el tiempo. 891 00:44:43,050 --> 00:44:47,510 >> Y de hecho, en el Cloud9 IDE y el CS50 IDE, 892 00:44:47,510 --> 00:44:50,610 sus inserciones clave Tab cuatro espacios en lugar 893 00:44:50,610 --> 00:44:53,800 de una ficha, que es super útil. 894 00:44:53,800 --> 00:44:57,074 Aunque de nuevo, si usted escribió un Python programa con pestañas que serían muy bien, 895 00:44:57,074 --> 00:44:58,990 es sólo si alguien entró y trató de añadir 896 00:44:58,990 --> 00:45:02,655 una sola línea a su programa que tenía cuatro espacios para cada ficha, 897 00:45:02,655 --> 00:45:03,280 se rompería. 898 00:45:03,280 --> 00:45:07,800 Y sería romper de una manera que realmente no es visible. 899 00:45:07,800 --> 00:45:12,390 Aunque el error real mensaje que se lanza 900 00:45:12,390 --> 00:45:15,610 tiene que ver con la nueva sangría no se espera aquí, 901 00:45:15,610 --> 00:45:18,700 o- si se está hablando de guiones y parece que está mal, 902 00:45:18,700 --> 00:45:22,090 es probablemente porque hay un problema tabuladores espacio. 903 00:45:22,090 --> 00:45:24,154 Todavía están enfureciendo depurar. 904 00:45:24,154 --> 00:45:26,070 El mayor en toda esta charla, que no lo hice 905 00:45:26,070 --> 00:45:29,740 llegar a porque es realmente un complicado tema sutil, 906 00:45:29,740 --> 00:45:34,760 y no era necesario hacer ninguna de las cosas que hemos hecho hasta ahora, 907 00:45:34,760 --> 00:45:37,140 son un concepto llamado tuplas. 908 00:45:37,140 --> 00:45:41,280 Ellos están ahí al igual que el matrices que no se puede modificar. 909 00:45:41,280 --> 00:45:44,700 Ellos se utilizan en todo el lugar porque son útiles para muchas cosas 910 00:45:44,700 --> 00:45:46,300 que las matrices no son útiles para. 911 00:45:46,300 --> 00:45:49,890 >> Pero si desea hacer una matriz, y luego prometer el intérprete que 912 00:45:49,890 --> 00:45:53,140 Nunca se va a querer modificar esa cosa-- de hecho, si desea modificar, 913 00:45:53,140 --> 00:45:56,800 que va a hacer una nueva con el nuevo valores en it-- esos son tuplas. 914 00:45:56,800 --> 00:45:58,800 En lugar de producir con corchetes, 915 00:45:58,800 --> 00:46:00,341 les produces con paréntesis. 916 00:46:00,341 --> 00:46:05,074 ¿Por qué usted utilizaría estas cosas, es un poco de una pregunta. . 917 00:46:05,074 --> 00:46:06,990 Lo único que voy a decir al respecto es que 918 00:46:06,990 --> 00:46:10,680 puede utilizar como tuplas índices de diccionarios. 919 00:46:10,680 --> 00:46:15,010 No se puede utilizar matrices como índices de diccionarios. 920 00:46:15,010 --> 00:46:18,970 ¿Y por qué es, de nuevo, técnica y No voy a correr en ella. 921 00:46:18,970 --> 00:46:23,140 >> El conjunto de procesadores que no he tocado en esta charla es pset6. 922 00:46:23,140 --> 00:46:25,837 Así que aquí está cómo usted 'd aplicar A-- aquí está 923 00:46:25,837 --> 00:46:28,140 cómo le gustaría implementar pset6 en Python. 924 00:46:28,140 --> 00:46:32,680 Teniendo en cuenta la Python ciclo de diseño, lo primero 925 00:46:32,680 --> 00:46:34,760 que haces cuando estás escribir programas es cheque 926 00:46:34,760 --> 00:46:38,030 para ver si alguien lo ha hecho ya. 927 00:46:38,030 --> 00:46:42,152 >> De hecho, si quieres a serve-- Apache 50 928 00:46:42,152 --> 00:46:44,110 hace aproximadamente esto, excepto que no viene 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 hace, y el Python servidor http sencilla también lo hace. 931 00:46:50,490 --> 00:46:54,717 Si alguna vez en una máquina Linux, o el exterior Cloud9 IDE de CS50 932 00:46:54,717 --> 00:46:57,550 y desea servir a esta corriente directorio a un puerto en particular, 933 00:46:57,550 --> 00:47:04,610 python-m SimpleHTTPServer puerto sirve eso. 934 00:47:04,610 --> 00:47:07,190 También puede importar el servidor http sencilla 935 00:47:07,190 --> 00:47:11,240 y que tiene una gran cantidad de funcionalidad si desea personalizar, o cambiarlo, 936 00:47:11,240 --> 00:47:15,860 o se ejecute it-- aprovecharla al ejecutar sus propios servicios de servidor. 937 00:47:15,860 --> 00:47:18,032 >> Así que eso es Python en pocas palabras. 938 00:47:18,032 --> 00:47:20,280 Y esto ha sido CS50. 939 00:47:20,280 --> 00:47:21,980 Gracias. 940 00:47:21,980 --> 00:47:23,468