ROSS Rheingans-YOO: Hola, soy Ross.
Y este es un seminario CS50.
Que le llevará desde la programación en C a la programación en Python.
>> Python es un lenguaje de script.
Es en gran medida como C en la sintaxis, aunque algunos
de los detalles técnicos de cómo es ejecutado que la sintaxis
son ligeramente diferentes.
Es menos potente que C en algunos aspectos.
Es menos expresiva de el lugar exacto en el equipo
memoria se expuso, la forma en que se expuso,
cuando se pone la libertad, y ese tipo de cosas.
>> Es más útil que C en algunos aspectos, porque es más fácil de programar en.
El lenguaje es, en cierta gente, más intuitivo.
Y en realidad, el objetivo es que que sea más rápido para programar
y potencialmente más lento para ejecutar.
>> Ahora bien, si se piensa en la cantidad de tiempo
que gastó en su último escritura fijado problema
su código en contra de la cantidad de tiempo que pasa
en su último problema establecer la ejecución de su código,
era de imaginar que el idioma que era dos veces más rápido de escribir,
y dos veces más lento para ejecutar, podría ser una mejora sobre C en algunos aspectos.
Ciertamente, cuando usted está tratando de escribir pequeños programas que se pueden hacer pequeñas cosas,
Python es un lenguaje útil de elección.
>> Y al final de esta seminario, espero que
ser capaz de hacer la elección en futuros proyectos
sobre el cual el lenguaje es correcto a utilizar, no la idea
que una lengua es más corregir todo el tiempo.
Un par de cosas sobre lo que el seminario es.
Este seminario no pretende enseñará Python desde cero.
Python es muy similar a C, y yo estoy asumiendo
que eres un estudiante CS50, o alguien con una familiaridad similar con C.
>> Si eres estudiante CS50 alrededor problema fijó 6,
Así que ha ver una gran cantidad de cosas en C, te voy a dar
las principales diferencias, y algunas de las cosas
que hacen Python diferente y especial y útil,
pero yo no voy a ir a por lo que es un lenguaje de programación es
y cómo escribir programas.
Sin embargo, este seminario enseñará a escribir un programas Python
si usted es uno de esos pocos grupos.
Una vez más vamos a ver cómo usted aplicar psets--
que debe ser 1-6 Python-- y proporcionar punteros
a la documentación oficial Para futura referencia.
La otra cosa que es importante acerca de cómo se asigna esta charla,
este video será en línea, cortesía de CS50,
por lo que no debe sentirse como usted necesita tomar notas.
Siempre se puede volver atrás y mirar en él más adelante como referencia.
Adicionalmente las diapositivas están disponibles en este momento
en este sitio, que debe tome usted hace un doc Google.
Es una versión ligeramente abreviada de lo que estoy mostrando en la pantalla.
>> Una advertencia cuidado antes saltamos adentro, Python 3
es una lengua diferente de Python 2.
Se parecen mucho la misma; hay diferencias técnicas muy leves
que hará que los programas escrito en Python 2
de no ser capaz de ser ejecutado en el entorno Python 3.
>> El aparato viene con CS50 Python, por defecto que utiliza Python 2.
Usted puede comprobar esto escribir en la línea de comandos
--version pitón, que debería de salida 2.7.6 en el dispositivo actual.
Trate de Python 3, que hace trabajar en el aparato,
si por defecto de Python a 2.X.Y, ya sea en el aparato o en sus propias máquinas.
Debe reemplazar Python 3 en cualquier momento en esta charla que escribo Python.
Si su máquina es correr 2 por defecto, el tipo
Python 3 con el fin de ser capaz de realidad seguir adelante y ejecutar estas cosas.
>> Además, voy a señalar que a los recursos oficiales ahora.
docs.python.org/3--~~V cuidado que eso es un 3 y no un 2--
tiene referencias útiles.
Tutorial le llevará a través gran parte de las mismas cosas
que estoy haciendo ahora, excepto en forma de texto.
Referencia es útil como una referencia para la lengua,
y la Biblioteca Estándar da que algunas de las extensiones
con la funcionalidad adicional.
>> Así, un primer programa en Python.
A la izquierda tenemos estándar de C, a la derecha, tenemos Python.
Es posible que haya reconocido este problema, que es
uno de los primero problema conjuntos en CS50, y éstas
resolverlo usando la misma solución.
Ahora, la razón por la que estamos mirando a éstos al lado del otro
es tan podemos mirar diferencias sintácticas.
Uno de los elefantes en la habitación que usted puede haber notado la derecha
De buenas a primeras, es que Python no tiene envoltura función principal alrededor del código.
Así que en C, se escribe un montón de archivos, los vinculan entre sí,
y el programa comienza a ejecutarse en esta cosa llamada int main.
>> En Python, se escribe una que presentar, ejecutar el archivo,
el programa comienza a ejecutarse en la parte superior del archivo.
Así que va a comenzar en la parte superior del archivo
ir hacia abajo hasta que encuentre otra cosa.
Si encuentra una definición de función, que en realidad no ejecutar ese código,
será simplemente definir la función.
Pero aquí, cuando la primera programa es n es igual a 10,
la primera cosa que este programa va a hacer es tomar este valor de 10
y lo puso en una variable llamada n.
>> Hablando de esa línea, uno de otras cosas-- sorry-- este
significa que los programas en C, que voy a escribir ellos,
podrás hacerlos, lo que hará invocar algunos comandos clang,
y luego se encontrará con un resultante ejecutable.
Programas en Python, se corre el texto file-- este mario.py podría
ser este archivo que acabo mostré usted-- podrás ejecutar ese archivo
y se le ejecuta, y el contenido de la misma
será ejecutado por el intérprete de Python.
Usted puede hacer esto en su IDE.
>> Así que si tengo un archivo Hola, que simplemente tiene este contenido.
Esto es en realidad Python 2, no Python 3, por lo que no lo hacen
preocuparse por la sintaxis por ahora.
Pero voy a correr Python, en hello.py, y se ejecuta.
>> Otra forma en que puedo usar Python que No voy a tratar con mucho en esta charla,
es si sólo escribo Python, que me cae en un entorno donde
Puedo alimentarlo línea de Python por línea.
Así que aquí, si escribo en espacio print 'hola, mundo'.
Escriba entrar.
Me escupirá que una copia de los resultados esa línea individuo inmediatamente.
>> Esto es podría ser útil.
En esta charla que voy a hacer las cosas en las diapositivas.
Y por lo que será capaz de seguir a lo largo de cualquiera aquí, o escribiendo
archivos reales y luego ejecutarlos.
>> Pero, volviendo a esta código, otra cosa
que podría tener noticed-- bueno, hay
dos cosas que usted puede ser cuenta acerca de estos bloques.
La primera, bastante más mundana, es que Python no tiene punto y coma final.
>> Puntos y comas son opcionales en todas partes e inofensivo en todas partes.
Puedes añadirlas.
Podría hacer que las personas que escriben Python para una risita de estar contigo
detrás de la espalda, porque no son necesarias.
A menudo son un signo de que se celebra sobre de C. Los diseñadores de la lengua
siente que es más claro de esta manera y que no es necesario declarar
cada vez que termina una línea.
>> Otra cosa extraña acerca de este n es que no tiene un tipo de adjunto.
Una de las piezas mágicas de Python-- y yo voy a llamarlo magia,
pero hay muy razones técnicas por las que
works-- una de las piezas mágicas de Python
es que las variables pueden expandir o reducir el tamaño para contener cualquier dato
tipos que quieren que lo hagan.
>> Así que esto es un 10.
Si más adelante en asigné a este n 0.5, se necesitaría que 0,5.
No importa que sea un int aquí y flotar allí, cualquier cosa que utiliza este n
será, más o menos, ser capaz de traquetea a lo largo de si se pone uno de esos.
A menos que haya alguna muy real por lo que no puede utilizar los datos
escriba que n tiene actualmente, momento en el cual se obtendrá
encajado y lanzar un error, y ese tipo de cosas.
>> Pero aquí, Python en realidad no importa lo que
es que me voy a quedar en este condena, como, usted quiere esta cosa?
Esta cosa en eso?
Sí, es una especie de cosa.
Yo me quedo en el final.
Va a ser un problema más adelante, si alguien que quiere usar ese fin
no puede manejarlo.
Este es uno de los principales diferencias entre Python y C
que hace que sea fácil de escribir grandes programas en C
y hace que sea más fácil escribir programa de Python muy pequeño.
>> La sintaxis para el no es muy diferente en lo que hace.
Es ligeramente diferente en cómo se expresa.
Así que este es un muy, lo que se llama Pythonic, forma de escribirlo.
para la fila en el rango (n), este es el rango de números del 0 al n,
incluido en la parte inferior y exclusivo en la parte superior.
Así que es de 0 a n-1, que es exactamente lo que el código C está haciendo,
excepto que es mucho más fácil mirar tal vez.
>> El bloque correspondiente es No desencadenada por los apoyos,
en cambio se puso en marcha por esta hendidura.
Así que todas estas líneas son cuatro espacios más a la derecha,
o le gusta de una anchura elefante.
Y esos son los que son va a ser ejecutado en esto para.
Si me equivoco la muesca en esto y yo
empujar esa impresión a la indentación original,
que la letra impresa saldrá del bucle for.
A diferencia de C, donde aquí que en realidad tenga que mover ese corsé cerrado alrededor.
>> Esto significa que usted no recibe errores que saltan a la vista, ya que
poner una llave en el lugar equivocado.
Lo que significa es que usted obtenga los errores que saltan a la vista, ya que
sangría un mal línea.
Así que tiene hendiduras super cuidado.
Esperemos que estabas siendo súper cuidado con su sangría de todos modos,
y así que esto no es que mucho más de una carga.
>> Sin embargo, una regla básica para Python, y vamos a tener un par de estos
que vamos a ir a través a través de el curso de la charla,
es tratar de sintaxis naturales antes de buscar cualquier cosa para arriba.
Así que esta sintaxis, por este número en el rango,
es muy distintivo en términos de estilo.
Un montón de cosas en Python veremos tomar este formulario.
>> Y por lo que si usted viene para arriba con un nuevo objeto que
cree que debería ser capaz de iterar sobre esto, en este formato,
Resulta que, probablemente, soporta ese formato.
No vamos a ir muy profundamente en las razones técnicas por las que es cierto.
>> Pero es una intuición útil tener cuando te estás acercando programas Python,
que esto sólo va a trabajar.
Intentalo.
Arrancar la línea de comandos Intérprete, ver si funciona,
seguir adelante con las cosas, antes de incluso necesidad de abrir Google y decir:
¿cuál es la sintaxis para esta cosa en particular?
Un montón de Python que podría descubrir con sólo intentarlo.
>> Este caso es aún más similares para C entonces los fors son.
Tenga en cuenta que no hay paréntesis.
Los paréntesis son, de nuevo, inofensivo, pero innecesario.
Hay dos puntos al final al igual que la de los bucles,
y de nuevo, los bloques son relativos sangría en lugar de estallar por llaves.
Esta persona se encuentra en el original nivel de sangría,
y su bloque correspondiente sangría de nuevo.
Los trabajos exactamente como lo hacen en C.
>> Esto es en realidad muy similar.
Una vez más, la impresión pierde un carácter fuera de printf Se pasa algunas cadenas.
Resulta cadenas o bien puede ser delimitado
por comillas simples o dobles.
No hay ninguna diferencia, excepto que dentro de
de comillas simples que usted puede utilizar comillas dobles con abandonar,
en lugar de tener que escapar de todos ellos.
Y dentro de comillas dobles, que puede usar comillas simples con abandonar
sin tener que escapar de ellos.
Si usted quisiera mezclar ellos, que sin duda puede
mirar hacia arriba en línea cómo hacer eso.
>> Se dará cuenta de que aquí, He pasado en extremo = esta cosa.
Este es un ejemplo de un opcional argumento, que es una de esas cosas
que Python soporta que hace que sea muy útil.
Así impresión en realidad tiene una gran cantidad de argumentos, que son por lo general
establece en su valor predeterminado valor, pero aquí tengo
decidió anular el llamado final.
La razón por la que tengo que anularlo con una cadena vacía
es que la impresión en Python, por De forma predeterminada, imprime una nueva línea
después de lo que le dijiste a ella también.
>> Así que este hash es en realidad va a imprimir un hash en una nueva línea.
Y si yo no quiero hash para imprimir una nueva línea después, entonces tengo que decir
no imprima una.
Pero, aún así, la última cosa que este programa no se encuentra que uno tiene es
una incluye en la parte superior.
Imprimir se cuece en Python, así que básicamente que no hay cabecera o módulo
que necesita incluir, aunque si quería
para incluir otras cosas en una secuencia de comandos de Python,
Yo lo haría en un format-- muy similar las palabras son sólo un poco diferente.
>> Mencioné que no es necesario un principal aquí,
porque el Python empieza ejecutar en la parte superior.
Si quería envolver esto en una función, I
lo haría como esto-- I diría def nombre de la función,
argumentos podrían ir aquí y vamos a ver algunos de los que más tarde, dos puntos,
y luego de nuevo, esta toda bloque de estallar
es lo que es la operativa bloquear para esa función.
Así que esta es la definición de la función.
Y hay una declaración, luego hacia abajo aquí, puedo llamar a la función.
Y de nuevo, el programa intérprete, comenzando en la parte superior,
verá esta es la definición.
No va a ejecutar este hasta que llegar hasta aquí, y entonces es como, ¡oh
Ahora que has llamado, me Supongo que debería ejecutarlo.
>> Una cosa que es muy común para ver en los archivos de Python,
especialmente los archivos de Python que se lanzan al público
y desarrollado por-- y desarrollado y mantenido, es algo de este formulario.
Esto se debe a que basically-- Python, se empieza en la parte superior
y luego se ejecuta hasta el fondo, I si sólo tenía Mario llamado aquí,
entonces cualquier momento Incluí este archivo en otro archivo, porque quería utilizar
es función de Mario, que lo haría otro archivo también tienen este llamado a Mario en ella.
Y cuando me encontré con ese archivo, sería llamar a Mario.
>> Así que es posible que sólo quiere ejecutar este si he hecho
ejecutado este archivo en particular.
Y para que pueda terminar con esto en un Idiom como este, donde digo,
si el nombre de esta ejecución medio ambiente es el principal,
entonces quiero hacer estas cosas.
De lo contrario, alguien más puede servicio- son mi function--
mi archivo, y sólo para obtener el acceso a estas funciones
sin tener que ejecutar las cosas que quiero ejecutar en este archivo.
Esto es, de nuevo, opcional pero muy común.
>> Estas cosas son entirely-- son exactamente de la misma entre C y Python,
ciertamente, en 3.
Creo que en 2, el operador de división a veces te da la espalda cuando flota
que operó en enteros, y, o bien querías eso o no lo hiciste.
Pero más, menos, y los tiempos trabajar exactamente como era de esperar,
excepto durante poco más tipos.
Así que usted puede multiplicar carrozas por enteros, y ese tipo de cosas.
>> conjunto funciona exactamente igual.
Se pueden utilizar dos signos igual.
inequals-- mayor que, menor que, este tipo de cosas--
tienen los significados que usted está familiarizado con ellos.
>> Donde C utiliza estos operadores, Python utiliza un poco más Inglés
Los legibles.
Así que en lugar de dos, símbolos de unión, que literalmente, escriba la palabra "y", "o"
o no."
Al igual que en su si-- en su sentencias condicionales,
vimos anteriormente que esta sintaxis en C corresponde a esta sintaxis en Python.
Y no, no muy diferente allí, excepto por un poco
de puntuacion alrededor de los lados.
Una vez más, donde C haría otra cosa si, Python usa elif,
pero estos son en su mayoría cambios en el nivel superficial.
>> Iteración como éste es a menudo escrito en este idioma en Python.
Usted puede fabricar este tipo de cosa con un bucle while en el exterior
si quería, pero desde luego no tener que hacerlo.
Y de nuevo, si quería la imprimir elementos de un array
es posible hacerlo de esta manera.
Una de las cosas divertidas sobre Python, sin embargo,
es que no es necesario utilizar este paradigma,
y se puede utilizar una ligeramente más elegante una.
Usted dice una de ary.
>> Así que en lugar de ir aquí y en ejecución en los índices,
y luego sacando elementos individuales,
usted le dice al de al realidad sólo atropellar a los propios elementos.
Y entonces lo que estás haciendo en el interior se puede operar directamente
sobre los elementos, lo que es bastante divertido.
Y vamos a ver-- usaremos ese idioma y otra vez
mientras caminamos a través de código.
>> Esto es, de nuevo, un ejemplo de algo que voy a
llamar Python magia, aunque hay razones muy técnicos por qué funciona.
Y hay cosas técnicas que tenga que ser verdad acerca matriz en orden
Para que esto funcione detrás de las escenas.
La cosa es que la mayoría de los tipos que era de esperar que esto funcione
haber tenido esta implementado para que en el lenguaje incorporado.
>> Otra cosa que sería bueno si esto funcionó en todos los idiomas,
pero hay algunas razones por las que no se puede, imprimir esta cadena veces este número.
Resulta que en Python, esto hace exactamente lo que le gustaría, que es sólo diversión,
y significa que podemos realidad reducir este programa, de nuevo mario.c.
En lugar de la iteración mucho, podemos a decir, quiero un poco número de espacios,
Quiero que el número de hashes, y algunos hashes al final.
Y de nuevo, usamos este formato.
>> Aquí, estamos pasando una variable de esta manera.
Una vez más, no necesitamos decir qué tipo de variables es,
y la única vez que vamos a obtener errores es en tiempo de ejecución.
Cuando alguien intenta pasar algo en,
que va a entrar en la función de bien.
Si cuña aquí porque este no es el Lo que usted puede crear rangos más,
Voy a buscar un error de ejecución allí, y voy a tener que depurar esa manera.
Pero, mientras tanto, no tengo que ser muy cuidadoso con lo
se pasa en, tanto tiempo como en el actual ejecución todo funciona muy limpiamente.
>> Incluso podría hacer este un poco más limpia
utilizando una función incorporada en particular, en cadenas, que se Derecha Justificar.
Esto es sólo una función útil ahí la biblioteca.
Está en la documentación si vas y lo busca.
Y yo digo, así que voy a tener esta cadena, un número de hashes,
y me gustaría justificar derecho pad it-- hacia fuera con espacios sea esta longitud.
>> Una vez más, esto es en el documentación, que trae nosotros--
Voy a realmente hacer clic a través these-- lo que nos lleva a nuestra segunda regla
para la biblioteca estándar Python-- métodos de función son tus amigos.
Y es a menudo vale la pena para ir en busca de me pregunto
si hay una cosa que simplemente lo hace.
Hay probablemente lo es.
Si desea pad fuera una cadena, si lo
Aprovecho la espalda medio de una cadena, si lo
gustaría buscar a través de una cadena, si desea romper un par de cosas
junto con una cadena con comas entre ellos,
hay biblioteca estándar funciones para hacer esto.
>> Y hace que su vida más fácil si se utilizan
en lugar de despliegue todo por su cuenta
en cinco líneas de código aquí, cinco líneas de código aquí.
Eso realmente comienza a las sumar a tiempo real.
>> Una de las cosas interesantes acerca de cómo esto se llama.
Se dará cuenta de que hay una cosa de puntos.
Tengo algún objeto a la izquierda, y luego llamé a un punto de una función.
Este es uno de los paradigmas que Python utiliza para la fijación de los métodos a los objetos.
Vamos a hablar de lo que esto es muy brevemente al final,
pero sabemos que los dos podemos operar sobre cosas mediante la adopción de ese punto lo que dice
lo que sea, o llamando al una función que toma
ese objeto y algunos otros argumentos.
>> Así que estas son las dos formas en que se hacen las cosas en Python.
Y si un particular, funcionalidad se implementa
en este estilo o este estilo es algo que
debe mirar hacia arriba hasta que obtenga un bloqueo de los cuales uno es probable que caiga en.
Hay una más o menos cohesivo filosofía detrás de Python
que absorbe la mayoría escribiendo mucho en él.
En algún momento, que uno de estos algo va a ser implementado como
se vuelve natural.
Por ahora, es sólo algo a aprender como a determinar
cada cosa individual.
>> Así biblioteca estándar funciones son sus amigos,
y que permiten escribir cosas que asumir este espacio muy breve,
muy elegantemente.
Y esto es en realidad probablemente más legibles, yo diría, que el programa de C
Por ahí.
Por no mencionar el hecho de que es tan corta puede caber todo un elefante
en el espacio que hemos ahorrado.
>> Otra cosa, esta es una implementación de mario eso es punto C, que creo que
es el menor lo puede conseguir.
No tiene el get int, pero que los códigos duros el valor de 10
de la misma manera que éste hace.
Resulta que este uno de los relojes en 84 caracteres, mientras que Python es 64.
Y esto es infinitamente más legible que esta basura aquí.
Así Python es más eficiente en el espacio.
Es ligeramente menos eficiente en el tiempo, pero no por mucho.
>> Las listas son una cosa importante en Python.
No los hemos visto, pero operar al igual que las matrices pueden hacer en C.
Así que aquí, puede declararlos, usted puede pasarlos en una cosa.
Ahora cuadrados sostiene un conjunto de estas cosas.
Una vez más, no hemos declarado tipo, pero si alguna vez tratamos de usarlo,
cualquier cosa que usted esperaba trabajar en una matriz de enteros
va a trabajar en una matriz de enteros.
>> Esto es una cosa que a pesar de todo no se puede
hacerlo en C, ya que el la memoria es tan manos,
pero es muy fácil de hacer en Python.
Si quiero que mi matriz a ser más grande, que pueda añadir un elemento a la misma y que está bien.
>> ¿Qué está pasando detrás de las escenas?
El intérprete irá y conseguir un poco de memoria,
y tal vez obtendrá un poco de memoria extra,
por lo que no, así que no tengo a realloc cada vez.
Pero, ¿cuánto tienen más memoria no lo necesitan?
Esto no son decisiones que usted tiene que hacer,
estas son decisiones que los intérprete se va a hacer.
>> Aquí vemos gama posible tomar dos argumentos,
pero aún así va a ser incluido de la parte superior así que agregamos 1 existe.
Esta es una expresión idiomática, que es un aún más forma inteligente de escribir cosas como esta.
Se llama lista por comprensión, y aquí lo que estamos diciendo
es que me gustaría poner en I cuadrado para cada valor de i en este rango.
Esta cosa de la derecha podría ser otro matriz, y esta cosa de la izquierda
al ser cualquier función en particular que llevaría en i como variable
y darme a cabo algún resultado.
>> Lo que voy a hacer es, Voy a construir
una matriz que es todas estas cosas para cada valor en este rango.
Y esto es super elegante, súper corto, y es muy claro lo que significa.
Esta es una de las cosas-- esto es de nuevo,
se de-- muy emblemático de la razones que la gente como Python.
Si te gusta la programación así, entonces Python
es un lenguaje que le gustaría aprender.
>> Y de nuevo, hay técnica razones por las que esto funcione.
Pero en lo que a nosotros respecta, que más o menos no nos importa.
>> Así que si usted desea imprimir listas, algunos de los mismos modismos son útiles.
Para i en este rango, podríamos índice a través de todas las cosas
y luego imprimirlos todos.
Y verás Len aquí.
Si alguna vez has querido conseguir la longitud de la matriz, que es
muy fácil en Python, es muy difícil en C.
Esto imprimir exactamente lo que se espera que lo haga.
Podríamos también, como hemos visto antes, iterar sobre los elementos de matriz
directamente, y luego simplemente hablar ellos, en lugar de tener el índice
de nuevo en la matriz cada vez.
>> Y esto es una cosa que usted puede hacer.
Así que en C, si pides algo así, la impresión diría,
eso es una matriz de enteros.
Eso no es definitivamente un cadena, no puedo imprimir.
Python más o menos no le importa.
Es como, ¿hay alguna manera de que yo podría convertir esto en una cadena?
Sí, lo haré.
Y así que voy a imprimir eso.
Esto significa que usted puede hacer cosas como-- éstos
son la mayoría de las partes duras del juego de quince, por escrito
muy brevemente en Python.
>> Verás que hay un poco de-- aquí
He echo un entero a una cadena, y tengo que hacerlo manualmente.
Y yo voy a añadir a otra cadena,
o de otra manera Python se confunde.
Pero si cuando estás añadir una cadena a un entero,
Estoy supongo que para conseguir una entero espalda o una cadena de vuelta?
Pero, de nuevo, si sólo llamar str en una cosa,
y podría en cualquier posible mundo se convierte en una cadena,
probablemente será convertido en una cadena.
>> Aquí, vemos el uso de lista anidada comprensión
a la izquierda, algunos de indexación, que es exactamente como era de estar acostumbrado a ella,
y algunos la impresión de las cosas.
Una vez más, hemos definido algunos funciones y que llamaremos abajo
en principal cuando conseguimos realmente el archivo.
retorno funciona exactamente como te gustaría esperar de trabajar con C. Buscar,
podemos configurar cosas como esto-- aquí está la lista de la comprensión
hay una asignación a una variable, y que en realidad podemos hacer que sea aún más fácil.
No necesitamos escribir la búsqueda, ya incorporada a la lengua
es si esto es en esta matriz.
Devuelve verdadero, de lo return false.
Así que esa es la totalidad del hallazgo.
>> La totalidad de especie implica llamar especie,
de que éstos existen implementaciones de esta integrada en ciertas librerías C.
Si desea este especie de revés, que
puede anular esta opción argumento a la inversa con una verdadera.
Y si desea ordenar más cuerdas, que se construye en también.
>> Así que esto no es para decir que son cosas que usted necesita para hacer todos los días,
pero la idea es que este Es la filosofía de Python,
que todas estas cosas que había especie de querer hacer están incorporados.
Y la mayoría de las funciones estándar, así que tipo, longitud, lo que sea,
apoyar insumo más lógicamente sensible.
Usted llamar Len en una serie de la misma forma de llamar a Len en una cuerda.
Usted multiply-- ordenar cadenas de la misma manera a resolver matrices.
>> La mayoría de las funciones estándar que las personas construyen,
y la mayor parte de terceros BIBLIOTECAS personas
construir, porque están emulando el diseño de la biblioteca estándar,
Se puede llamar a todo lo que eres al igual que, ¿por qué no esto sólo funciona,
en C. Más o menos, que funcionará en Python
porque la gente trabaja detrás de la figura qué cosa es y luego operar
adecuadamente en él.
Así que de nuevo, formación técnica, pero hace nuestra vida más fácil como programadores.
>> 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,
y por lo que hay recursos en línea, pero en pocas palabras,
usted llama abierta en un archivo nombrar con un tipo particular.
Así que eso es leer, leer y escribir, escribir o anexar.
Usted lee un cierto número de personajes y que se imprimen los,
obtendrá Hola!
Es decir, al igual que este archivo tenía Hola!
En ella, llame a leer, y lo que se obtiene de vuelta
es una cadena que tiene toda del resto de la matriz,
o la totalidad del resto del archivo.
Si llama a leer de nuevo, estás en el final del archivo,
y así no obtiene cualquier cosa y por lo que cierra.
De nuevo, esto es .close en lugar de cerrar el archivo, ya que sería en C.
Esto es más o menos porque f es una cosa, y que le gustaría para f para cerrar.
Pero archivo básico de E / S no es particularmente complicado.
Una vez más, si desea abrir un archivo, si desea leer una línea en particular,
usted puede salir de especial line-- hay muebles empotrados para eso.
Si desea escribir una cosa, usted puede escribir esto.
Si desea escribir individuo picaduras, puede escribir esos.
Y si desea repetir sobre las líneas de un archivo
de forma individual, como lo hicimos en un pedazo de Hace unas semanas, se puede hacer eso a.
Una vez más, la mayoría de los objetos que había gustaría ser capaz de iterar sobre
apoyo iterar sobre ellos.
En pitones, un archivo es tal vez una cosa que Me gustaría iterar sobre línea por línea.
Si se trataba de un diccionario de las palabras y yo era
tratando de conseguir los individuo palabras que salieron, pues, dentro de este ciclo,
la línea que va a ser cada palabra a su vez, y esto
va a ser ejecutado por cada línea en el archivo hasta el final del archivo.
Y de nuevo, si Imprimí cada línea, las líneas vienen con nuevas líneas,
así que estoy estableciendo el final respaldar a una cosa como esta.
Entonces me gustaría conseguir el contenido de mi archivo.
>> La segunda cosa que opera en algunos aspectos como las listas, y en algunos aspectos
como algo sustancialmente mas poderoso,
son los diccionarios, que son realmente fresco de usar, pero son básicamente de hash
mesas disfrazados.
Puede crear uno usando exactamente dos personajes, que es impresionante
si se trató de implementar el tabla hash para el conjunto de problemas,
usted sabe tanto dolor que puede ser.
Pero la gente ha hecho , y lo ha hecho tan bien,
que usted no tiene que preocuparse de más.
>> A continuación, puede insertar cosas individuales.
Tables-- Hash o diccionarios hacer no particularmente
importa lo que usted está almacenando en ellos.
Así que si algunas entradas son números, y algunas entradas están listas,
si algunas entradas son otros diccionarios, y algunas entradas son cadenas,
Python no hace mucho cuidado.
>> Una vez más, si vas en él esperando una cadena y lo que recibe
es una matriz, ese es su problema.
Y tal vez es culpa de quien pensó que estaba poniendo las cosas
en el diccionario, tal vez eso era usted.
Si eso era alguien otra cosa, es de esperar que eran
buen comportamiento en lo que estaba pasando en el diccionario
y no dejar ninguna trampas para que usted se cae en.
>> Pero las funciones estándar devolverte las cosas de buen comportamiento.
Eso dicen esto devuelve copias de un diccionario de cadenas,
entonces todo lo que vas para salir de una cadena.
Si lo hace un poco de esto y ADPIC para arriba, así que puede ser que sea en ti.
Python sin duda le da suficiente cuerda para ahorcarse, si lo desea.
Ahora podemos imprimir individuo elementos de este y este vuelve
exactamente lo que cabría esperar.
Exactamente lo que se espera, supongo, es una frase que estoy usando mucho,
pero eso es más o menos cómo funciona Python.
Si usted pide una cosa que no es que, Python tirar un error
y te dejará fuera de cualquier programa que estabas en.
En realidad va a imprimir más información que eso,
que va a apuntar usted-- Va añadir una línea, y así.
>> Y, de nuevo, tal vez queremos para repetir diccionarios
y encontrar todas las cosas en él.
Aquí estamos iterando sobre dos cosas al mismo tiempo.
Y así lo haremos con una clave, el valor, pero luego imprimir todos estos.
>> Y si quisiéramos cast-- si en realidad encontramos esto,
tendríamos algunos problemas porque en-- cuando fuimos con David,
no podía add-- si no lo hiciéramos echarlo a una cadena en primer lugar,
no podríamos añadir que array de cadenas en una cadena.
Pero si echamos a un cadena, obtenemos algo
como este, que es tal vez lo que nos gustaría leer.
>> Y esto es corrector ortográfico.
Acabamos de leer en las cosas.
Así podemos leer en palabras individuales como líneas.
Nosotros cortamos fuera el último cosa, por lo menos 1 de colon
Chomps fuera lo último que nosotros-- el último carácter de una cadena.
Bien dicho.
OK, cada uno de los que obtiene insertado en este diccionario,
asignación a un valor de 1.
Lo hacemos no particularmente se preocupan por que uno,
pero es sólo que hay que decir, bueno, esta cosa que va a poner en el diccionario.
Porque más tarde de lo que somos vamos a hacer es que estamos
va a decir, bueno, si es en el diccionario en absoluto.
>> Una vez más, este cheque por membresía depende operativo
utilizando un completamente diferente algoritmo de lo que será en una lista,
pero nosotros lo llamamos de la misma manera, lo que es parte de esa capa de azúcar Python
cosas para que sean más fáciles de usar.
Y una vez más, hemos visto cosas como esto antes.
Esto es, básicamente, encontrar, o es exactamente la misma sintaxis
como encontrar, pero está funcionando más de un completamente diferente estructura.
Y no nos preocupamos especialmente.
Así que esas son las cosas que usted se les pidió que aplicar para la ortografía.
A este ritmo, vamos a conseguir más o menos todos los conjuntos de procesadores hecho.
>> AUDIENCIA: Para que básicamente vuelve
como incorrectamente escrito si no lo hace coincidir con algo en el diccionario?
ROSS Rheingans-YOO: Sí, sí.
Y así, se trata de una adaptación de un problema establecido
que pide para hacer exactamente eso.
>> AUDIENCIA: ¿Por qué es la línea menos 1 allí?
ROSS Rheingans-YOO: Así cuando se está iterando
sobre un archivo pidiendo por líneas, las líneas
vienen con un carácter de nueva línea al final de la it-- menos 1
es sólo para ir de compras los apagado.
Y esta es una particularmente flexible modo de indexación en las cosas.
Así que si usted tiene una cadena, y que le gustaría, así que estoy
va a comenzar en el carácter de tres y me voy a ir hasta el final.
3 de colon lo hará por usted.
Si usted es como, quiero empezar por el a partir e ir a la última menos 1
carácter, colon menos 1.
Y si quería ir de la tercera a la primera, menos,
entonces dirías 3 menos 1.
>> Además, si desea indizar en las cosas a contar desde la parte de atrás,
que acaba de índice en números negativos.
Y porque, donde C explotaría o tal vez
alimentarte otra memoria que no tenía acceso a oír que se puede decir menos 1
significa la penúltima 1 carácter en una cadena.
>> Los módulos son version-- son análogos a las bibliotecas de C
y son útiles para muchas cosas.
Un montón de cosas que le gustaría hacer en Python,
además de sencillo manipulación de variables,
desea conectar a la bibliotecas más grandes con mayor
interfaces y más capacidades para interactuar
con otras partes del mundo.
sys es uno de los con un montón de herramientas
que son útiles para interactuar con el propio sistema de
y que importarlo como import sys.
>> Hay más documentación eso, que usted podría ir aquí,
o usted podría encontrar en Google por google sys Python.
Usted escribe en entrar.
El primer enlace va a ser la documentación en Python 2,
el segundo enlace va a la documentación de Python 3.
>> Y si escribimos un archivo que parecía así- Si, en particular, estamos
mirando a operar en argumentos de la línea de comandos,
como aprendimos a hacer muy desde el principio en esta clase.
Esto no es difícil. Usted puede salir argv,
que es una de esas cosas el cual es implementado por sys.
No es incorporado a la paquete básico, pero de nuevo,
puede extenderlo mediante la importación que la funcionalidad de sys.
Usted lo llama sys.
lo que sea.
Aquí hay argv.
En realidad hay ninguna argc en sys, porque
puede llegar tan fácilmente llamando len.
Luego imprimimos eso, entonces nosotros corrió en nuestro echo-args.py terminal.
Volvemos una matriz, que Es este primer argumento.
De nuevo, esto es argv 0, que es el nombre de la cosa que consiguió llama.
Si lo llamamos con adicional argumentos, que conseguirían los de vuelta.
Esta es una manera de conseguir argumentos de la línea de comandos.
Si quieres banderas donde se gira cosas particulares sobre o anulación
un incumplimiento concreto, argparse es su amigo.
Y una vez más te encuentras con que en línea en python argparse en Google.
>> Hay un par de utilidad módulos que usted se encuentra usando
y otra vez, si uno pasa algún tiempo de esta lengua importación jsons
para la lectura dentro y fuera de json archivos, no es tan complicado.
Usted abre un archivo, llamado json.load en ese archivo y te devuelven nada.
¿Que es esa cosa?
Es un objeto JSON.
Donde que json tiene arreglo, Python tiene matrices.
¿Dónde tiene que json matrices asociativas, Python
diccionarios, cuerdas, y números, y así sucesivamente.
Usted quiere volcar que fuera, abrir un nuevo archivo, se llama a vertedero,
y cargas y vertederos de entrar y salir de las cuerdas.
>> Del mismo modo, la salmuera se llama básicamente de la misma interfaz.
Es un poco más útil si estás vertido objetos Python.
Así que si alguna vez has querido guardar una versión de la situación actual
de una variable para un futuro gestión de su programa,
salmuera es Python biblioteca para hacer eso.
>> Si tiene cualquier tipo de variable que se puede escribir a cabo
en palabras como y caracteres y bytes-- gusta este diccionario,
podríamos escribir, nos podría escribirlo como
como un objeto JSON, que era literalmente estos caracteres.
Y entonces sería muy fácil para un ser humano para abrirlo up-- abren
y leerlo.
Si no lo hiciéramos todo preocuparse por los seres humanos la lectura,
podríamos empaquetar aún más eficiente en formas que más tarde podría ser desempaquetado
o que más tarde podría ser inflado.
Y esto ahorra 80% de la espacio que los objetos podrían
tomar si usted les escribió a cabo longhand.
>> Usted llama pepinillo mucho el mismo manera-- descarga, carga,
y luego a conseguir sus cosas de nuevo.
Así que si usted está escribiendo muy programas Python cortos que
quiere guardar el estado, y luego leer de nuevo más tarde, cosas como esta
son tus amigos.
Que podría muy volcar fácilmente como JSON.
La mayoría de los objetos de Python puede volcar el json
si hay alguna esperanza de que estructuralmente que podían ser representados de ese modo.
>> Estos son sólo la punta del Iceberg en los módulos que son útiles.
Así sys, os, multiprocesamiento, son tipo de caballos de batalla básicos para cosas
tenemos que interactuar con el sistema operativo del sistema de archivos.,
como os.isfile, os.isdirectory, os.makefile, estos son tus amigos.
Si quieres interactuar con un determinado tipo de archivo,
json, pepinillo, csv.
Si desea interactuar con la web páginas, el urllib para obtener http
páginas. bs4-- BeautifulSoup-- es un analizador maravilloso para html.
Se ejecuta en un html y usted conseguir este objeto de matriz anidada ahora,
que se puede recorrer más de lookin, con igual sólo en busca de
si, es, en, que es fantástico.
>> Hay un montón de paquetes para running--
para hacer todo Mathy cosas.
Así que si quieres multiplicar, invertir, transformar matrices,
numpy es utilizado por personas todos el mundo por eso.
scipy es aún más útil herramientas en esa dirección.
aprendizaje automático sklearn--, procesamiento natural del lenguaje,
súper cosas útiles, se pone implementado en Python todo el tiempo.
>> Y de nuevo, toma un poco más en write-- siento,
toma un poco más para correr, pero la razón por la que los ingenieros reales tienden
el uso de Python se debe a que tienden a ser bloqueado en que escribir el código, en lugar
de su equipo que ejecuta el código.
Así que si usted va a escribir una programa, que muchas otras personas
se va a utilizar siempre, como Linux,
podría escribirlo en C. Si usted fuera va a escribir un motor de cálculo,
podría escribir en Python si necesitabas para cambiarlo cada dos meses.
Algunas personas escribirían en C porque son así.
>> Así que hemos visto import sys como una manera de hacer las cosas
de conseguir módulo en su programa.
También puede importar como un apodo, si usted quisiera.
Una vez más multiprocesamiento es un dolor para escriba a cabo cada vez, así como importar mp
y luego cada vez que utilizarlo en el programa,
podrás decir mp.process, o lo que sea.
Si desea importar una sola cosa,
así urllib tiene una cosa llamada petición, por lo que sólo puede importar eso.
Más tarde, no se invoque como urllib.request, pero igual de solicitud
por sí mismo.
>> Y usted puede importar todo de un módulo si desea.
Esto no es de vez en cuando una buena idea-- esto por lo general no es una buena idea, en realidad.
Porque very-- porque si algo en ese módulo tiene un nombre que
querido utilizar en otro lugar en su programa, no se puede.
>> Y no siempre es obvio que ese es el caso.
Con el fin de asegurarse de que lo que estaba haciendo era seguro,
que necesita para abrir el módulo y ver todo
de los nombres que terminan en allí-- todas las funciones,
todas las variables que viven en ese módulo,
porque usted está trayendo todos ellos en su espacio de nombres local.
>> Así que la gente hace esto.
En general se recomienda que no lo hace.
Pero la gente hace esto todo el tiempo porque son
perezosos y no quieren que escribir mp.
nada, nunca.
>> Toda esta charla sobre los módulos me traen alrededor de una breve charla
sobre cómo diseñar programas en Python.
El primer paso es comprobar si alguien más ya lo ha hecho la cosa,
o hecho el 90% de la cosa.
Lo más probable es que probablemente tienen, y usted debe ir a buscar sus cosas y ejecutar eso.
O escribir una envoltura alrededor de ella para adaptarlo a su propósito.
Es sólo después de que tiene falló que es bastante continuación
seguir y write-- empezar a pensar en cómo le gustaría poner esto juntos.
Hay un montón de cosas por ahí, y eso es
uno de los más útiles cosas sobre Python.
Al igual que el lenguaje es elegante, el idioma
es fácil de usar, sino también porque es tan elegante y fácil de usar,
la gente ha estado usando por un mucho tiempo y hay un montón de cosas
por ahí que pueda aprovechar para su propio uso.
>> Así última regla de Python es, alguien cosa que ya ha escrito probablemente
un módulo para que, alguien ya tiene
probablemente escrito una biblioteca para eso.
Antes de intentar hacer una cosa, mirar para ver si se ha implementado.
No es tan dificil.
Todos los módulos que puse arriba antes, tal vez con una sola excepción,
vienen pre-instalados en todos los instalación de Python estándar.
Y así, con una llamada a importar lo que sea,
tener todos los que la funcionalidad en la punta de tus dedos.
>> A partir de concluir este hablar, hay algunas cosas
que he dejado como cajas negras y una especie de pasado por alto,
y hay unos cuantos blanco mentiras que tengo dijo que por el bien de la honestidad,
Voy al menos punto en aquí, incluso si no lo haré
ir muy profundamente en todos ellos y sus explicaciones técnicas.
>> Muchas de las cosas que yo he llamado la magia
es lo que otros llamarían programación orientada a objetos.
Así que hay un montón de cosas-- por lo que las variables no son muy a menudo
bytes simples sentado en, memoria, pero son muy complicadas
objetos que tienen interna Estado acerca de las funciones y lotes
las variables de ocultos, un montón de funcionalidad oculta, lo que
le permite a su vez en cadenas, que le permite iterar sobre ellos.
Y si usted está writing-- y la razón de que
tener toda esta rica funcionalidad es porque las personas--
los arquitectos de la language-- han ido
por y para cada norma objeto, puesto en la funcionalidad
decir que esto es lo que es cómo esto va a funcionar
si alguien quiere iterar sobre ella.
>> Así que todo lo que alguien podría posiblemente desee para repetir,
ha escrito en la lógica manual sobre cómo eres
supone que iterar sobre ese objeto.
Todo lo que usted podría desear vertido en una cadena ha escrito la lógica.
Esta es la función que se llama a si desea volcar esto en una cadena.
Es por eso que puede llamar len en las cosas, este
Es por eso que se puede llamar en el, esto es por qué se puede llamar si en el todo
que te gustaría, porque los todos están llevando con ellos,
el know-how técnico para hacer eso.
>> Esto es algo que estoy súper no va a entrar.
Pero para algo en la lista es sutilmente diferente del estilo de C para los bucles,
y usted puede leer todo acerca de eso en internet si te interesa.
Hay un lado oscuro en todo de este, que ya he mencionado,
por lo que hay dos cosas.
La primera es que esta orientado a objetos programación añade un montón de gastos generales
de cosas al azar, por lo que terminan usando mucho más memoria;
que terminan usando un poco más tiempo de lo que sería de otra manera.
El otro-- pero cuanto más insidiosa lado oscuro a esta
Es decir, si las cosas simplemente actúan como usted quiere que
sin tener que pensar súper duro acerca de si esto debería ser un int
o si debe haber una flotador, podría ser que por aquí
usted produce un int, pero aquí usted piensan pero van a always-- siento,
podría ser que aquí usted produce un flotador,
pero cuando se llega a la segunda parte de su programa, que estás pensando,
bueno, pero van a Siempre me pasa un int.
Y si no lo hacen, es posible que encajado en algún lugar,
si intenta usar eso para indexar en una matriz, o lo que sea.
>> Así que uno de lo real cosas útiles sobre C es
te obliga a pensar realmente duro antes de hacer any--
antes de traer cualquier variable a la existencia, como lo
es el tipo de esta variable.
Y va a tener que tipo para todos los tiempos.
>> Esto no es cierto Python, y de hecho,
can-- si estás solo especie de ir por el oído,
y tomar algunas decisiones una forma en un solo lugar,
y algunas decisiones de un forma en el otro lugar
sin poner detrás de suficiente material las escenas en el otro lugar
para coger las cosas correctamente, puede obtener algunos errores muy extraños.
Y el programa puede seguir funcionando para un tiempo muy largo, porque es
haciendo un montón de trabajo para decir, bueno esto podría operar de esta manera,
así que voy a correr de esa manera.
>> Y de hecho, el hecho de que empuja remitir a través de una gran cantidad de pequeños errores
significa que, a menudo cuando un error es realmente malo
y usted realmente quiere arreglarlo, termina millas distancia-- el programa
termina parando millas de distancia desde cuando tuvo su error.
Y así, una cosa que nos gustaría programas que hacer, sometimes-- una cosa
que nos gustaría programas que hacer cuando estamos depuración
es fallar en voz alta y fallan muy rápidamente cuando algo va mal.
>> Python es muy malo en eso.
Python es muy bueno en no en su defecto y rodando hacia adelante
a través de cosas inesperadas.
Así que esto es útil para cuando estás escribiendo pequeños programas.
Al llegar complicada errores a veces
tarda mucho tiempo para embromar a cabo.
>> Así que hay un lado oscuro en todo de este, al igual que simplemente funciona.
Simplemente funciona como era de esperar que lo haga.
Excepto que cuando no lo hace, usted termina en un lugar completamente diferente
y tratando de averiguar dónde fue lo que salió mal.
>> La recolección de basura por lo es-- una cosa que te darás cuenta
es que ninguna de estas cosas que He traído a existence--
estas matrices, estos diccionarios, estos objetos, éstos archivos-- nunca se liberaron.
No había llamado a libre en cualquiera de esta charla.
Y eso fue en el lado C, debido a nunca nos metimos en esas cosas.
>> Pero en Python lado, no es un país libre.
Las cosas se ponen automáticamente liberado cuando Python
piensa que usted no está buscando a ellos.
¡No es realmente bueno liberar cosas que es posible que aún posiblemente estar mirando,
pero esto significa que si usted fuera va a asignar esta gran cosa,
y usted es como, ¡oh Ya he terminado con él ahora,
es difícil decir Python que haya terminado con él ahora.
>> A veces se puede establecer esa variable sea ninguna,
y luego esperar que con el tiempo el recolector de basura
viene a través y limpia hacia fuera.
Pero, de nuevo, no lo hace tener control sobre eso.
Y una de las razones por las que la gente utiliza C para realmente RENDIMIENTO cosas críticas,
Es esta capacidad para realmente saber cuándo se asigna memoria
y cuando es liberado, y tienen una gran cantidad de control sobre diciendo:
Estoy usando no más memoria de lo que necesito.
Lo cual es algo que Python no es tan grande en.
AUDIENCIA: ¿Puedo hacerte una pregunta?
¿Qué entiende usted por fallar en voz alta?
>> ROSS Rheingans-YOO: Así que si algo va mal
y estás en la depuración de modo, que lo haría muy a menudo
quiere que su programa que le diga dónde exactamente se ha ido mal,
y no sólo en silencio dejar de correr.
Pero será en realidad para imprimir a cabo todo tipo de información sobre
, aquí estaba este.
Esto sucedió Si está imprimiendo un wen-- si se está ejecutando un server-- web
>> AUDIENCIA: [inaudible]
>> ROSS Rheingans-YOO: Sí, si se está ejecutando un servidor web,
a veces es malo si estás siempre descartar errores,
y que usted está diciendo, así que no funcionó.
Voy a parar.
Yo sólo voy a ignorar y seguir adelante.
Porque entonces usted puede conseguir en cientos de estos errores y no los ve.
>> Sin duda, sería útil para propósitos de depuración
si cada vez que su servidor web hizo una error, que tenía registros duraderos de eso.
Tal vez incluso desea que el programa para detener, de manera que esos registros
No se deje enterrado bajo las cosas.
Pero, de nuevo, eso es en el modo de depuración.
>> A menudo, en el modo de producción, la mundo es un poco diferente.
Y en pequeños scripts que estoy corriendo, donde lo que he dicho que hacer
podría ser solamente un poco fuera de lo que me gustaría hacer,
entonces especie de empujar a través de errores es algo que usted puede ser que desee.
Y en esos casos, sin duda Python realmente gana sus aperturas.
>> La última cosa que yo no hablo en esto-- que yo no hablo de
pero puede ser muy exasperante el primero tiempo que tiene uno de estos errores,
y el segundo y tercero y cuarto tiempo que tiene uno de estos errores.
Python, mencioné que utiliza el espacio en blanco
que le diga qué nivel de sangrado y lo que de bloques funcionales que se encuentre,
que trata a las fichas y espacios de manera diferente.
Así que si usted pestaña más de cuatro, y luego la siguiente línea cuenta con cuatro espacios,
incluso si se muestran como la misma cantidad en su editor,
Python no tratarlos de la misma.
>> De hecho, Python trata pestañas y espacios como el aceite y el agua.
Ellos son sólo cosas diferentes.
No hay particular, longitud que es una pestaña,
así que no es como una pestaña es igual a 8 espacios, y por lo que obtendrían alrededor de ella
de esa manera.
Al igual que, cuando se dice, lo que nivel de espacio en blanco que estoy en,
en realidad está buscando una patrón de espacios y tabuladores.
Y por eso, la mejor manera de lidiar con este es utilizar siempre espacios todo el tiempo.
>> Y de hecho, en el Cloud9 IDE y el CS50 IDE,
sus inserciones clave Tab cuatro espacios en lugar
de una ficha, que es super útil.
Aunque de nuevo, si usted escribió un Python programa con pestañas que serían muy bien,
es sólo si alguien entró y trató de añadir
una sola línea a su programa que tenía cuatro espacios para cada ficha,
se rompería.
Y sería romper de una manera que realmente no es visible.
Aunque el error real mensaje que se lanza
tiene que ver con la nueva sangría no se espera aquí,
o- si se está hablando de guiones y parece que está mal,
es probablemente porque hay un problema tabuladores espacio.
Todavía están enfureciendo depurar.
El mayor en toda esta charla, que no lo hice
llegar a porque es realmente un complicado tema sutil,
y no era necesario hacer ninguna de las cosas que hemos hecho hasta ahora,
son un concepto llamado tuplas.
Ellos están ahí al igual que el matrices que no se puede modificar.
Ellos se utilizan en todo el lugar porque son útiles para muchas cosas
que las matrices no son útiles para.
>> Pero si desea hacer una matriz, y luego prometer el intérprete que
Nunca se va a querer modificar esa cosa-- de hecho, si desea modificar,
que va a hacer una nueva con el nuevo valores en it-- esos son tuplas.
En lugar de producir con corchetes,
les produces con paréntesis.
¿Por qué usted utilizaría estas cosas, es un poco de una pregunta. .
Lo único que voy a decir al respecto es que
puede utilizar como tuplas índices de diccionarios.
No se puede utilizar matrices como índices de diccionarios.
¿Y por qué es, de nuevo, técnica y No voy a correr en ella.
>> El conjunto de procesadores que no he tocado en esta charla es pset6.
Así que aquí está cómo usted 'd aplicar A-- aquí está
cómo le gustaría implementar pset6 en Python.
Teniendo en cuenta la Python ciclo de diseño, lo primero
que haces cuando estás escribir programas es cheque
para ver si alguien lo ha hecho ya.
>> De hecho, si quieres a serve-- Apache 50
hace aproximadamente esto, excepto que no viene
estándar instalado en máquinas Linux.
Python hace, y el Python servidor http sencilla también lo hace.
Si alguna vez en una máquina Linux, o el exterior Cloud9 IDE de CS50
y desea servir a esta corriente directorio a un puerto en particular,
python-m SimpleHTTPServer puerto sirve eso.
También puede importar el servidor http sencilla
y que tiene una gran cantidad de funcionalidad si desea personalizar, o cambiarlo,
o se ejecute it-- aprovecharla al ejecutar sus propios servicios de servidor.
>> Así que eso es Python en pocas palabras.
Y esto ha sido CS50.
Gracias.