Transcripciones
1. Introducción al curso: Hola a todos. Y bienvenidos al curso PysonUtimate Intermedio Así que sólo un poco sobre mí. Hola, soy Ono. Soy desarrollador de software y arquitecto de soluciones
que tiene experiencia en creación e
implementación de aplicaciones
basadas en PySon Jango en la nube de AWS También tengo una EEB en tecnología de la
información, y soy arquitecto
y desarrollador de
soluciones certificado por AWS arquitecto
y desarrollador de
soluciones También tengo una gran
pasión por el mundo de las TI y la enseñanza, más específicamente, todos
los campos únicos que
coexisten en TI misma Entonces con todo eso dicho, confía en mí, estás en buenas manos. Bien, entonces
probablemente te estés preguntando a continuación, ¿qué aprenderás
en este curso? Así que vas a aprender
a avanzar en tus habilidades PySon y a profundizar tu comprensión de los conceptos básicos de programación También vas a dominar PySon
intermedio
con estructuras de datos, programación
funcional
y concurrencia Y también vas a aprender
a resolver problemas del mundo
real de
manera eficiente usando PySon Derecha. Otra cosa que voy a mencionar es que una
descripción completa de lo que vamos a cubrir en este curso se
enumerará bajo la sección about
de este curso. Para que puedas seguir adelante y
echar un vistazo y ver si hay ciertos conceptos que estás ansioso o ansioso por
aprender. Ahora lo siguiente
va a estar enfocado en para
quién es este curso. Este curso está diseñado para aquellos que ya tienen un conocimiento
básico de PySon y para aquellos que quieren profundizar sus habilidades con conceptos
intermedios Si eres un estudiante, un profesional que busca cambiar carrera o simplemente
alguien que tiene curiosidad por la codificación, este curso está diseñado
para ayudarte a construir una
base sólida en PySon Lo siguiente es la
pregunta sobre prerrequisito. Entonces, ¿son los prerrequisitos? Desafortunadamente,
hay un requisito previo para este curso ya que se trata de
un curso intermedio. lo que el requisito previo es que este curso esté diseñado
para quienes ya tienen un conocimiento básico de PySon
es ideal para quienes quieran
sumar a sus
conocimientos existentes de pyson Así que ten eso en mente que
debes asegurarte de tener
una base sólida
en pyson antes de
decidirte una base sólida
en pyson antes a continuar
con este curso Derecha. Entonces otra cosa quiero mencionar es que
este curso se acopla con laboratorio
teóricos y prácticos ejercicios de laboratorio
teóricos y prácticos para asegurar que entiendas el seri de Bye y cómo puedes aplicar esa
serie en los ejercicios de laboratorio Ahora, cada lección de este
curso está estructurada cuidadosamente para maximizar
la simplicidad y eficiencia. Y lo siguiente que
probablemente te estés preguntando
es, ¿hay algún apoyo
para este curso? Entonces la pregunta es, sí. Entonces, si tiene alguna pregunta o necesita asistencia en cualquier aspecto, no
dude en hacer uso de la sección
de discusión de este curso, y estaré muy
contento de
atenderle y responder cualquier
pregunta que pueda tener. E incluso podría
darse el caso de que otro compañero de estudios te ayude antes de que pueda
responder a tu pregunta. Bien, así que eso es todo. Gracias por ver y espero verte
en este curso.
2. Proceso de pensamiento: Hola, Eon. Y bienvenidos
a la siguiente lección, que va a estar
enfocada en el proceso de ordenar. Entonces en esta conferencia, solo voy a darte algunas
palabras de consejo, que puedes seguir si
quieres sobre
cómo estructurar nuestro proceso de sal al momento de emprender este curso. Así que sigamos adelante
y comencemos. Entonces ordenar el proceso. Ahora, antes de
sumergirnos en el curso, necesitamos estructurar
nuestro proceso de selección. Entonces solo quiero
darte algunas palabras de consejo. Entonces sigamos adelante y lleguemos a ello. Entonces el primer
consejo que me
gustaría darte es que
lo des paso a paso. Así que toma este curso
paso a paso. Por favor, no cepille,
¿verdad? Tómate tu tiempo. Si una
lección en particular te está tomando mucho tiempo dominar, no
pierdas la esperanza. Lo
entenderás con el tiempo. Algunas personas entienden
diversos conceptos inmediatamente como primera vez. Otros tardan más en
comprender ciertos conceptos. Y como yo, como aprendiz ciertas materias en mi
vida, por supuesto, me he tomado mucho tiempo en
ciertas áreas de conceptos para entender y en otros temas
particulares que domino casi instantáneamente Para todos, es diferente. Todo el mundo va
a tener un reto en algún momento de algo, así que por favor no te
desanimes y solo tómalo con calma y
calma y constante Otro consejo que me gustaría
darle es que fije un horario
y se apegue a él. Ahora, por supuesto, no necesitas ser extremadamente riguroso y
detallado en tu horario. lo que me refiero con esto,
no es necesario planificarlo por los minutos y las horas exactas y el tiempo, etcétera Lo que quiero decir con eso es tener un horario que no te
va a abrumar,
sino que te va a empujar lo
suficiente para mantenerte consistente y disciplinado e incluso motivado para
completar el Así que tenlo en mente. Entonces, en mi experiencia aquí, te
recomendaría elegir un horario que sea
más flexible para ti. mí mismo no me gusta
sentarme rigory y exactamente por ¿cómo puedo decir los tiempos y los minutos
pasados y las horas gastadas No me gusta ir
con ese enfoque. O con fechas, me gusta mantenerlo más
flexible y decir: Bien, quiero gastar una cierta cantidad al mes
trabajando en este curso, y solo quiero terminar
unas cinco a diez lecciones. Entonces ese sería mi
enfoque y cómo lo hago. Por lo que dependería de cómo
prefieras seguir adelante. Sólo te estoy dando un ejemplo. Pero de todos modos, es bueno tener al menos un horario base
para seguir junto con. Ahora bien, el consejo más importante que quiero compartir con
ustedes aquí es el último, que es mantenerse positivo y saber que no es una carrera para
completar el recorrido, sino más bien un viaje lento y
constante para
adquirir conocimientos a largo plazo
para obtener los mejores resultados aquí. Esto es a lo que me refiero aquí.
No quieres apresurarte por este curso,
más bien tómate tu tiempo, aunque sientas que
los conceptos son muy fáciles de entender,
más bien tómate tu tiempo. Llévala estable y trabaja en él en el curso de
vez en cuando o con regularidad, dependiendo de tus horarios. Eso es algo muy importante que quiero mencionar aquí. Nuevamente, esto ata
muchas cosas aquí en el enfoque de
mantenerse positivo. De nuevo, por supuesto,
si ciertos conceptos tardan algún tiempo en comprender, trabajar a través de él, poner en el esfuerzo, y
vas a llegar ahí. Mantente positivo y sabe que
va a tomar algún tiempo, pero tómalo con calma, y relájate a medida que avanzas
por el curso. He hecho todo lo posible
aquí para que sea tan
simple como libre de estrés a
lo largo de este curso. Así que ten en cuenta
aquí solo para relajarte, tomar una respiración profunda y pasar
tranquilamente por el curso
y disfrutar. Muy bien, chicos. Entonces eso es
todo lo que quería mencionar aquí en términos de proceso de
pensamiento.
3. Recursos del curso: Hola a todos. Y bienvenidos
a la siguiente lección, que va a estar enfocada en los recursos del
curso. Entonces
echemos un vistazo. Bien, entonces
probablemente te estés preguntando, bien, ¿cómo programaremos? Entonces, lo primero que
debemos asegurar es que
tenemos Python instalado
en nuestro dispositivo. Entonces, ya sea que estemos trabajando en una PC con Windows o si estamos
trabajando en un dispositivo macOS. Entonces vamos a instalar y configurar el código de Visual Studio, comúnmente conocido como código VS, y este es un editor de codificación
que nos
va a permitir crear y ejecutar
nuestros programas PySon Ahora, sé que esto puede sonar un poco estresante y
preocupante, pero no te preocupes. Voy a desglosarlo lo más
fácilmente posible para ti, y
te voy a mostrar exactamente cómo
vamos a empezar con
todo. Así que no te preocupes. Estás en buenas manos.
4. Acceso a recursos del curso en línea: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en acceder a nuestros recursos del
curso en línea. Lo que quiero decir con esto es, solo
voy a mostrarte cómo
puedes seguir adelante y acceder a los
sitios web requeridos para descargar y configurar PySon y también para
configurar el código de Visual Studio Sólo voy a mostrarte
cómo acceder a los sitios web. En las lecciones posteriores, realidad
voy a mostrarte cómo instalarlos y configurarlos. Esto es solo una lección
sobre cómo acceder a ellos. Así que puedes dirigirte
a Google y solo
puedes escribir PySon Download, y luego solo podemos
decir Búsqueda de Google Y en este enlace aquí,
verás que se
llamará Descargar PySon y
quieres dar click sobre eso Eso te va a llevar a
la siguiente página aquí, que es una Python o slash forward download forward
slash Así que ya no vamos a
instalar PySon. Solo quiero ayudarte a
llegar al sitio web. A continuación, también vamos a estar utilizando Visual Studio Code. Entonces lo que puedes
hacer es seguir adelante en Google y escribir Visual
Studio Code Download. Míralo la búsqueda de Google. Y verás aquí este
enlace que
aparece que dice descargar
Visual Studio Code, Mac Linux y Windows,
para que podamos abrirla. Y aquí está la página que
vamos a necesitar para seguir adelante y configurar código de
Visual Studio como
nuestro editor de codificación. Muy bien chicos. Eso es todo para
esta lección, muy simple. Solo quiero
mostrarte cómo puedes acceder a estos sitios web para futuras referencias en las
próximas lecciones.
5. Python: instalación y configuración - Windows: Hola a todos. Bienvenido
a la siguiente lección, que va a estar
enfocada en instalar PySon en un dispositivo Windows.
Empecemos. Ahora, lo primero que
debes hacer es dirigirte a la siguiente dirección
web,
que está en python.org, fordslash Después de ingresar en
esa dirección web, serás redirigido
a la siguiente página como puedes ver aquí mismo Lo que vamos a hacer es
descargar PySon para Windows ahora. Ahora en cuanto a la
versión que se te
da cuando te
dirijas a esta página, no tiene
que ser exactamente
la misma versión, así que no te estreses siempre
y cuando no esté muy lejos. Bien, lo que podemos hacer es
seguir adelante y ver descargar Pisón. Ahí está la configuración para nosotros aquí, que podemos seguir
adelante y abrir. Nos va a llevar a
través del asistente de configuración. Entonces lo que vamos
a querer hacer es que vamos
a querer asegurarnos de que estamos usando privilegios de
administrador al
instalar Pit Ex, y también queremos agregar
el PysonTex a nuestro pase Ahora bien, esto es muy
importante solo para asegurar que todos nuestros usuarios en
nuestro sistema puedan ejecutar PySon dentro de cualquier tipo de aplicación que permita ejecutar
Python ¿Hay alguna restricción? Entonces quieres decir instalación
personalizada. Bien, asegúrate de que todo esté seleccionado, como
puedes ver aquí. Entonces podemos ver a continuación. Y entonces quieres decir instalar PySon para todos los usuarios aquí, en este caso, es 3.13. Así que solo asegúrate de seleccionar
la siguiente opción, y esto solo va a
asegurar que todos los usuarios tu dispositivo
podrán usar PySon Después de hacerlo, puedes
seguir adelante y decir Instalar. Aparecerá un mensaje
en tu pantalla, y el mío está atenuado actualmente, y solo quieres decir que sí
a ese aviso de seguridad Así podemos ver que la
configuración está en curso. Entonces solo va
a tomar un momento más o menos hasta
que PySon esté
instalado en nuestro sistema Así que sólo vamos a
tener que ser un poco pacientes hasta que esté
configurado y terminado. Así que vamos a darle un momento.
Todo bien. Bienvenido de nuevo. Enhorabuena
por configurar
correctamente PySon en tu PC con Windows Como podemos ver ahora, que la configuración fue
todo un éxito, bien hecho. Ahora podemos seguir adelante y cerrar esto y sólo voy
a minimizar esto. Ahora bien, para asegurar que todo se haya instalado correctamente y que no
haya problemas, le
recomendaría encarecidamente
que lo haga ahora es reiniciar su PC. Así que por favor asegúrate de hacer
esto. Esto es muy importante. Entonces, lo que puedes hacer
es simplemente dirigirte a tu PC y
puedes seguir adelante y decir que
reinicio se lleva bien. Y luego, por supuesto, una vez que
tu PC se haya reiniciado, te
llevaré a través de la prueba de confirmación
final para asegurarme de que PySon
efectivamente se haya instalado
en tu sistema y que el pase haya sido mente de
sistema en Entonces eso es lo principal. Por lo tanto,
la variable de entorno para PySon necesita ser
cargada y configurada Entonces sigamos adelante y hagamos eso. Así que reiniciemos
las PC y luego
volveremos en cuanto se
hayan reiniciado nuestras computadoras Bien, así que bienvenido de nuevo. Entonces confío a estas alturas que ya
has reiniciado tu PC. Ahora, todo lo que
vas a querer hacer para la confirmación final de
que PySon
se ha configurado correctamente en nuestros sistemas es
buscar el símbolo del Simplemente puedes escribir
CMD para encontrarlo rápidamente. Así que aquí está nuestro símbolo del sistema. Y todo lo que voy a hacer
ahora es solo voy a ajustar esto solo para
tu placer visual, y solo voy a decir
PySon versión dash dash Entonces puedes seguir adelante y
escribir esto también, y luego podemos presionar Enter. Y si todo fue un éxito, debería dar salida a
la versión PySon que tengas instalada
en tu sistema Y esto es como una comprobación final de
confirmación para
asegurarnos de que todo ha corrido sin problemas y que
estamos bien para ir. Todo bien. Así que asegúrate de que puedas
ver esto y que hayas instalado PySon en tu
máquina, y eso es todo Entonces así es como
puedes instalar PySon en tu sistema y
también verificar que no
haya problemas ni conflictos ni nada y que se haya instalado correctamente Bien, vete. Entonces,
para esta lección, así es como puedes seguir
adelante e instalar PySon en un dispositivo Windows
6. Código VS: instalación y configuración - Windows: Hola a todos. Y bienvenidos
a la siguiente lección, que va a estar
enfocada en descargar y
configurar código de Visual Studio
en un dispositivo Windows. Así que comencemos. Ahora, lo primero
que debes hacer es
dirigirte a la siguiente URL, la cual puedes agregar como código visualstudio.com
flash Download, va a llevar a esta página
aquí donde
puedes descargar código de
Visual Studio para tu sistema operativo
designado Ahora caso, va
a ser en Windows. Podemos seguir adelante y seleccionar la opción aquí para
Windows ten y 11, así podemos hacer click en eso
y eso nos va a descargar la guía de
instalación para nosotros y el asistente de configuración. Podemos seguir adelante
y abrirla. Solo seamos pacientes a
medida que se abre. Queremos aceptar el acuerdo. Pasemos a la siguiente etapa. Lo va a guardar en
una carpeta de destino. Pasemos a la siguiente etapa. Podemos ver así es como
podemos acceder a él en el menú de inicio como código de Visual
Studio siguiente. Te recomendaría solo crear un icono de escritorio por ahora. Siempre
se puede quitar esto. Podemos decir siguiente e instalar. Ahora va a instalar código de
Visual Studio
en nuestro equipo. Todo lo que vamos a
querer hacer ahora es ser pacientes ya que ese proceso se completa. Bien,
entonces, bienvenido de nuevo. Como puede ver, el código de Visual
Studio se ha instalado
con éxito en nuestra máquina, y ahora podemos lanzar
Visual Studio Code. Entonces, si esta opción no se
ha marcado por ti en la casilla de verificación,
puedes seguir adelante y verificarla, y puedes ver terminar, y
eso
nos va a abrir el código de
Visual Studio. Entonces podemos decir terminar. Y aquí estamos. Así que aquí estamos en el código de Visual
Studio. Entonces, bien hecho. Ha descargado y configurado correctamente código de
Visual Studio en su PC
con Windows. Tan bien hecho.
7. Cómo empezar con nuestro proyecto: ventanas: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en
comenzar con el código de Visual Studio. Bien. Ahora, lo
que vamos a querer hacer es crear nuestro proyecto, que albergará
nuestros archivos Python. Bien, así como pueden ver, no
tenemos carpetas abiertas
ni nada por el estilo. Entonces lo que vamos a hacer es
dirigirnos al escritorio, y voy a hacer click derecho y voy a decir nuevo va a decir carpeta y
voy a darle a esta carpeta un nombre que
va a ser adecuado. Así que vamos a estar trabajando
con nuestro código Python. Entonces pensaría que un nombre
sencillo aquí se
llamaría Mi Proyecto. Ahí vamos. Ahora podemos navegar de nuevo
al código de Visual Studio, y ya puedes decir
ahora carpeta abierta, o puedes hacer clic en el
icono en la parte superior izquierda, ir a Archivo, luego abrir carpeta. Después podremos navegar a nuestro escritorio y luego
seleccionar mi proyecto. Aquí es donde se alojará nuestro
código PyCon. Entonces podemos decir seleccionar
carpeta. Todo bien. Perfecto. Entonces esta es la
carpeta con la que estaremos
trabajando para almacenar
nuestros scripts PySon Derecha. Ahora
lo siguiente que quieres hacer es resaltar o pasar el cursor sobre tu carpeta de proyectos aquí
y verás algunos íconos Queremos dar click en Nuevo Archivo, y este va a ser
nuestro archivo de script PySon Entonces aquí es donde
agregaremos todo nuestro código PySon, y luego vamos a
ejecutar el código basado en los comandos que
se han definido en este archivo Entonces solo voy a llamar a
esto por ahora punto principal pi. Puedes darle el nombre que desees, y
puedes presionar Enter. Ahora, en cuanto
hayas pulsado Enter, vas a obtener un
prompt aquí que dice: ¿Quieres instalar el PysoneTension
recomendado
de Microsoft para
el lenguaje PySon de Microsoft para
el Entonces te recomendaría que lo hicieras. Te va a novia con algunas características extra y tal. Entonces yo recomendaría seguir adelante e instalar eso. Entonces
se puede decir instalar. Por lo que va a tomar
unos minutos instalar esta extensión en el código de
Visual Studio. Ahora, todo lo que necesitas hacer ahora
es ser un poco paciente, y una vez que esté instalado, podemos continuar desde ahí. Cierto, así que bienvenidos de nuevo ya que
podemos ver que la extensión
Python
se ha instalado el código Visin
Visual Studio, así podemos cerrar esto Y lo que también podemos hacer es
dirigirnos a Explorer. Y aquí podemos
seguir adelante y alternar la siguiente opción para maximizar nuestro script aquí llamado
main dot pie, por ejemplo. Y si queremos
ver nuestro directorio, que alberga nuestro proyecto
y los archivos asociados, por supuesto
podemos simplemente
navegar hacia atrás. Todo bien. Entonces solo algo que también
quería mencionar en esa nota. Derecha. Ahora lo que
queremos hacer es que queremos agregar en nuestro
código Python a este script, y luego queremos
ejecutar este script y queremos ver el resultado de
salida. Ahora, lo primero
es que sigamos adelante y
empecemos y creamos
un programa sencillo. Sólo voy a definir
una variable conocida como nombre, y decimos iguales
y establecemos eso
al valor de no entonces voy a imprimir esta variable
y va a dar salida al valor
asociado al nombre que es no. Ahora, hay dos formas en las que puedes seguir adelante y
empezar con esto. Ahora, la forma manual, te
voy a mostrar primero, que es que puedes
seguir adelante y hacer clic en el icono que fluye
en la parte superior izquierda. Entonces quieres ir a la terminal, y quieres
abrir tu terminal. Bien, así que aquí lo
tenemos. nuestra terminal aquí en
el lado izquierdo. Y con esta consola de depuración, puedes seguir adelante y
simplemente cambiarlo. Y lo que te recomiendo que hagas
ahora es reabrir tu terminal A veces lleva un
momento configurarlo. Así que siempre seguiría adelante y
solo decía: Matar terminal. Entonces la voy a cerrar, y luego volvemos a terminal y luego la
abrimos otra vez. Y aquí vamos. Bien, así que ahora podemos seguir adelante
y comenzar Ahora, lo que vas
a querer hacer es ejecutar tu archivo de script PySon
según el nombre Entonces esto se llama Min Dot Pie, y podemos ver el directorio
que tenemos configurado aquí. Entonces actualmente nuestro terminal está mirando al usuario
aquí, que es Ono, en el escritorio en la carpeta
Mi Proyecto, que es la carpeta que creamos aquí
llamada Mi Proyecto. Y como pueden ver, también está
disponible aquí, Mi Proyecto, y tenemos Min Dot Pi, que está dentro de esta carpeta
Mi Proyecto. Vamos a querer hacer para
ejecutar cualquier código que esté en este archivo py punto principal
es el siguiente. Solo quieres escribir Python. Y entonces solo puedes
referirte al nombre del archivo, que es el punto principal py. Pero todo lo que quieres hacer es
decir PySon punto principal pi, y entrar, y ahí puedes ver que da salida a nuestro código para nosotros. Entonces esa es la
forma más sencilla en la que puedes seguir
adelante y ejecutar tu código PySon dentro del código Visual Studio y
usando este terminal. Derecha. También podemos escribir claro
y eso va a
ayudar a despejar la
terminal también. Entonces esa es la primera forma en
la que puedes ejecutar código. Entonces es una especie de
forma manual que se podría decir. Ahora, la manera más fácil es que podamos seguir
adelante y ocultar este panel. Ahora verás si instalaste
la extensión Python, ahora
tendrás la
oportunidad de pasar el cursor sobre el siguiente icono y
ejecutar tu archivo Python Esto lo hace automáticamente
por ti, per se. Simplemente podemos hacer click
en Ejecutar PysonFle dando click sobre este icono, y eso
nos va a
abrir la terminal y ya vas a ver que
va a ejecutar Aquí tenemos el pastel de punto principal, que se ejecutó y la
salida aquí, que está en él. Esa es otra forma
en la que puedes hacerlo. Hay dos maneras. Todo bien. Eso es, chicos. Así es como podemos seguir
adelante y
comenzar con el código de Visual
Studio y
establecer nuestras bases para
nuestro proyecto PySon Así que ya podemos seguir adelante
y ver aquí. Todo bien. Entonces así es como podemos
seguir adelante y comenzar eso y poner todo
en, como, en su lugar.
8. Python: instalación y configuración - MacOS: Hola a todos. Bienvenido
a la siguiente lección, que va a estar
enfocada en instalar PySon en un dispositivo macOS Lo primero que
quieres hacer es dirigirte a la siguiente URL,
que está en python.org
forwardslash Descargas forwardlas Quieres asegurarte de
dirigirte a esta URL. Después de ingresar
eso en, serás redirigido a la
siguiente página aquí, que se encuentra en la página de
Descargas de Python Entonces quieres descargar
PySon para que puedas hacer click
sobre este botón aquí Eso
nos va a descargar
el asistente de configuración y podemos seguir adelante y
abrirlo de la siguiente manera. Aquí hay un asistente de configuración.
Sólo queremos continuar, continuar,
reñir y estar de acuerdo con los términos. Entonces quieres decir
instalar e ingresar tu contraseña e instalar
este software en tu sistema. Todo bien. Ahí vamos.
Podemos cerrar aquí lo siguiente. Ahí estamos. PySon se
ha instalado correctamente en nuestro dispositivo Sólo podemos decir cerca.
Sólo podemos decir mantener, eso está bien. Ahora lo que te recomiendo que
hagas es dirigirte a tu ícono de Apple y simplemente
reiniciar tu dispositivo macOS. Esto es solo para asegurar
que todo esté configurado correctamente PySon en términos de
variables de entorno y tal Después de hacerlo, lo que
puedes hacer es dirigirte a tu launchpad y quieres
buscar tu terminal Simplemente puedes escribir en
terminal y abrirla. Este es el
equivalente CMD en Windows para confirmar que PySon
se ha instalado y la versión
designada específicamente
que has instalado, solo
puedes decir PySon tres,
space, dash dash
version, Ahí estamos, podemos ver que la versión que
queríamos instalar y la instalación de PySon ha sido un éxito ya que podemos ver
la salida es la siguiente Eso es solo una
confirmación para mostrar que PySon ha sido instalado
en nuestro sistema Bien, así es todo
para este video, es como puedes asegurarte de que Python esté instalado
en tu dispositivo macOS.
9. Código VS: instalación y configuración - MacOS: Hola a todos. Bienvenido
a la siguiente lección, que va a estar
enfocada en descargar e instalar
código de Visual Studio en nuestros dispositivos macOS. En primer lugar, quieres asegurarte de que estás en la
siguiente página aquí, que es accesible si
te diriges a URL
y escribas el código visualstudio.com para
slash Descarga tu URL, en la que serás redirigido
a A continuación, lo que quieres
hacer es que quieras seguir
adelante e instalarlo para un Mac, que podamos seguir adelante y dar click
en el siguiente icono. Eso va a descargar el asistente de configuración que
necesitamos para acceder al código de
Visual Studio. Sólo tenemos que
darle unos momentos. Si por alguna razón la descarga
no inicia por ti,
puedes continuar
y hacer clic en el enlace de descarga
directa en su lugar. Solo dale un momento
y ya veremos que está hecho y podemos seguir adelante y
abrir el código de Visual Studio. Después de hacer clic en él,
verás este aviso aquí y todo lo que quieres
hacer ahora es abrirlo. El código de Visual Studio es una app descargada de Internet
y queremos abrirla. Ahí estamos. Aquí lo tenemos. Este es el código de Visual Studio. Así es como puedes seguir adelante y configurar
fácilmente este editor
de codificación.
10. Cómo empezar con nuestro proyecto: MacOS: Hola a todos. Bienvenido a la siguiente lección que
va a estar enfocada en comenzar con el código de
Visual Studio para que podamos
configurar nuestro PysonPject Lo primero que
quiero que hagamos es
minimizar el
código de Visual Studio por el momento. Lo que vamos a hacer
es ir a una cobertura y crear una nueva
carpeta en nuestro escritorio, que albergará nuestro archivo
PySon en su momento. Vamos a hacer click derecho
y luego podemos decir nueva carpeta y tengo esta carpeta creada
y voy a dar click sobre esto y cambiarle el nombre. Voy a llamarlo MP check. Puedes darle cualquier
nombre que desees, ahí tenemos esa
carpeta y queremos
abrir esta carpeta en código de
Visual Studio. Es para abrir el código de Visual
Studio, maximizarlo. Entonces podemos ir y dar
click en Archivo. Navegue hasta abrir la carpeta. Entonces queremos
ir al escritorio porque ahí es donde
creamos esa carpeta. Entonces podemos seleccionar esa carpeta llamada mi proyecto y decir open, y podemos cerrar este
prompt y ahí podemos ver que ahora tenemos acceso
a esta carpeta. Perfecto. Bien hecho. Ahora queremos crear nuestro
archivo PysonScripting, se podría Aquí es donde
vamos a agregar todo nuestro código PySon y también
vamos a ejecutar nuestro código basado en
el contenido del archivo S. Eso va a estar dentro de
nuestra carpeta de proyectos aquí. Puedes pasar el cursor sobre él
y luego verás un ícono que
te permitirá crear un nuevo archivo Quieres hacer clic en eso.
Dale un nombre a tu archivo aquí. Voy a llamarlo
punto principal py, por ejemplo. Necesito ser un dotpi que código de
Visual Studio
sepa que este
va a ser un
archivo basado en Python y podamos presionar Enter Ahí lo tenemos, el archivo
principal punto Pi. Ahora, como es la
primera vez que estamos usando PySon en el código de
Visual Studio, vamos a tener un prompter que va a sugerir
que instalemos la extensión Python recomendada de Microsoft para
el lenguaje Python Esta extensión solo nos da algunas características adicionales que
podemos utilizar y, en general hace que nuestra experiencia
con la codificación de Python en código de
Visual Studio sea mucho más
competente y agradable Podemos decir instalar.
Eso va a instalar la extensión.
Ahí vamos. Se ha instalado, por lo que
podemos cerrar la siguiente página aquí y podemos navegar
hasta el icono aquí,
que es Explorer. Eso solo va a mostrar
nuestro directorio que, por
supuesto, nuestros archivos
en nuestro directorio. También podemos cerrar
Explorer aquí para maximizar el archivo que
tenemos aquí ya abierto. En realidad es algo que también quería seguir adelante y mencionar. Todo bien. Sigamos adelante y ejecutemos algún código y
realicemos algunas pruebas. Ahora, lo primero que
quiero, por supuesto, hacer es simplemente seguir adelante y
crear un programa sencillo. Voy a decir nombre igual, y sólo voy a decir honor. Estoy creando un nombre de nombre de
variable y asignándolo al valor
del honor En la siguiente diapositiva,
voy a decir print y
quiero sacar dicho valor.
Sigamos adelante y hagamos eso. Dentro de la declaración de impresión,
voy a poner en nombre Ahora, lo que puedes hacer es
que puedas seguir adelante y guardar tu código aquí, y luego podemos seguir adelante
y ejecutarlo dando clic en el siguiente icono aquí
para ejecutar el PisonFle Ahí vamos. Podemos ver que ha ejecutado el archivo en consecuencia aquí. También puedo minimizar esta terminal de aquí solo para
darte un poco más de espacio. Podemos ver la salida
ahí, que era ni y se ha
ejecutado con éxito. También podemos ver que
se
configura automáticamente nuestro pasado para nosotros. Estamos corriendo dentro del directorio
Mi proyecto, y está ejecutando el archivo punto pi
principal aquí específicamente para generar cualquier código que se
haya enviado aquí. Y también puedes borrar tu
terminal aquí escribiendo claro y eso lo
borra por ti También puedes seguir adelante
y cerrarlo. Ahora esa es la forma
automatizada de
seguir adelante y ejecutar tus programas
en código de Visual Studio. Lo que también puedes hacer es que
puedes seguir adelante y dar click en el directorio de la terminal
aquí y decir nueva terminal, y eso la va a abrir
aquí de la siguiente manera. Lo que podemos hacer es, por supuesto, solo
podemos darnos algo de
espacio aquí y también puedes ejecutar los comandos aquí también. Esa es otra
forma de hacerlo. Si quieres seguir adelante y ejecutarlo en
la terminal aquí lugar de seguir adelante y
decir ejecutar el archivo Python, necesitas hacerlo manualmente de
acuerdo con el nombre del archivo. Pero vas
a querer decir PySon tres,
espacio, y luego tu nombre de archivo Aquí voy a decir punto
principal pi, y Enter. Ahí va a dar salida en
consecuencia de la siguiente manera. Correcto, así es como
puedes ir en una cobertura y utilizar el terminal
y el código de Visual Studio Y podemos teclear claro aquí y eso nos despejará
la terminal. Ahora, al menos
recomendaría que
prefieras simplemente hacer clic en la opción Ejecutar PysonFle
aquí para que se ejecute por usted, luego tománicamente ingrese nombre
del archivo Esto solo te ahorrará
algo de tiempo y tal. Muy bien chicos, eso. Así es como podemos
comenzar con PySon y cómo podemos comenzar
más específicamente con PySon en el código de
Visual Studio
11. Mejora tu flujo de trabajo con Code Runner - [Opcional]: Hola a todos. Bienvenido
a la siguiente lección, que se
centrará en mejorar nuestro flujo de trabajo utilizando
la extensión del ejecutor de código. Ahora bien, esta va a
ser una lección opcional. No tienes que hacerlo
si no quieres. Pero digamos por ejemplo, estás trabajando
con tu terminal y quieres tener
una salida más limpia. En lugar de ver
esos archivos desordenados cada vez y luego la salida del código que
realmente estás esperando, entonces el corredor de código
realmente puede ayudar a que eso sea
mucho más fácil y mucho más agradable a la
vista, debería decir En lugar de ver todos esos pases
de archivos y nombres incluidos con la salida y desea limpiar la salida, puede usar el ejecutor de código. Así que sigamos adelante
y comencemos. Bien, entonces tenemos que
navegar hasta la extensión, así verás designado
por el ícono que fluye. Ahora podemos simplemente dar click
en este campo de entrada, y solo voy a
quitar lo que hay en él. Y queremos
buscar código runner. Sólo voy a escribir, por
supuesto, el código que fluye. Corredor. Y vamos a
ver éste de aquí mismo. Entonces verás que
tendrá este logo dot run, así que code runner, y quieres
instalar esta extensión
en particular. Bien. Así que vamos
a darle un momento más o menos para que se instale,
y ahí vamos. Podemos ver que efectivamente se ha
instalado en nuestro sistema. Bien, para que podamos cerrar
esa extensión ahora, de
cabeza atrás, y la
tenemos en su lugar. Ahora, hay algunos ajustes
que necesitamos confirmar y asegurarnos de que tenemos en su lugar para tener esa salida limpia. Entonces sigamos adelante
y hagamos precisamente eso. Entonces quieres navegar
hasta el siguiente ícono. Entonces quieres ir a Archivo, luego puedes desplazarte hacia abajo
hasta que veas las preferencias. Entonces quieres pasar el
cursor sobre las preferencias, y luego quieres hacer
clic en la configuración Así que adelante y da click en eso. Eso te va a llevar a
la siguiente zona aquí. Entonces aquí por configuración de búsqueda, podemos simplemente seguir adelante
y poner en código. Bien. Y podemos simplemente poner en Runner. Bien, ahí vamos. Bien, entonces tenemos
algunos ajustes aquí. Entonces, antes que nada, tenemos corredor de
código claro salida
anterior. Por lo que queremos asegurarnos de que
esto ha sido verificado. Eso solo va a
asegurar que muestre la salida más fresca cada vez que
hagamos una ejecución de código Bien, así que sigamos
adelante y continuemos. Entonces solo queremos
buscar las opciones clave ahí. ¿Bien? Para que podamos dejar
todo como está. Sólo quieres enfocarte en
las que te he mencionado. Aquí, también tenemos código
ejecutar y ejecutar en terminal. ¿Bien? Quieres asegurarte de
que esto ha sido desmarcado, que no está marcado, así que simplemente
podemos
dejarlo en blanco como está Entonces ese es otro que quieres
para asegurarte de haber comprobado. Bien, y claro, podemos ver que también
tenemos guardar archivo antes de ejecutar. Entonces eso va a
asegurar que queremos guardar el
archivo actual antes de ejecutarlo. Y lo que quieres hacer por este de aquí
es que quieres asegurarte de que se mantenga a la verdad. Y entonces tenemos mensaje de
ejecución de show, ¿de acuerdo? Así que no queremos ver nada como correr o abajo
ni nada por el estilo. Queremos que sea claro, limpio
y sencillo. Así que asegúrate de que eso
haya sido desmarcado. Así que solo quieres verificar
esas cuatro opciones que he entrado en detalles
ahora solo para asegurarte de que
todo esté despejado
y organizado para que el corredor de código
funcione en su lugar. Bien, así que sigamos adelante
y cerremos esto ahora. Ten nuestro código aquí, pero ahora
para ejecutar realmente code runner, lo que puedes hacer,
es muy sencillo. También vamos a hacer clic en Ejecutar, pero quieres hacer clic en
esta flecha desplegable aquí, y verás ahora que
tenemos una opción para decir ejecutar código en lugar de
ejecutar Pis y archivo Entonces quieres dar click en
Ejecutar código, y ahí vamos. Tenemos esa salida
limpia, sencilla. No se puede ver más desorden. Es mucho más fácil de usar, y ahora está en su lugar
como debería estar. Bien, entonces lo que voy a hacer ahora es simplemente cambiar ese valor, y solo voy
a decir John. Y ahora si sigo
adelante y de forma manual basta con hacer clic en la opción
aquí, van a ver que el
predeterminado será el código de ejecución ahora, y habrá Ha. Bien, así que ahí vamos. Así es como puedes seguir adelante
y utilizar el corredor de código. Entonces puedes ver que
nos da una salida limpia, mucho más fácil a
la vista también, y mucho mejor en
general para que lo
utilicemos de tal
manera. Muy bien, chicos.
12. Expresiones regulares: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en las expresiones
regulares.
Entonces echemos un vistazo. Muy bien, así expresiones
regulares, comúnmente referidas como rechazos Entonces, las expresiones regulares en Python se
utilizan básicamente para
identificar patrones en el texto, como en números, palabras, o incluso en una
dirección de correo electrónico, por ejemplo. Ahora, en lugar de
buscar coincidencias exactas, rejec sigue reglas específicas para detectar
patrones específicos per Ahora, PySon ya
nos proporciona un módulo incorporado llamado RE para trabajar con
expresiones regulares, llave inglesa Entonces eso es suficiente para la visión general
teórica. Sigamos adelante y
apliquemos nuestros conocimientos en la utilización de
expresiones regulares en PySon
13. Trabajar con expresiones regulares - [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que se centrará en trabajar con expresiones
regulares comúnmente conocidas como
rejec dentro Sigamos adelante y comencemos. Vamos a quitar lo que tenemos aquí y sólo voy a
alejar un poco de tabulación. Derecha. Bien, entonces lo primero que vamos a
querer hacer es simplemente repasar qué tipo de ejemplos vamos a
repasar con expresiones regulares. Entonces, para tener una mejor comprensión
de las expresiones regulares, voy a pasar por
algunos ejemplos y ejercicios con Z y van a ser a
saber los siguientes. Te voy a mostrar cómo
puedes encontrar todos los dígitos, es decir, números en un determinado conjunto de texto, cómo reemplazar los dígitos
con ciertos caracteres, y también cómo verificar si una
cadena comienza con el dígito. Esto te ayudará a tener una mejor comprensión de cómo
puedes usar las funciones que vienen con el módulo RE y tal. En fin, sigamos adelante
y empecemos. Entonces, en todos los ejemplos,
necesitamos antes que nada, importar el módulo RE, que viene con muchas funciones integradas
junto con él. Así podemos ver Importar RE. Derecha. Ahora necesitamos
agregar en algún ext, y el primer
ejercicio va a enfocarse en encontrar
todos los números o dígitos en un
conjunto dado de checkt Entonces voy a decir ext, iguales, y aquí entre comillas, voy a decir que
tengo tres manzanas. Y dos pares.
Ese es mi ejemplo. Y como pueden ver ahí,
tengo dos dígitos. Tengo tres, y tengo dos. Entonces, claro, queremos
extraer dichos valores,
técnicamente. Entonces necesitamos
especificar un patrón. Ahora, el nombre de la variable aquí, puedes dar cualquier nombre
que desees. Sin embargo, lo estoy llamando patrón porque
ese es esencialmente el patrón que voy
a configurarlo como. Ahora, siempre
vas a querer comenzar con R para tu
expresión aquí,
la R antes de una cadena dada va a asegurar que la cadena sea una
cadena sin procesar,
lo que significa que todas las barras inversas
se tratan normalmente en lugar de como secuencias de escape Entonces agregaremos en nuestras
cotizaciones y luego la diagonal hacia atrás D. Esa va a ser la parte importante
que necesitamos agregar aquí Ahora bien, esta diagonal D de
aquí, es, por supuesto, va a ser una expresión regular que va a igualar
contra cualquier dígito Eso es lo que necesitamos
antes que nada,
especificar lo siguiente
que vamos
a querer hacer es que
vamos a querer especificar
otra variable,
podemos llamar a estos
números y vamos
a utilizar el
módulo R E de vez especificar lo siguiente
que vamos a querer hacer es que
vamos a querer especificar
otra variable, podemos llamar a estos
números y vamos a utilizar el
módulo R E vamos a invocar el find en cuando
vamos a invocar el find
o función que viene incorporado con el módulo RE, y vamos a poner
en dos parámetros Primero será patrón
y luego texto. Entonces, para reiterar esta
línea aquí sobre patrón, esto es para encontrar todos los dígitos
en un conjunto dado de texto, que va a
ser este texto aquí. Y lo que estamos haciendo es usar el hallazgo o función
para hacer precisamente eso. Entonces el find o
función va a querer conocer el patrón y luego las comprobaciones para
aplicar esto también. Entonces el patrón va a
estar basado en los dígitos, esta diagonal D para
encontrar y hacer coincidir dígitos, y queremos encontrar
todos los dígitos en este texto que
dice que tengo tres
manzanas y dos pares Puedes s para ti mismo,
es por supuesto, va a dar salida tres y
dos. Confirmemos esto. Entonces puedes decir imprimir
números y ejecutar tu código. Aquí se puede ver que
da salida tres y dos. Ahí lo tenemos.
Así es como podemos encontrar dígitos en un conjunto de texto
dado. Ahora, ajustemos esto ahora y voy a alargarlo. Voy a decir que
tengo tres manzanas, dos pares, y cuatro naranjas Guarda el código. Corre. Ahora se puede ver que da salida a
tres, dos y cuatro. Bien. Para que pueda ver allí, recogerá
y verificará dónde puede recuperar todos
los números dados utilizando la función
find all. Ahora, digamos por el bien de la
discusión, queremos hacer
algo diferente. Digamos que queremos reemplazar los dígitos por un carácter
específico. Digamos con una etiqueta hash. No queremos que se filtre el
número o
número de teléfono de alguien filtre el
número o
número de teléfono de Sólo queremos verlo siendo, se podría decir,
oculto por hashtags. Entonces sigamos adelante y
hagamos eso. Así podemos eliminar este código por ahora. Voy a quitar
eso, y voy a decir texto de nuevo. Y aquí voy
a decir mi número es, y voy a decir uno, dos, tres, cuatro, cinco, como ejemplo. Entonces el patrón que
vamos a establecer. Así que comillas dobles, barras invertidas D. Así que vamos a buscar cualquier patrón
que coincida con los dígitos Entonces podemos decir nuevo texto de
subrayado porque vamos a modificar este texto para decir que mi número es, y luego vamos a agregar un carácter específico para ocultar
estos números, por ejemplo Bien. Entonces
vamos a decir RE, vamos a utilizar el módulo punto. La función que usaremos
esta vez se llama sub. Entonces sub es una función, que comúnmente se conoce como sustituto
o sustitución, pero el nombre de la
función real es sub. Por lo que queremos esencialmente sustituir un valor
alternativo
para reemplazar un dígito per se. Entonces necesitamos aplicar el patrón que queremos usar para
hacer coincidir dígitos. Y donde veamos dígitos, queremos
reemplazarlo o modificarlo con una etiqueta hash en el texto dado. Como puedes esperar ahora lo que
va a pasar es que
dirá mi número es, y va a mostrar hashtag, hashtag, hashtag,
hashtag y hashtag. Si dijéramos imprimir y luego nuevo
texto subrayado y ejecutar ese código, podemos ver aquí en las salidas, mi número es hashtag,
hashtag, hash, hasta hashtag Ahora, digamos que sólo
pongo uno y dos. Y volvemos a correr, solo
muestro los dos primeros hashtags. Bien, entonces esta es una muy buena manera si
quieres sustituir o reemplazar dígitos o números
dentro de un conjunto de texto dado. Utilizaría
la subfunción
o la función de sustitución. Ahora también puedo hacer esto
más largo y correr eso, y se puede ver que sólo
va a hacer lo siguiente. Ahora, también puedo cambiar esto a, digamos, símbolo de $1, así puedo cambiarlo a eso y pongámoslo al original,
y hace lo mismo. Entonces así es como se puede
sustituir en consecuencia. Bien, así es como
podemos reemplazar los dígitos. Ahora bien, lo último que
quiero mostrarte es cómo
puedes verificar si una cadena
empieza con un dígito, así que si empieza con un
número. Entonces hagámoslo. Vamos a quitar esto. Bien, texto. Y lo que voy a
hacer ahora es voy a decir tres pares en la canasta. Bien. Entonces podemos ver aquí ya que la cadena
empieza con un dígito. Todo bien. Entonces el patrón. Bien, vamos a tener R, y vamos
a tener que poner aquí
un carácter especial, así que va a ser una
flecha que va hacia arriba o como el poder dos especie de símbolo. Y eso va a significar
el inicio de la cuerda. Entonces al inicio de la cadena, quiero buscar
cualquier dígito coincidente de ahí
la barras inversas y D. Así es como puedes aplicar estos caracteres juntos en
términos de las Entonces, esencialmente, esta línea ahora de código va a coincidir
si la cadena comienza con el dígito y
vamos a aplicar esto ahora. Una declaración if. Entonces voy a decir que coincido con puntos, así que estamos usando la función de
coincidencia, el patrón y la verificación. Entonces vamos a comprobar si este patrón
en particular coincide en este texto. Entonces, en otras palabras, si este
texto aquí comienza con un dígito, según el patrón,
entonces vamos a generar una respuesta específica. Entonces como esta es una declaración if, voy a agregar en un
kern al final, y luego puedo decir print, sí, empieza con un dígito Si por alguna razón no lo hace, puedo decir más e imprimir. No, no
empieza con un dígito. Bien, así que sigamos adelante y veamos. Entonces en este caso, podemos
ver que comienza como un dígito, por lo que debería devolver
la declaración aquí. Sí, empieza con un
dígito ya que es cierto. Así que vamos a ejecutar esto
y ya podemos ver aquí. Dice, sí,
empieza con un dígito. Ahora déjame cambiar y quitar
los tres y solo decir, empareja en una canasta y correr. Ahí va a sacar aquí
el enunciado
que, claro, dice que no, no
empieza con un dígito. Bien. Así es como también podemos
usar la función match. Ahora bien, cuando estamos trabajando
con expresiones regulares, hay muchas funciones
que vienen con R E, pero esto es solo un poco de tés ae para que puedas tener
una comprensión de las expresiones
regulares y cómo puedes aplicarlas de acuerdo a un patrón dado que decidas establecer en tu propio código. Bien, chicos. Entonces eso es todo para este ejercicio
práctico particular.
14. Impresión de valores múltiples: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en imprimir múltiples valores.
Echemos un vistazo. Derecha. Ahora, cuando estamos
imprimiendo múltiples valores, lo que puede hacer es utilizar la concatenación de
cadenas
y la concatenación de cadenas es esencialmente el
proceso de combinar múltiples Ahora, la forma
más común concatenar
cadenas es usando el operador plus y luego agregar espacios entre sus
cadenas para Ahora, lo que también puedes
hacer es usar una coma en su lugar dentro de
tu función de impresión, y luego puedes mostrar
múltiples valores, y esto automáticamente va a agregar esos espacios por ti, y esto puede hacerlo mucho más legible y también
ahorrarte algo de tiempo Entonces déjame mostrarte gráficamente
lo que quiero decir con esto. Entonces digamos, por ejemplo,
tenemos este programa. Muy sencillo. dos variables que
hemos definido aquí, nombre y
apellido,
tomando en su nombre y apellido, por
supuesto, John y Doe Entonces lo que necesitarás hacer
normalmente es crear
otra variable. En este caso, el nombre completo
sería apropiado. Y luego para combinar
nombre y apellido juntos, lo que tendrás que hacer es
decir nombre y luego
más y luego agregar en el espacio con comillas
y luego más otra vez, y luego el apellido. Eso va a
combinar a John y hacer juntos y también
dejar un espacio entre ellos ya que agregaste
en esas dos citas. Como puede ver, está
agregando el operador plus
aquí para la concatenación de cadenas Cuando imprima el nombre completo, va a imprimir John
space do en un bonito formato. Sin embargo, esto puede ser un
poco tedioso
dependiendo de la situación
y el contexto Una manera más fácil sería simplemente
seguir adelante y agregar en su
función de impresión y luego simplemente agregar
directamente su
nombre y apellido juntos, separarlos por una coma, eso también va a imprimir exactamente
el mismo resultado en una menor cantidad de código
que haya estado en su lugar Entonces eso es algo que
quería mencionar aquí que si estás imprimiendo tus valores y
están siendo de salida, también
puedes hacerlo
mucho mejor y más fácil
para ti mismo si solo
agregas una coma dependiendo de ciertas
circunstancias Ahora, hay algo más que quiero
mencionar sobre este tema. Entonces, para asegurar que te
sientas más cómodo con el
uso de ambas opciones, voy a usar tanto
el operador plus para la concatenación de
cadenas como también coma a lo largo Bien. Ahora bien, la razón por la
que estoy haciendo esto es solo para ayudar a solidificar tus habilidades con el
aprendizaje de cosas nuevas, y para aplicar todo para
que puedas aprender
más Así que solo quiero, ya sabes, desafiarte un
poco solo a, ya sabes,
realmente enfocarte en las
lecciones que tenemos a mano y a sentirte cómodo no
solo con usar un tipo de método, sino también sentirte cómodo siguiendo otros
métodos también. Entonces en este caso, seguir la
concatenación de cadenas, reconocerla, aplicarla Y luego en otro contexto dado, para ser como, Bien, en este caso, necesito usar una coma o tengo
ganas de usar una coma, pero también lo entiendo Entonces esto es solo un
poco de mi perspicacia en términos de cómo debes ir
imprimiendo tus valores y demás. Lección muy sencilla,
¿debería decir? También voy a dar
seguimiento a esto con un breve
ejercicio práctico también. Es muy fácil, pero solo
quiero que practiquemos y nos
pongamos cómodos trabajando en
otros métodos y técnicas.
15. Trabajar con diferentes resultados - [Laboratorio]: Hola a todos. Bienvenido al
próximo ejercicio práctico de laboratorio, que va a estar
enfocado en imprimir múltiples valores. Solo vamos a hacer un
poco de práctica sobre cocnación de
cadenas y también cómo
podemos utilizar una coma en el contexto
apropiado también, solo para guardarnos algunas líneas de código y tal y también para mejorar la legibilidad de
nuestro Empecemos. Para empezar
, lo mantendremos sencillo. Diré nombre de primer
subrayado, igual, diré honor, y
diré apellido subrayado, y diré Pretorio Bien, entonces con la
concatenación de cadenas, sería mejor entonces en este caso dado
definir otra variable, a que me referiré
como nombre completo igual, y luego diré primero nombre de
subrayado Entonces estoy usando el
operador plus y luego agrego en un espacio con las
comillas designadas plus nuevamente, y luego quiero agregarle
un apellido, así que no va a mostrar
ningún espacio Pretoris Entonces puedo decir imprimir. Y voy a incluir el
nombre completo aquí dentro del paren ss y eso va a imprimir en un Pretorius
en Ahí lo tenemos. Como podemos ver, está imprimiendo
lo
siguiente y mi nombre completo. Ahora, digamos que no quiero agregar en una
concatenación de cadenas y quiero que esto sea mucho más simple
con menos líneas de código Solo puedo quitar lo siguiente y solo decir en la
función print dentro de príncipes, primero underscrena
seguido de una coma y luego decir último undersCun y
ejecutar el código e imprime exactamente el mismo resultado
y salida en el salida Puedes ver lo fácil
que es que te ahorra mucho tiempo. Pero claro, también
depende de la situación. Sigamos adelante y eliminemos esto. Vayamos por otro ejemplo. Digamos que tenemos a Siti y aquí voy
a decir Ciudad del Cabo Y vamos a tener país, y voy a decir Sudáfrica. Entonces tengo dos variables definidas. Así que tengo eso en su lugar. Ahora lo siguiente que
voy a querer seguir adelante y hacer es especificar una variable aquí. Así que puedo simplemente seguir adelante
y decir ubicación, es igual, y puedo decir ciudad más, agregar en el espacio, más, y voy a tener país. Entonces puedo decir ubicación de impresión. Ejecutar el código, Ciudad
del Cabo Sudáfrica. Todo bien. Ahora, veamos si
podemos simplificar esto con solo usar una coma, así podemos simplemente eliminar siguiente y solo
podemos decir print Ciudad seguida por país. Ejecuta el código, y luego
tenemos Kick towns of Africa. Entonces ahí vamos. También hemos guardado algunas líneas de código
allí también. Muy bien, para que veas
que es mucho legible en este ejemplo cuando
estamos usando una coma Bien, bien, vaya. Así que eso es todo para este práctico ejercicio de
laboratorio. Es bastante corto, pero solo
quería darte un
poco de práctica aquí. Así que ten en cuenta aquí, mira el programa en el que
estás trabajando y los contextos y luego decide lo que sientes que
será apropiado. Bien, vete. Entonces eso es todo para este ejercicio práctico de laboratorio.
16. Enunciados de casos de coincidencia: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en las declaraciones de casos
coincidentes.
Entonces echemos un vistazo. Entonces probablemente te estés
preguntando, Bien, ¿qué es un matchcase Entonces, una declaración match ka funciona
como una sentencia switch en Java y C si tienes alguna experiencia con esos
lenguajes de programación. Entonces, esencialmente, esta sentencia
MatchK
va a verificar un valor
contra varios casos, y luego lo que
va a hacer,
va a ejecutar entonces el bloque coincidente
que encuentra en aquellos casos
que ha coincidido Ahora bien, a diferencia de la declaración I ELF
que tenemos en PySon, va a ofrecer una coincidencia de patrones
más limpia y legible Entonces es muy similar
a los condicionales I, podría decir, hasta
cierto punto, por supuesto,
ahora, también puede hacer coincidir listas, tuplas y objetos, y no solo
números aleatorios y cadenas Entonces podemos ver que
hay un rango muy grande cuando está utilizando
una declaración de caso coincidente. Ahora, déjeme seguir adelante y explicar
esto en un formato visual, así tendría más
sentido entender. Entonces aquí hay un ejemplo práctico. Digamos que queremos hacer un programa de verificación de color muy simple. Por lo que queremos comprobar a qué se
le asigna color y tal. Entonces aquí en este programa, podemos ver que el color que se
ha asignado es el rojo. Entonces vamos a estar utilizando la declaración de coincidencia aquí. Entonces vamos a
igualar
según el valor del color. Ahora, el color es
rojo. Entonces vamos a tener casos individuales. Entonces primero, tendremos
nuestro partido para el color. Entonces vamos a tener un caso y este caso puede ser cualquier cosa. Entonces en este caso, el caso va a ser rojo. Y si el color coincide la caja del rojo
según su valor asociado, entonces va a
imprimir el color es rojo. Podemos tener otro caso
aquí que sea azul para comprobar si el
color designado es azul, y también tenemos un tipo especial de frase clave aquí donde tenemos en caso
y luego subrayado El subrayado es muy similar a una declaración en si condicionales Si el caso está
arriba, no aplique, entonces va a imprimir
otra opción aquí, que va a
ser de color desconocido. En este caso, tenemos rojo, y estamos poniendo en
dos casos separados para comprobar si el color
es rojo o azul. Ahora bien, si por ejemplo,
el color es verde, morado, gris, etcétera, entonces
va a ejecutar
el bloque
asociado al subrayado del caso y va a
imprimir color desconocido Intenta ver las similitudes
con las declaraciones I Elef y L en Python para tener una idea aproximada de
cómo funciona este caso de coincidencia Todo bien. Muy bien chicos. Eso es todo para esta lección
teórica sobre las declaraciones del partido K. Vamos a tener un ejercicio
práctico de laboratorio, vamos a bucear
más profundo y aprender haciendo.
17. Trabajar con declaraciones de casos de coincidencia: [Laboratorio]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que se
centrará en trabajar con
declaraciones de casos coincidentes en Hyson Así que comencemos. Mantengamos nuestro primer programa muy sencillo. Voy a definir una variable, y voy a llamar a este color, y voy a asignar eso
al color del rojo. Entonces quiero
armar mi caso de partido. Entonces voy a decir partido. Y quiero que esto
esté basado en el color. Entonces voy a estar
emparejando colores. Y después quiero
precisar los casos. Los casos van a ser
los valores explícitos que se
pueden asociar con la variable que se está
emparejando aquí, en
este caso, el color. Entonces podemos decir caso, por
ejemplo, rojo, colon. Y entonces si el valor del color
coincide con el caso del rojo, entonces podemos imprimir una
declaración aquí y decir print el color es rojo. Ahora, digamos, por ejemplo, el color es el azul. Entonces voy a decir caso, y vamos a
manejar si es azul. Entonces diríamos print,
el color es azul. Ahora, digamos por el bien del
argumento, el valor asociado no
es rojo ni azul, y queremos atender
a cualquier otra cosa. Entonces es
como una declaración. Podemos decir caso, subrayado, dos puntos, y luego
podemos decir imprimir El color no es rojo ni
azul. Eso podemos decir. Bien, así que
tenemos eso listo. Ahora bien, si echamos un vistazo
aquí a nuestro código, podemos ver que la salida
aquí, eso es correcto, será el color es rojo porque el caso aquí se establece en rojo, y eso coincide con
el valor de lo estamos emparejando valor asociado. Entonces si ejecuto este código, podemos ver aquí
que esa salida al final
el color es rojo. Ahora déjenme cambiar esto a azul. Guarde mi código y ejecútelo. Ahora, dice que el color es azul. Ahora, permítanme poner en un color diferente que no
sea rojo ni azul, esencialmente lo que
va a pasar entonces es el caso aquí con este subrayado
especial, entonces
va a desencadenar y sacar la
siguiente declaración, que es el color no
es rojo ni azul Déjame cambiar esto a
verde, por ejemplo, y ejecutar el código,
y va a decir que el color
no es rojo ni azul. Bien. Entonces así es como
podemos implementar una declaración de
caso de coincidencia muy simple y cómo podemos integrarla. Todo bien. Entonces así es como podemos seguir adelante y
configurarlo en consecuencia. Lo que quiero que hagamos ahora es que vayamos un poco
más allá y quiero creamos un programa que
va a tomar un valor de entrada. Entonces vamos a
ingresar un
valor específico y luego el caso saldrá de acuerdo con
el valor que hayamos
ingresado por los casos que hemos configurado en
la sentencia match. Bien, así que vamos a continuar
y crear un programa que vaya a comprobar de
dónde es alguien. Dónde se basa la nacionalidad. Entonces voy a crear una
declaración de impresión simple, antes que nada, así que voy a decir print, y
voy a plantear una pregunta. Entonces voy a decir, de dónde eres. Bien, muy sencillo. Entonces queremos hacer uso de una función de entrada
que va a ser asignada a una
variable conocida como país, y vamos a hacer coincidir país en nuestras declaraciones de
casos coincidentes. Entonces voy a decir
país es igual, y voy a decir entrada,
así como así. Entonces podemos seguir adelante y
configurar nuestras declaraciones de casos de coincidencia. Entonces voy a seguir adelante
y decir match country. Y luego voy a
meter algunos casos. Entonces voy a decir caso, y predigo que tendremos
Sudáfrica, por ejemplo, entonces el
resultado de impresión aquí será, usted es de Sudáfrica. Voy
a ser un poco descarado aquí, y no quiero seguir
teniendo diferentes casos Sólo voy a tener
algo así como un caso se. Entonces voy a decir caso, subrayado, dos puntos, y
voy a decir imprimir aquí No eres de
Sudáfrica. Es muy sencillo. Como puedes ver,
vamos a tener una consulta que va a estar
en la salida que dice, de
dónde eres
cuando ejecutamos nuestro código. Entonces vamos a tener ingresar el país del
que somos, y ese valor que ingresamos se
asignará
al país variable. Entonces vamos a aplicar
esto a nuestro caso de partido aquí. Vamos a decir
match country. Entonces el primer caso
que vamos a verificar es si el usuario ingresó Sudáfrica. Si lo hicieron y
coincide con entrada, vamos a imprimir tú
eres de Sudáfrica y si ese usuario ingresó
algo más, va a decir que
no eras de Sudáfrica. Bien, ahora, lo que vamos
a querer hacer en este caso, es que vamos a querer ejecutar el PysonFle y no Ahora, con el código Run aquí
con el corredor de código, ¿de acuerdo? No va a funcionar tan bien porque run code solo nos
da salida, sino porque tenemos una entrada que queremos
introducir en algunos datos, no
tenemos más remedio que
seguir adelante y ejecutar el archivo PySon, pero volveremos a cambiar esto cerca
del final. ¿Bien? Entonces voy a decir ejecutar PysonFle que va a dar salida a
esta consola de depuración aquí Y ahí dice,
¿de dónde eres? Bien, entonces aquí,
sólo voy a decir, Sudáfrica, dice, Eres de Sudáfrica. Entonces es imprimir lo que
tenemos configurado aquí. Bien, así que sigamos adelante y volvamos a ejecutar el programa y esta vez, lo que voy a
hacer es que voy a poner algo que sea
diferente a Sudáfrica. Entonces voy a ejecutar
el programa otra vez. Y dice, claro, de dónde eres. Entonces aquí, esta vez,
voy a decir USA. Entra y dice,
No eres de Sudáfrica. Entonces evalúa este
resultado aquí donde dice, no
eres de
Sudáfrica en este caso, porque este caso aquí de
Sudáfrica es falso Bien. Entonces así es como esencialmente podemos ir a una cobertura e integrar esta
funcionalidad, para que también podamos probar de acuerdo con los valores de
entrada y utilizar
nuestros casos en consecuencia Bien, chicos. Entonces, eso es todo. Todo lo que quiero hacer ahora es
cambiar esto para ejecutar código, y solo podemos detenerlo
por ahora. Ahí estamos. Bien, entonces ahora vamos a
tener código de ejecución, y solo podemos realizar una prueba simple para
asegurarnos de que eso está bien. Sólo voy a decir nombre sano. Entonces hagamos una prueba final aquí, y vamos a
decir caso de nombre de coincidencia, podemos decir John.
Podría decir imprenta. Hola, John, y luego voy a
decir el caso aquí y eso va a ser honor
y voy a decir honor impreso. Entonces si no es ninguno de ellos, solo
podemos decir
imprimir hola, amigo. Bien, así que sigamos
adelante y asegurémonos de
que estamos ejecutando código, y
ahí lo tenemos. El resultado aquí es alto no, porque eso es
lo que establecemos aquí como valor
asociado.
Muy bien, chicos. Entonces eso es todo para este ejercicio de laboratorio en particular sobre cómo puede usar las declaraciones de
coincidencia K. Como pueden ver, es
muy similar a nuestras declaraciones I ELF y s. Sin embargo, hay un
poco de diferencia, pero es muy útil, y definitivamente recomendaré utilizarla en tus
programas si puedes. Bien, así que eso es todo para
este ejercicio práctico de laboratorio.
18. Módulos: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en los módulos. Ahora, con los módulos aquí, esto va a ser una especie
de lección
de actualización, bien, ya que es un poco amigable para principiantes, se podría decir, pero sí quiero profundizar
un poco más en los
ejercicios prácticos de laboratorio cuando me
voy a centrar en
crear tus propios módulos y luego también usar los módulos
incorporados de Pierson Entonces solo quiero mencionar el por adelantado para
que estés enterado Bien, entonces módulos. Entonces como repaso, solo
quiero
pasar por lo básico Entonces un módulo es esencialmente una extensión PysonFle
punto PYS que almacena funciones, variables y clases para
su reutilización en otros archivos,
muy similar a una caja de herramientas, se podría decir,
en términos de una perspectiva de Ahora, en lugar de repetir código, puedes definirlo
en un módulo y acceder a él siempre que lo necesites. Ahora, lo que también puedes hacer es crear tus propios módulos o puedes ingresar los integrados que vienen con PySon por defecto Ahora, en esa nota, una lista completa de todos los módulos
PySon integrados
en puede encontrar
una lista completa de todos los módulos
PySon integrados
en la siguiente URL, y esto es algo
que voy a profundizar
brevemente
en la siguiente lección Pero yo sólo quiero
hacerte consciente aquí. Entonces, lo principal a tener
realmente en cuenta, aparte de la definición de un módulo es que
puedes crear tus propios módulos o
puedes usar los módulos integrados que vienen
con PySon por sí mismos Bien, así que eso es
todo lo que quiero mencionar en los módulos desde un punto de vista
teórico
19. Navegación por el índice de módulos de Python: Hola a todos. Bienvenido
a la siguiente lección, que va a ser una lección muy
corta solo para darte un descuido sobre el índice del módulo
PySon Ahora bien, esto es algo
que mencioné en la lección anterior
cerca del final cuando quieres
profundizar en todos los módulos
integrados que vienen
con PySon fuera de la caja Aquí está el índice PySon Module. Aquí puedes leer todo sobre
el módulo PySon incorporado. También quiero
darles algo de claridad en una lección previa
que cubrimos donde usamos un módulo específico. Si recuerda en la lección de expresiones
regulares y más específicamente en el
ejercicio práctico de laboratorio para ese tema, utilizamos el módulo RE
para expresiones regulares. Técnicamente aquí,
si tuvieras que
seguir adelante y escribir
RE, puedes decir ir,
y luego puedes
desplazarte hacia abajo en este
glosario y aquí
puedes ver que tenemos este módulo
RE PySon aquí,
la operación de
expresión regular,
y puedes por supuesto, dar seguir adelante y escribir
RE, puedes decir ir, y luego puedes desplazarte hacia abajo en este
glosario y aquí
puedes ver que tenemos este módulo
RE PySon aquí, la operación de
expresión regular, click en Puedes leer más sobre ese
módulo que utilizamos, que es un
módulo Python incorporado, no uno personalizado. Sólo un poco de información que quería
compartir con ustedes. Así es como también puedes leer un poco más para aquellos
que estén interesados en simplemente navegar un poco a través de algunos de los conceptos
y módulos disponibles.
20. Integrar módulos personalizados e incorporados: [Lab]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en trabajar con métodos
personalizados y
también métodos incorporados. Así que sigamos adelante
y comencemos. Ahora, lo primero que
quieres hacer para crear tu primer módulo en Python es que quieres
dirigirte a Explorer, y luego puedes ver en el lado izquierdo que
tienes tus proyectos. Entonces mi proyecto, y dentro de eso, tenemos nuestro archivo principal dot py. Ahora queremos almacenar la funcionalidad dentro de
nuestro módulo en otro archivo. Ahora bien, dependiendo de la lógica
que tengas en el archivo Said, lo mejor sería mantenerlo apropiado a lo que
planeas poner
en el archivo Said. Entonces voy a pasar el cursor sobre mi proyecto aquí
y decir nuevo archivo, y voy a llamar a
este saludo punto pi Ahora puedes ver que tengo una pila de puntos de saludo y un archivo py de punto principal
dentro de mi proyecto. Entonces comencemos. Todo bien. Ahora bien, lo primero que
vas a querer hacer es definir alguna lógica. Quiero crear una
función que diga hola. Voy a decir sordo y decir,
decir subrayado, hola,
y luego agregar un codón Así es como vamos a
definir una función, y luego podemos simplemente
decir return y
podemos decir hola, no, por ejemplo. Entonces
definamos también una variable aquí en este archivo mientras nosotros addi Aquí voy a decir saludo
favorito subrayado, y aquí voy a decir,
bienvenidos. Muy sencillo. Entonces aquí, hemos definido
nuestro archivo de saludo punto pi, y esto podrías
tratar como tu módulo. Ya que un módulo, por supuesto, va a ser un PysonFle
existente cual va a tener, por
ejemplo, funciones,
clases, etcétera,
métodos, todo en módulo
S en Ahora queremos hacer
uso de nuestro módulo aquí y la funcionalidad que
hemos establecido en saludos punto pi. que pueda navegar hasta
su archivo dotp principal, y todo lo que necesita hacer
es decir Importar y luego referirse a ese nombre de archivo exacto Entonces aquí se llama saludo. Entonces voy a decir
saludo, y ahí vamos. Hemos importado con éxito nuestro propio módulo personalizado en pyson Ahora queremos que sea utilizable. Así que podemos utilizar nuestra
declaración impresa y decir print. Entonces quieres
referirte al modelo. Punto, y luego puedes referirte a la función
que definiste, que en nuestro caso
dirá subrayado, hola Se puede decir punto, digamos,
subrayado, hola. I paréntesis es donde lo
vas a dejar como está porque no hemos definido ningún parámetro ni
nada por el estilo, y eso va
a devolver hola o. digamos que quiero obtener el
valor de salida de bienvenida Solo necesitamos referirnos al nombre de
la variable aquí, que es
saludo favorito y solo puedes decir print y
puedes decir saludo,
punto, y luego puedes decir saludo de subrayado
favorito Eso va a dar salida al valor asociado a dicha variable. Ahora si ejecutamos el código, vamos a ver que dice
bienvenido no y bienvenido. Está devolviendo lo que
definí en mi función y también va a
imprimir el valor de la variable asociada que se
definió anteriormente. Bien, así que esa es una forma
muy sencilla en la que
podemos ir a un seto y
configurarlo todo. Pero digamos que queremos ir
un poco más en detalle, queremos que esto esté un
poco más involucrado. Para que podamos eliminar estas líneas. Vuelve a saludar,
y cambiemos esto un poco. Se puede quitar eso. Lo que quiero hacer es que quiero
mantener la misma
función, saludar, pero quiero
pasar por un parámetro aquí. Voy a decir nombre y luego con la
declaración return aquí, voy a usar cadenas F. Voy a decir F
y voy a
saludar y luego
voy a agregar en un marcador de posición
que será nombre Vamos a pasar por el argumento en
nuestro archivo Pi principal, que luego va a
apoderarse de nombre aquí, que luego se va a pasar a este marcador de posición para nombre Bien. Entonces podemos tener otra función
para decir adiós, así puedo decir sordo,
digamos, subrayado, bueno Adiós. Volveremos a decir nombre. Retorna, y tendremos una
cadena F que diga Good Bye, agrega tu marcador de posición, y tendremos Name.
Así como así. Entonces ahora si vamos a
nuestro punto principal por archivo, lo que podemos hacer es muy similar a antes.
Podemos decir imprimir. Y nuevamente,
vamos a referirnos a nuestro módulo personalizado
que es el punto de saludo. Y claro, nuestro nombre de
función dirá subrayado hola, digamos,
subrayado Y ahora vamos a
pasar por un argumento, que va a sustituir
nuestro parámetro aquí, y luego va
a caer en esta declaración return el marcador de posición para
lo que hemos definido Entonces vamos a definir
el argumento ahora, y aquí voy a decir Jack. Entonces voy a ir a
la siguiente diapositiva y
decir imprimir saludo,
punto, decir, y el nombre de la función era decir subrayado, adiós Voy a decir decir
subrayado, bueno, adiós. Y aquí, sólo
voy a decir, Katie. Nuevamente,
va a ocurrir el mismo proceso. Vamos a invocar esa
función y pasar por encima del argumento y
sustituirlo por el nombre aquí, el parámetro name, y
luego pasarlo a la sentencia return
dentro del marcador para decir adiós, Katie Así que vamos a ejecutar esto ahora, así que debería decir hola Jack y adiós Katie ya que hemos pasado los argumentos
aquí dentro. Vamos a ejecutar este código. Y como podemos ver, dice, Hola Jack y adiós
Katie. Todo bien. Entonces así es como
podemos trabajar y agregar en nuestros propios módulos. Ch. Así es como podemos seguir
adelante y configurarlo. Podemos simplemente mover eso y
vamos a eliminar este archivo, así que podemos simplemente hacer clic derecho en Greeting dot pie y decir eliminar. Y D ahora estamos trabajando con
nuestro archivo principal punto Pi otra vez. Bien, entonces eso es módulos personalizados. Digamos que puedes crear
tus propios módulos personalizados. Ahora, digamos que queremos
trabajar con módulos integrados. Así que ya has aprendido
antes cuando estábamos utilizando el módulo RE cuando estamos trabajando con expresiones
regulares. Ahora, sólo voy
a mostrarte un
poquito más solo para
darte una idea. Así que construido en los módulos es Python. Podemos utilizar el módulo de masa. Entonces voy a decir importación masiva. Y digamos que quiero obtener la raíz cuadrada de
un valor particular. Entonces aquí voy a
decir, el número equivale a 16. Entonces puedo decir print, refiérase al módulo de masa, y quiero utilizar la función de raíz
cuadrada, y quiero obtener
la raíz cuadrada del número que
acabo de configurar aquí. Quiero obtener la
raíz cuadrada de 16 esencialmente. Entonces ahora si ejecuto esto, va a decir cuatro, 4.0. Así que tenemos ese derecho. Bien, así es como podemos utilizar el
módulo masivo, por ejemplo. Digamos que queremos sacar
un número aleatorio 1-10. Entonces, lo que podemos hacer por
eso, esencialmente, es que podemos seguir adelante y
utilizar el módulo aleatorio. Entonces voy a
decir importar al azar, y luego voy a decir imprimir. Entonces vamos a referirnos
al módulo random, y luego random tiene
una función rand int. Así que genera un
entero aleatorio entre, por
supuesto, los
parámetros que establecemos. Entonces podemos decir rand int, la función rand int, y luego queremos decir entre. Entonces quiero sacar un número
aleatorio entre, digamos, uno y diez. Entonces el mínimo, puede ser es uno y el
máximo, puede ser diez. No vas a conseguir 11, 12, 13, ni nada parecido al tipo. Si ejecuto esto,
va a decir seis. Ahora, digamos que
lo vuelvo a ejecutar, dice dos. Es así como podemos ver que esto va a generar
un número aleatorio 1-10. Todo bien. Este es el ejemplo de los módulos incorporados
. Todo bien. Eso es todo para este
práctico ejercicio de lámpara. Esperemos
que a estas alturas, comprenda
cómo puede crear sus propios
módulos y utilizar los módulos integrados en pyson
21. Paquetes, Pip y PYPI: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en paquetes,
PIP, y PY PI. Entonces
echemos un vistazo. Bien, entonces paquetes.
Ahora, en PySon, un paquete es una
carpeta que agrupa múltiples módulos PySon
para una mejor organización Ahora, lo que los desarrolladores
pueden hacer y lo suelen hacer es que
instalarían paquetes usando PIP de PYPI,
de lo contrario comúnmente conocido como el índice PysonPackage para
agregar funcionalidad
adicional a agregar funcionalidad
adicional Ahora bien, esto es muy permanente en áreas de desarrollo
web donde
los desarrolladores están utilizando frameworks web basados en
PySon como Jango o FLASK cuando se dirigen
a PYPI para instalar
un paquete específico para agregar
un pequeño toque de funcionalidad
a
sus a PYPI para instalar a FLASK cuando se dirigen
a PYPI para instalar
un paquete específico para agregar
un pequeño toque de funcionalidad También puedes utilizar esto en el programa pyson
normal, también muy pequeños con un script
Python Bien, entonces PIP y PYPI. Ahora, PIP es esencialmente una herramienta para instalar y
administrar paquetes PySon Esto ayuda a
facilitar la descarga y actualización de todas las
bibliotecas externas en lugar de codificar todo desde
cero con
muchos y muchos módulos
agrupados. Ahora, PYPI, que es el índice
PysonPackage, este es esencialmente
un repositorio en línea
que mantiene miles
de paquetes PySon, que podemos descargar y utilizar Ahora PIP obtiene paquetes de PYPI para que los puedas usar en tus
proyectos Bien. Bien, chicos, eso es todo en paquetes, PYPI y configurando todo de acuerdo con PIP también En el impuesto especial práctico de laboratorio, vamos a profundizar
y vamos a trabajar con algunos ejemplos para
mejorar nuestro programa
22. Cómo usar paquetes externos - [Lab]: Hola a todos. Bienvenido al
próximo ejercicio práctico de laboratorio, que va a estar
enfocado en trabajar con paquetes. Ahora bien, este es el
sitio web de PI al que puedes dirigirte a pypi.org y que te
llevará a este Aquí es donde puedes navegar por miles de
proyectos y cómo puedes implementar solo una
pequeña aplicación o biblioteca dentro de
tu PysonPject Este es el índice PysonPackage. También podemos buscar
proyectos aquí y luego integrarlos dentro de
nuestras aplicaciones PySon Derecha. El primero que voy a ver
va a ser sencillo. Quiero que agreguemos algunos
emojis a nuestro código. Al menos eso es lo que
vemos en nuestra ventana de salida. Lo que voy a hacer es
que voy a buscar imagen y buscarla. Bien. Y aquí tenemos uno. Entonces emoji, que es
el emoji para PySon. Y se puede ver
que podemos instalarlo diciendo perp stallimogi Derecha. Así que vamos a
querer introducir algunos comandos. Ahora, lo que vamos a
tener que hacer por ahora es que podemos cambiar para ejecutar el archivo
PySon solo por ahora Bien. Y aquí lo
tenemos todo aquí. Vamos a aclarar esto.
Bien, ahí vamos. Y lo que
también voy a hacer es simplemente cerrar algunas de
estas terminales aquí y reabrir Allá vamos y
despejamos Ahí lo tenemos. Aquí
está nuestra terminal ahora. Ahora podemos seguir adelante
y ejecutar algunos comandos. Digamos que queremos
instalar este paquete emoji. Podemos simplemente seguir adelante
y copiar lo siguiente, dirigirnos a nuestra terminal, y
por supuesto podemos, hacer clic derecho y se pegará automáticamente para usted. Podemos decir Pep
instalar Emoji. Bien. Y como puede ver
ahí, hemos instalado paquetes de precios
en el entorno global, lo que puede causar conflictos. Puedes seguir adelante y crear un entorno virtual para
aislar tu dependencia. Por lo que este es un tema que
entraremos en detalle más
adelante en este curso. Así que no te preocupes, vamos a
llegar a eso momentáneamente. Entonces solo podemos decir por
ahora no vuelvas a mostrar. Bien, así como podemos ver ahora en segundo plano y seguimos adelante e instalamos ese paquete Emoji. Ahí vamos. Entonces ya
podemos aclarar esto. Bien, perfecto. Entonces ya
tenemos eso instalado. Ahora vamos a seguir adelante
e integrar esto. Entonces aquí tenemos nuestro código. Ahora, lo que voy
a hacer es que voy a importar esas bibliotecas
en particular. Voy a decir importmoji y después queremos agregar
un emoji a nuestro texto Entonces por ejemplo, aquí voy a tener una declaración
que dice print, y voy a referirme
a ese módulo emoji, y voy a decir punto. Y tiene una función
conocida como emojis. Entonces es EMO J, I Z E. Y dentro de
esta función aquí, vamos a agregar lo que
queremos agregar en las
comprobaciones que queremos generar, junto con emote o emoji que
queremos emitir también Entonces aquí, por ejemplo, voy a decir que tu contraseña está lista. Derecha. Ahora lo siguiente
que harías es sumar en tus emerges. Puedes agregar en un espacio,
y luego los Imoges en
pyson se determinan agregando en dos puntos y luego el
nombre de tu emoji, voy a agregar en clave y
luego cerrarlo con Ahora, hay un sitio web
que puedes usar aquí en copy dm dot kitp dot IO Me referiré a este recurso
en particular en la siguiente lección, para que puedas echar un
vistazo aquí a todos
los emoges individuales Pero como se puede ver,
dictaron por los dos puntos a
cada lado y el nombre del valor
S justo en el
medio. Todo bien. Entonces eso es exactamente lo que
estoy haciendo aquí y lo
estoy configurando para una llave. Así que sigamos adelante
y ejecutemos nuestro código. Y aquí puedes ver que dice que
tu contraseña está lista. Así podemos ver que es agradable y limpio que también tenga
esa llave. Así que también puedo aclarar esto. Y permítanme establecer esto ahora para
verificar la marca de subrayado, guardar el archivo Y esta vez voy a
ejecutarlo manualmente. Voy a decir
Python. Pastel de punto principal. Y ahí puedes
verlo salidas, tu contraseña está lista. Así que muy limpio y muy astuto, podría decir. Y ahí vamos. Entonces así es como podemos
utilizar imágenes en PySon. Ahora, sigamos adelante
y agreguemos Vamos a agregar colores a nuestro terminal aquí, a nuestro texto y a nuestro texto de
salida también. Para que podamos volver
atrás. Y queremos buscar algo
conocido como ColorRama Para que puedas entrar aquí, ColorRama y luego puedes
seguir adelante y presionar Enter Por favor aquí lo tenemos, un texto de terminal
de color multiplataforma. Y queremos copiar
lo siguiente, diríjase a nuestra terminal, haga clic
derecho y diga Pep
y almacene ColorRama Es solo instalando, ahí
vamos. Se ha instalado. Vamos a
aclarar esto. Y lo que podemos hacer es ir a un seto
y quitar este código Bien, entonces queremos
ir a un seto y agarrar el módulo Clama para que
podamos decir desde Carlo Rama, así que ese es el
módulo, y queremos importar
las cuatro clases Entonces esto funciona como una clase. Y lo que
vamos a querer hacer es usar la sentencia print, y vamos a
seguir adelante y decir cuatro, que es la clase,
y luego vamos a especificar el
atributo de las clases. Entonces digamos que queremos que
nuestro texto sea rojo, simplemente
vamos a decir rojo. Entonces podemos decir más, y
luego aquí en nuestras citas de trabajo, podemos decir que este es texto rojo. Bien, así que sigamos adelante y
ejecutemos nuestro código PySnMin punto pi. Y ya se puede ver
que todo está en rojo. Entonces los cheques aquí que
hemos impreso están en rojo, y también el
color terminal también está en rojo. Entonces, si tuviera que aclarar esto, se
puede ver que ahora está en rojo. Digamos que quiero cambiar
esto a verde, por ejemplo, solo
puedo cambiar el
atributo aquí a verde. Guarda mi archivo, y solo puedo
decir Python main dot pi. Y ahí vamos,
podemos seguir adelante y ver ahora que
se cambia a verde. Sólo necesito cambiar ahí
el texto a verde, y ahí vamos, es texto verde. Bien, para que podamos ver que es verde. Vamos a poner esto en azul, azul, y vamos
a decir que esto es azul. Texto, pastel de punto principal de MSN, y este es texto azul. Bien, para que podamos ver así es como podemos cambiar esos colores. Puede ver qué tan
efectivo es
utilizar paquetes
dentro de sus programas. Volvamos al valor por defecto, que es, por supuesto, blanco. Entonces voy a decir que
este es texto blanco. Y puedes presionar
la flecha superior tu teclado para
buscar rápidamente los comandos PysmMinpi y luego
volvemos en Así que sólo podemos eliminar
eso. Ahí vamos. Vamos a usar otro
paquete que nos
va a permitir
generar una contraseña. Así que una contraseña segura, y vamos a determinar los caracteres que
queremos ins password. Entonces esto puede ser útil
si quieres
dar una lista de contraseñas
para que tu amigo elija si está luchando por elegir una contraseña
que sea segura. Así podemos buscar el
paquete y luego es PWN, así que contraseña Gen como
el término abreviado Aquí lo tenemos, PWGen y
podemos copiar lo siguiente, agregarlo a tu terminal, dar click
derecho y pegarlo
en y Enter Recuerda que el tiempo para la
instalación va a variar entre todos, así que no te preocupes si
lleva algún tiempo
instalar y todo para obtener el siguiente aviso de tipo. Se ha instalado, y sigamos adelante
y configuremos esto. Queremos importar
el módulo PWGen. Entonces lo que queremos hacer
es definir una variable, que voy a
establecer como contraseña, y luego voy a
agarrar el módulo PWGen,
y luego vamos a
referirnos a la función de PWGen que por cierto
también es el mismo Y aquí vamos a definir las longitudes para nuestra contraseña. Entonces voy a poner
esto en diez caracteres. Entonces voy a ir a la
siguiente línea y decir print. Voy a decir contraseña
generada, dos puntos, y voy a añadir en coma y luego referirme a la
contraseña que estoy viendo PWG generará
una contraseña aleatoria para mí asociada a esta salida variable y este texto va
a estar justo al lado de eso Entonces ahora sigamos adelante
y digamos pysonmin punto pi. Y aquí podemos ver la contraseña
generada. Entonces es una
contraseña generada al azar que se ha configurado. Entonces también son diez
personajes, así que uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez. Pongamos esto, por
ejemplo, a cinco. Vamos a ejecutar Python main dot pi. Y podemos ver que
tenemos una contraseña de sólo cinco
caracteres de longitud. Para que
veas cómo puedes
ajustarlo y cambiarlo como así te sientes. Entonces con este paquete, vas a
aprender cómo puedes generar una contraseña aleatoria. Todo bien. Entonces así
es como podemos seguir adelante y
configurarlo en consecuencia. Cierto, entonces lo que quiero hacer ahora es que quiero cerrar esto, y quiero usar
lo
que hicimos antes para poder hacer clic aquí
en icono y ejecutar código,
y queremos ahora solo
traerlo de vuelta a donde estábamos antes con
nuestro corredor de código, ya que no estamos ingresando nada ni instalando nada Bien, chicos. Eso es. Eso es todo para este práctico ejercicio de
laboratorio sobre cómo
podemos utilizar paquetes
y cómo podemos instalarlos y
cómo podemos
utilizarlos para integrar
su propio conjunto de funcionalidades
personalizadas a
nuestros proyectos y al albergue.
23. Recursos útiles: Hola a todos. Bienvenidos
a la siguiente lección, cual va a estar
enfocada en proporcionarte los enlaces
como se especifica que mencioné de la lección
anterior. Ahora, el primero
va a ser cómo acceder
a PyPi.
Es muy sencillo. Simplemente seguirías adelante
y teclearías pypi.org en tu URL y
eso te llevará al PysonPackage Index, que
te va a mostrar una lista de todos los
paquetes de bibliotecas de terceros bibliotecas de terceros que están
disponibles para ti, como los que
usamos anteriormente,
como PW Jen y Color Rama y Ahora en cuanto a los
Imoges que usé, claro, parecía estaba memorizando
o dirías, pero en realidad hay un
sitio donde puedes ver cómo los integrarías
utilizando el comando Pip in Ahora puedes dirigirte a la siguiente URL
aquí como puedes ver, copiar y luego DM y
luego 20 expedientes del
iOSmoGFDSlash Así es como también puedes acceder a
ese sitio web. Yo solo quería darte
un poco de claridad aquí en cuanto a los
recursos y los enlaces. Si quieres experimentar
más y agregar algunos emerge y
solo quieres practicar un poco y
mirar algunos de los paquetes que están disponibles para ti y solo
experimentar un poco, es como puedes seguir
adelante y hacerlo
24. Generar números aleatorios: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en generar números aleatorios. Entonces comencemos. Entonces, ¿cómo generamos números
aleatorios? Ahora, PySon, como saben, viene con muchos módulos
diferentes para generar números aleatorios Ahora, vamos a
explorar tres módulos. Ahora, el primer módulo por el que
ya hemos pasado, y ese es el módulo aleatorio. Y con este módulo, podemos generar números pseudo aleatorios También tenemos un módulo de secretos, y que crea números aleatorios criptográficamente
seguros Y también obtenemos el módulo
numpit Random, que genera
números aleatorios en matrices Entonces lo que vamos a hacer
es que vamos a aplicar nuestros conocimientos en una manera de
aprender haciendo. Así que sigamos adelante y
comencemos con los ejercicios
prácticos de laboratorio.
25. Profundizar en el módulo aleatorio - [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en generar números
aleatorios mediante la utilización tres
tipos diferentes de módulos. Así que vamos a utilizar
el módulo aleatorio. El módulo secrets y también
el módulo Num Pi también, que vamos a instalar dentro de nuestro dispositivo en su momento. Pero sigamos adelante
y comencemos con el módulo aleatorio, sigamos adelante y
explotémoslo tanto como podamos. Ahora bien, lo primero que
tenemos que hacer, por supuesto, es decir importar al azar para que podamos acceder a
las funciones necesarias. Y vamos a primero que nada, queremos dar salida a números
flotantes 0-1 Entonces podemos decir imprimir. Punto aleatorio aleatorio. Y esencialmente lo que
estamos haciendo aquí es que estamos llamando
al módulo aleatorio, y eso tiene una función que
va a imprimir flotadores Entonces, si tuviera que
ejecutar el código aquí, va a imprimir números
flotantes aquí 0-1, así que tendremos
números decimales como resultado de esta función aleatoria que es parte del propio
módulo aleatorio Podemos ver que cambia cada
vez a un número diferente. Ahora, digamos que queremos
generar un float aleatorio 1-10. En lugar de usar esta función
aleatoria, diríamos punto
uniforme y
vas a querer poner los
límites, digamos 1-10 Y puedes ejecutar este código. Ahora, eso va a imprimir números de punto
flotante. Entonces los flotadores son esencialmente números que tienen formato decimal, y va a ser 1-10 Ahora, va a
poder ejecutar 1.0, pero nunca correrá diez. Entonces, esencialmente, va
a ser todo 1-9 hecho real
en términos de
una especie de orden decimal Derecha. Ahora, sigamos adelante ahora e imprimamos enteros
aleatorios Acabamos de experimentar ahora con números
aleatorios de punto flotante o flotadores, como dirías, usando la función punto aleatorio y
luego la función uniforme Ahora, digamos que queremos
imprimir enteros aleatorios. Podemos usar la función
rand int, y digamos que queremos imprimir
los números 1-10. Bien, entonces esto va a
incluir tanto uno como diez. Entonces, con el rand en función, permitirá el límite
inferior y el valor del límite
superior. Vamos a ejecutar esto. Entonces
tenemos tres, seis, y podemos ver que es un
entero porque es el número entero el que
se está emitiendo nueve, seis, uno, ocho, tres, diez. Derecha. Ahora, digamos que queremos volver
a imprimir enteros aleatorios, pero queremos que esté
en un rango específico Ahora, digamos que
queremos imprimir 1-9, es
decir, quiero
también sacar nueve Seguirías adelante y lo
cambiarías de rand int, lo pondrías en rango rand. Ahora, la diferencia aquí es
que va a excluir a diez. Ahora, Rand Antes incluía
diez, pero en este caso, con el rango Rand se va a
imprimir desde el límite inferior, elija el
límite superior menos uno. Entonces, sigamos adelante
y ejecutemos este código. Sigamos adelante y
ejecutarlo. Ahí vamos. Notarás si ejecutas
esto bastantes veces, vas a notar
que nunca
va a dar salida a diez. Sin embargo, si
quisieras generar diez, técnicamente
necesitarías establecer esto en 11. Entonces, cuando ejecutes este código, eventualmente te dará al
menos la oportunidad de
imprimir diez. Sólo algo para
que experimentes. Recuerde, el rand en la
función incluirá tanto los valores de
límite inferior como superior y el rango de Rand solo incluye el número de límite
inferior y luego el número del
límite superior menos uno. Así es como
va a funcionar eso. Hemos mirado los números de punto
flotante y los enteros aleatorios Ahora, sigamos adelante y veamos distribución
normal para
las estadísticas, por ejemplo. Si te interesan
las estadísticas o estás trabajando en esa luz, podemos utilizar el módulo
aleatorio y usar la función variable normal y podemos
pasar por cero y uno Ahora, va
a tomar una media y la desviación estándar es lo que va a
estar ocurriendo. En este caso aquí,
la media será cero y la desviación estándar
va a ser uno. Si ejecutamos esto,
vamos a ver cuál la variación estándar normal va a ser
la variación estándar normal cada
vez que ejecutemos. Todavía va a ser aleatorio
porque es un módulo aleatorio. Pero como podemos ver así es como
podemos seguir adelante y utilizar distribución
normal con una
media y una desviación estándar. Derecha. Ahora, sigamos adelante y apliquemos esto cuando estemos
trabajando con listas. Para que podamos eliminar esto. Voy a crear una lista aquí y voy a decir autos, iguales, y voy a
establecer una lista de autos. Voy a decir BMW,
voy a decir Tesla. Voy a decir Ford, y el último, puedo configurar Nissan. Tengo mis tarjetas en su lugar. Ahora, lo primero que
quiero mostrarte es cómo
puedes elegir un
elemento o elemento aleatorio de esta lista. Para ello, se puede decir
print y queremos
hacer uso del módulo
random y hay una función
llamada choice. Vamos a aplicar
elección a esta lista aquí. Y esencialmente lo
que va a pasar aquí, va a imprimir un elemento
aleatorio de esta lista. La función
de elección de puntos te permitirá
elegir un elemento aleatorio de la
lista que hayas definido. Entonces, si ejecuto el código, vas a ver
Tesla, Tesla,
BMW, Tesla, Nissa,
va a ser completamente aleatorio cada
vez que hagas clic en él Bien, así es como puedes utilizar esta función
en particular. Ahora, digamos que quieres seguir
adelante y elegir dos elementos
únicos. Así que no quieres seguir seleccionando
solo una
opción cada vez. Desea seleccionar dos elementos
únicos cada vez. Entonces puedes ajustar esto, y en lugar de
decir opción de punto, usarás la función de
muestra. Va a enchufar la
lista y después dos. Entonces ahora, vas a escoger dos elementos únicos
de esta lista. Entonces, si fuéramos a ejecutar el código, podemos ver que tenemos Ford Tesla. Tenemos BMW Tesla, Ford Nissan, Tesla Nissan,
y vas a ver aquí, solo
va a seguir
adelante y sacar dos elementos aleatorios o
artículos de la lista dada. Entonces ese es todo el propósito
de la función de muestra. Si quisiera seleccionar
tres, por ejemplo, cada iteración, solo puedo
reemplazar eso, guardar mi código, y ejecutarlo ahora
va a aparecer en tres eligiendo aleatoriamente qué elementos sacar y muestrear Ahora bien, algo interesante que quizás
quieras investigar aquí es el hecho de que estás usando la función de muestra de puntos y estás enviando
tres o digamos, por ejemplo, dos, nunca
va a mostrar elementos duplicados. Entonces como podemos ver
aquí, si pongo dos, muestra Nissan y Ford. No va a
mostrar, por ejemplo, Nissan Nissan, Ford
Ford, Tesla, Tesla,
BMW, BMW, no va a demostrar
que siempre va a seguir adelante y mostrar
algo que es único. Entonces, si tuviera que volver a
ejecutar el código aquí, siempre
va a mostrar
algo que es único cada vez que
ejecutes tu Bien. Entonces solo algo que
quería mencionar en esa nota. Otra cosa que
puedes hacer es que también
puedes barajar tu lista Ahora bien, si tuviera que
seguir adelante y sacar mi lista, si solo digo imprimir
autos y correr, manguera BMW, Tess a
Ford, y Nissan Bien, entonces si vuelvo a ejecutar esto, lo va a hacer
en el mismo orden, pero digamos que quiero
barajar esta lista Entonces lo que puedes
hacer es lo siguiente. Puedes decir print, y
aquí dentro de la función, puedes decir aleatorio dot shuffle, y puedes poner esa
lista de la siguiente manera Entonces esta función va a barajar el orden de lo que
se incluye en la lista Entonces no será cada
vez que ejecutes BMW, Tesla Ford Nissan,
así que si lo ejecuto, bien, vas a ver que
va a funcionar en el no estado. Ahora, la razón de
esto es que necesitas
barajar la lista antes de
ejecutar tu función de impresión Entonces algo que
quería mencionar aquí. Entonces hay que hacer
esto por separado. Como está, déjelo barajar
y luego imprimirlo. Entonces esta función en particular funciona un poco diferente. Vas a tener que
dejarlo solo. Ahora, antes cuando te
estaba mostrando,
puedes incluir todas
las funciones
y los módulos juntos en la declaración de impresión
e imprimir el resultado. Sin embargo, al barajar
la función aleatoria, funciona por sí sola Entonces aquí tendríamos que decir
explícitamente autos después. Entonces cuando ejecute esto, va
a decir BMW Nissan Forte, y se puede ver que baraja
los artículos como podemos Aunque no se puede hacer
dentro de una función de impresión. Entonces un
punto muy importante a tener en cuenta. Y como viste antes,
vas a tener un resultado de ninguno. Entonces esto es algo
importante que debes tener en cuenta. Entonces, con la mayoría de los módulos y
funciones que desea usar, puede agregarlos en una función de impresión, pero
si está barajando, debe ser explícitamente por sí
solo con la
función aleatoria en sí, y luego puede imprimir después para que
baraja la lista, y luego pueda Bien, entonces solo algo
importante para recordar. Entonces va a
modificar el lugar. Bien. Genial. Ahora, sigamos adelante y veamos
algunas funciones más. Ahora, digamos, por ejemplo, quiero que aparezcan
elementos aleatorios, y también quiero que
se repita, también. Entonces no quiero que
sea en una como puedo decir una situación particular donde
tengamos los duplicados, pero también quiero
permitir que tenga alguna
repetición en su lugar Entonces sigamos adelante
y hagamos precisamente eso. Entonces tenemos nuestro nido, y
podemos eliminar lo que tenemos aquí, y solo podemos decir
print random dot, y vamos a decir
opciones esta vez. Recuerde que antes teníamos elección, lo que significa elecciones únicas. Podemos tener múltiples
opciones, y vamos a decir autos, y esa va a ser la lista que se
va a agregar, y vamos a decir K es igual, y podemos establecer eso en dos. Alr. Entonces eso es lo que
queremos agregar. Y esto puede devolver valores
duplicados. Entonces, a diferencia de antes, cuando
fuimos a una cobertura y configuramos nuestra muestra
con una función de muestra, no
puedes tener duplicados, pero con la función choices, puedes tener duplicados aquí Entonces por K es igual a dos, estamos especificando cuántos
elementos queremos generar. Entonces, si yo fuera a decir correr,
Nissan, Tesla Tesla. Entonces aquí puedes ver que va a mostrar dos elementos
de la lista, pero se puede repetir, para que puedas ver dos
de lo mismo. Entonces así es como se puede tener
algún tipo de repetición. Derecha. Ahora bien, lo siguiente
que quiero mostrarles es cómo pueden utilizar la función
triangular. Ahora, la función triangular es bastante única
porque va a devolver un flotador entre
bajo, alto y modo. ¿Bien? Y el modo es el pico de donde es más
probable que la salida esté más cerca. Entonces es muy similar a
redondear, se podría decir. Entonces déjame mostrarte
cómo podemos hacer eso. Para que podamos ir a un seto y
quitar lo que tenemos aquí. Y podemos agregar nuestra declaración
impresa. Y voy a decir punto aleatorio, triangular, esa
será la función. Y primero,
vamos a tener un flotador que queremos volver
en el punto bajo. El punto bajo será uno. El punto alto puede ser diez, y el modo o
pico puede ser cinco. Entonces, si tuviera que ejecutar esto, voy a ver que la
salida aquí, por supuesto, es un flotador, pero se puede ver que va a estar
más cerca del modo. Entonces uno es el punto bajo. Diez es el punto alto y cinco es el modo, es decir,
el punto más probable
en el punto más probable cuanto a dónde estará más cerca el
valor de salida. Entonces 6.0 más cercano a cinco,
5.1, básicamente cinco, 4.7 más cercano a cinco, 5.4, más cercano a cinco, 5.2, más cercano a cinco,
5.6, cerca de cinco. Entonces puedes ver ahí cómo eso está funcionando en su lugar. Derecha. Ahora bien, lo siguiente que quiero
mostrarles es bastante similar a la función normal
que usábamos antes. Ahora, digamos que estamos trabajando con simulaciones y queremos
simular mediciones del mundo real
con variación natural Podemos usar la función de gasa. Entonces también va a asimilar, ¿cómo puedo decir una media y una sigma para la desviación
estándar Entonces lo que harías es
que solo reemplazarías triangulart Gasa entonces
podemos pasar por cero y
uno como la media y Sigma, esto va a dar salida
normalmente al valor distribuido
alrededor de cero, se podría decir, si ejecuto esto, podemos ver
ahí va a dar salida a distribución asociada
mediante
el uso de la función gasa Mucho de esto se
basa en la estadística, la gasa triangular y las funciones variadas normales se utilizan principalmente en la
rama estadística, debería decir Pero es solo
algo que quería
mostrarles para que al menos puedan comprender
un poco
la salida y qué esperar. Derecha. Entonces ahí lo tenemos. Las cosas más importantes que quiero
recordarte aquí cuando estés
usando tus funciones de impresión, puedes operar tus funciones y módulos en la
misma función de impresión. No obstante, no se puede hacer
por el barajado, así que solo tenlo en cuenta Bien, bien, vete. Entonces eso es todo para
el módulo aleatorio. A continuación, vamos a seguir adelante y centrarnos en el módulo secretos.
26. Exploración del módulo secretos - [Laboratorio]: Bien, así que continuemos
con el módulo Secretos. Bien, entonces lo que quiero
hacer, en primer lugar, es importar el módulo Secrets. Y lo primero que queremos hacer es que queremos devolver un entero aleatorio que esté
por debajo de un número dado. Entonces lo que puedo hacer aquí
es que puedo decir print, y voy a utilizar
el módulo secrets. Entonces voy a usar la función
range below, y quiero imprimir
un número aleatorio 0-9 Y para hacerlo, solo
necesitaría poner diez. Entonces va a
imprimir todo 0-9, y no va
a incluir diez Entonces, si tuviéramos que
ejecutar el código aquí, podemos ver que tenemos ocho, tres ,
uno, ocho, notarás que no
va a imprimir diez, hará todo lo
demás que no sea eso. Otra cosa que podemos hacer es
que podemos ir a una cobertura y generar una elección específica también utilizando el módulo secrets Ahora, digamos por el bien del
argumento que
tenemos aquí una lista de códigos
sensibles. Voy a decir
códigos y en una lista, voy a poner en Alfa,
Beta, Gamma. Quiero recuperar una elección
aleatoria segura, per se. Puedo decir imprimir y referirme
al módulo secretos. Y entonces la función
que usaría es elección, y voy a poner en códigos. Entonces voy a recuperar una elección secreta. Se
podría decir o codificar. Entonces si ejecuto esto,
puedo ver que tengo Alpha. Cada vez que corra me va
a dar un nuevo código, así Gamma, Alfa, Beta. Todo bien. Entonces así es
como puedes elegir una elección aleatoria de
una secuencia dada. Bien. Ahora
lo siguiente que quiero mostrarte es bastante único para
el módulo secrets, y así es como puedes
generar un token hexadecimal seguro. Y esto, por supuesto, va
a tener 16 caracteres de largo. Entonces sigamos adelante y hagamos eso. Ahora bien, el valor que
pones se va a configurar, por
supuesto, en bytes. Entonces, claro, va
a ser el doble en nuestro caso. Bien, así que sigamos
adelante y hagamos eso. Entonces lo que podemos hacer es
simplemente decir print use el módulo secrets, y podemos utilizar la función token,
underscore hex, y vamos a decir ocho, y esto va a generar un token hexadecimal seguro que
tendrá 16 caracteres de largo Vamos a correr esto y
podemos ver aquí tenemos BA ED y este número entero, y eso va a
ser de 16 caracteres. Ahora, claro, si
solo tuviera que establecer este 24 y
ejecutarlo, sólo va a
imprimir ocho caracteres. Porque recuerden, estamos
estableciendo los bytes aquí, y esencialmente eso va
a seguir adelante y duplicarlo. Entonces, si tuviera que poner
cuatro aquí,
ejecutarlo, sólo me va a dar
una salida de token hexadecimal de cuatro. Esto puede ser muy útil si necesitas tokens
en algún sentido. Así es como puedes generar
un token hexadecimal seguro. Así es como podemos utilizar
el módulo Secretos, derecho. Ese es el módulo Secretos. Lo siguiente que
vamos a ver es el módulo NumPiy eso es
algo que
vamos a querer seguir adelante e instalar primero
dentro de nuestro proyecto Normalmente usamos el módulo Numpo para operaciones aleatorias rápidas, pero más que eso muy pronto
27. Profundizar en el módulo numpy - [Laboratorio]: Bien, así que continuemos. Ahora lo siguiente en lo que
nos vamos a
centrar es en el módulo Num Pi. Y esto también es muy útil para trabajar
con matrices también. Pero más sobre eso pronto. Entonces lo primero que
queremos hacer es que queremos
dirigirnos a PYPI y
queremos ver a Pep instalar Entonces podemos seguir adelante
y copiar esto, o en realidad puedes teclearlo en tu terminal y código de
Visual Studio. Y lo que voy a hacer
ahora es que solo voy a cambiar 30 Bug para ejecutar
PysonFle solo Podemos despejar esta salida. Y solo quieres
decir Pep install num Pi, y puedes presionar Enter. Bien. Y eso solo lo va
a instalar para nosotros. Bien. Vamos a ser pacientes
y darle un momento, y luego podemos continuar con la utilización del módulo
Num Pi. Bien, así que vamos
a darle algo de tiempo. Bien, para que podamos ver que
se ha instalado.
Podemos aclarar esto. Y ya no necesitamos eso. Cambiemos a ejecutar código, y ahí vamos. Derecha. Ahora, ahora que tenemos instalado
el paquete NumPI, ya
podemos acceder a sus módulos
particulares Para que pueda ver Importar. Núm Pi. Ahora bien, según el estándar,
normalmente, Num Pi es bastante
largo para el nombre de un módulo. Y como se
usa con bastante frecuencia, lo que suele
hacer la gente es configurar un alias en cuanto al nombre
del módulo. Entonces se puede decir a, y luego podemos definir el
alias como N P. Así que otras palabras, donde quiera que definamos MP, eso significa que básicamente estamos invocando el propio módulo Num
Pi Así que solo un
truco un poco fuerte si quieres
configurar alias
con tus módulos En este caso, esto es 99% del tiempo siempre seguido
cuando estás usando NumPI Bien. Ahora,
lo primero que quiero mostrarles es cómo puede seguir adelante
y configurar arreglos básicos. Bien. Entonces
vamos a decir print, y vamos a referirnos a NP. Y vamos a
utilizar submódulos. Entonces NumPI tiene un submódulo, que se llama random, que tiene una función Así que tenlo en mente. Así que aquí estamos usando
random como submódulo. Entonces NumPI es nuestro módulo. Random es nuestro submódulo, y Rand es nuestra función Así que tenlo en cuenta en caso de que te estés confundiendo
un poco. Entonces hay un poco de
diferencia en este sentido. Y con la función rand ahora, eso nos
va a permitir generar una matriz one D, y solo necesitamos especificar cuántos
flotadores aleatorios queremos 0-1 Entonces quiero tener.
Entonces, si ejecuto esto, tal vez necesitemos que ahí vamos. Ahora va a imprimir una
matriz unidimensional como podemos ver, y va a tener tres flotadores
aleatorios porque recuerden, rand va a estar
enfocado en la salida de flotadores Entonces cualquier cosa con un
decimal y
va a ser tres flotadores aleatorios en el rango de cero a uno, así podemos ver aquí 0.16,
0.93, 0.7, todo está
entre Digamos que quiero generar
una matriz de tres por tres, no solo una matriz,
tres por tres. Yo sólo puedo decir coma
y luego tres, y ahora podemos decir código de ejecución Ahí vamos, ahora tenemos una matriz de
tres por tres. Se ve muy similar a lo que obtienes en matemáticas
cuando obtienes matrix o cualquier cosa
por el estilo, muy similar en cierto modo. En este caso aquí,
estamos devolviendo una matriz de
tres por tres con flotadores aleatorios 0-1
nuevamente como puede A. Eso es lo que
tenemos en su lugar aquí. Así es como puedes
configurar tus arreglos. Ahora, otra cosa que
puedes hacer es que también puedes
configurar una matriz con
enteros Aquí estamos configurando
una matriz con flotadores. Sigamos adelante y
cambiemos esto. Ahora voy a cambiar
la función a rand int. Aquí lo
vamos a cerrar y
vamos a meter. Aquí vamos a poner
tres valores, en este caso,
vamos a tener un bajo, un alto, y un tamaño. En este caso,
vamos a tener cero, que es bajo, diez, que es alto, y
luego el tamaño, vamos a establecer como tres. Bien. Ahora bien, en este caso aquí, los valores aquí van
a ser 0-10, excluyendo diez, va a ser de
cero a nueve y vamos a tener enteros
aleatorios,
tres enteros aleatorios que son 0-9 en una Si tuviera que ejecutar esto, podemos ver que
tiene lo siguiente. Tenemos matriz unidimensional. Los valores son 0-10, excluyendo diez, y
tenemos tres valores Entonces, si fuéramos a seguir adelante
y correr eso de nuevo, ya se
puede ver que va a seguir adelante y sacar ese resultado. Así es como se puede generar una matriz unidimensional de tres enteros aleatorios
que son 0-9 Bien. Entonces la parte baja es, por
supuesto, la base
que estás iniciando. La parte alta es, por supuesto, el límite superior,
que excluyes. Simplemente estás en el límite
superior menos uno. Así que recuerda, cada
vez que escuchas sobre valores de límite superior
o algo así, siempre
vas
a menos uno. Entonces es solo un truco un poco
ingenioso que
te aconsejaría siempre que
estés tratando con valores de
límite superior que sean excluyentes. Siempre menos uno. Ahí es donde el verdadero conteo
subirá a lo sumo. Bien, así es como
puedes trabajar con arreglos
básicos utilizando
el módulo NumPI Bien, entonces lo que quiero
hacer ahora es mostrarte algunas funciones más útiles
que puedas usar. Ahora lo siguiente que quiero
mostrarles es cómo se
puede generar un conjunto de números
aleatorios a partir de una distribución normal estándar donde tendremos la media de cero y la
desviación estándar de uno. Entonces lo que podemos decir es print, y se puede ver np
dot random dot rand, y vamos a tener N porque esto va a ser para distribución
normal. Y aquí vamos a poner cuántos números aleatorios
queremos de una distribución normal. Esto puede ser muy útil
si estamos simulando, por
ejemplo, fluctuaciones en un mercado de valores o alturas
o algo por el estilo Corre eso, ahí vamos. Se puede ver ahora que
hemos generado tres números aleatorios a partir de
una distribución normal. Bien. Así que tenemos esa configuración. Lo siguiente que quiero
mostrarte es lo que puedes hacer si quieres seguir adelante y escoger elementos aleatorios o artículos con o sin
reemplazo. Bien. Ahora bien, lo que quiero decir eso es que el reemplazo va a dictar si
tienes duplicados o si no tienes Es muy similar a lo que
expliqué antes con la función de muestra de puntos y la función de opciones de puntos
donde se agrega en K es igual a dos, por ejemplo, muy similar a lo que teníamos antes
con el módulo aleatorio, pero así es como lo
vas a aplicar con el propio módulo Num Pi. Esto
es lo que vamos a hacer. Primero vamos a
definir una lista. Esta lista aquí va a, sigamos adelante y
limpiemos esto. Vamos a tener una lista, y
vamos a decir frutas iguales y podemos decir par Manzana uva naranja. Tenemos una lista de frutas, adelante y definimos una lista, y luego podemos decir print y Np dot random como submódulo, y vamos a
decir punto choice Entonces esta vez usaremos choice, y vamos a
agregar en tres opciones. Ahora, digamos que
quiero seguir adelante y escoger dos
elementos únicos de esta lista. Primero vamos a
definir a partir de qué lista. Entonces en este caso,
van a ser frutos. Entonces van a ser dos, y luego queremos decir
reemplazar es igual a falso. Esto nos va a permitir
esencialmente que este código escoja dos elementos únicos y al
decir reemplazar es igual a falso, significa que vamos a asegurarnos de
que no haya duplicados Es decir, cuando
estamos seleccionando dos elementos de esta lista de frutas, no
queremos seleccionar
manzana dos veces como Apple y
Apple o uva y uva o naranja y naranja
o pera y pera. Déjame demostrarlo por ti. Reemplazar ayuda a evitar
la duplicación. Sigamos adelante y ejecutemos el código. Tenemos manzana pera naranja uva, naranja
manzana, uva manzana, uva
naranja, naranja pera. Vas a ver
que no va a tener ningún duplicado de ese tipo Pero sin embargo, si
tuviera que establecer replace en true, entonces va a
permitir duplicados Entonces si digo reemplazar es igual a verdadero, Guarde esto y ejecute naranja
manzana, naranja uva. Papá. Ahí vamos. Ahora
tenemos un duplicado en su lugar. Así que ahora podemos tener
valores duplicados que se están seleccionando. Por lo que se pueden
seleccionar dos valores que sean iguales. Entonces tendrás
reemplazar es igual a verdad. Bien, así es como
podemos agregar eso en su lugar. Bien, así que muy
parecido como dije, a lo que teníamos antes con random el
módulo aleatorio. Bien. Entonces tenemos eso.
Perfecto. Bien, así que sigamos adelante y veamos a
dónde podemos ir más allá. Ahora, digamos, por el bien del
argumento, quieres ir a un seto
y devolver una matriz de flotadores con bajo y ¿Bien? Entonces lo que puedes hacer es
seguir adelante y decir print. N P punto aleatorio. Y quieres decir
el uniforme de punto. Así que recuerda, con la función
punto uniforme, vas a estar
lidiando con float, así que la salida será en flotadores Y aquí vamos a tomar
tres valores. Entonces primero tendremos
alta, una baja y una talla. Entonces primero, el alto, vamos a decir del uno al diez. Y entonces queremos tener cinco carrozas aleatorias,
así podemos decir cinco Bien. Entonces sigamos
adelante y ejecutemos esto. Bien. Ahí vamos. Vamos a ver que tenemos
uno, dos, tres, cuatro, cinco, va a estar
entre, como podemos ver aquí, el bajo y el alto, así que uno a diez, recuerda, no
va a ser nunca diez. No va a ser en diez. Si ejecutamos esto, podemos ver ahí no
va a ser de
ningún caso diez. Esto es lo que podemos hacer
si queremos devolver matriz nuevamente de flotadores
en alto y bajo Bien. Bien, perfecto. Entonces ya tenemos ahí se
puede ver aquí lo
más alto al que puede
subir como vemos es 9.74 e incluso va
tan bajo como 2.29, pero para nada yendo por encima Ahora, digamos que queremos
devolver una matriz de números normalmente distribuidos. Entonces usaremos algo
conocido como la función normal. Entonces lo que podemos hacer es
decir mp punto aleatorio punto normal. Y podemos simplemente cerrarlo. Vamos a
tomar tres valores. Entonces tendremos cero, por ejemplo, uno, y podemos decir cinco. Ahora, el primer valor aquí
va a ser para MU. Entonces tendremos Sigma, y luego tendremos talla. Y vamos
a devolver cinco de esos
números normalmente distribuidos en una matriz. Y ahí podemos ver
que tenemos esa salida en consecuencia, ¿verdad? Perfecto. Y así
es como podemos seguir adelante y establecer también la función
normal. Bien, entonces ahí lo tenemos. Existe la manera en que
podemos utilizar
los tres módulos. Y solo quería
darte un poco
de una visión general de cómo
puedes ir de cabeza y
utilizarlos todos, y algunas de las funciones más
populares. Ahora, sé que algunos de
ellos podrían haber estado un poco por ahí y
un poco fuera de alcance. Un poco de ella se sumerge,
como mencioné, en un poco de estadísticas, pero es importante al
menos estar al tanto de ellas y solo tener un
poco de contexto, no decir que alguna vez la usarás, sino que es bueno tener
algunos conocimientos de fondo, que
sepas que existen, y no estás
limitado a solo usar una o dos funciones
que están disponibles En cualquier caso, eso está
en Num Pi en términos de las
funciones aleatorias num Pi y tal. Y sí, eso
concluye este conjunto de ejercicios prácticos de laboratorio de tres partes.
28. Decoradores: Hola a todos, y bienvenidos
a la siguiente lección, que va a ser
foco en decoradores Entonces, ¿qué es un decorador? Eso es probablemente lo que
tienes en mente ahora mismo. Así que en pocas palabras un decorador en PySon es una función o
clase especial que mejora
otra función o método sin cambiar
su código original Entonces déjame darte una analogía
muy simple. Digamos que te estás
preparando para Navidad y quieres
volverte festivo y decorativo. Lo primero que
haces es
conseguirte un árbol de Navidad. Entonces eso es parte de
la decoración. No obstante, lo
que hace la gente es decorar el árbol, así van un paso más allá y ponen muchas
cosas bonitas en el árbol. Entonces trata de ver a un decorador en este sentido literal
de su analogía Podrías tratar el
árbol de Navidad como una función y los
decoradores adicionales que te pones como una función especial Esa es sólo una manera en la
que puedes seguir
adelante e intentar cómo puedo decir, ponerla en perspectiva. Ahora bien, en PySon como mencioné, un decorador puede ser una función
especial o una Sin embargo, el decorador más
común es, por
supuesto, el decorador de
funciones 99.9% de las veces cuando
trabajas con Pyson en cualquier ambiente
o ecosistema, vas a ver
decoradores en el tipo de perspectiva de
tener Ahora, otra cosa que
quiero mencionar en cuanto decoradores es que permite modificaciones
dinámicas Entonces, lo que puedes hacer es agregar o alterar la
funcionalidad de tus funciones y métodos de clase conjunto.
Bien, chicos. Entonces eso es todo para el panorama
teórico. Y en la siguiente lección, vamos a trabajar
en algunos ejercicios para
solidificar nuestros conocimientos
sobre decoradores en pyson
29. Cómo crear nuestro primer decorador - [Lab]: Hola a todos. Y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar enfocado en trabajar con
decoradores en PySon Así que vamos a mantenerlo muy simple como
inicio y luego
podremos construir con algunos
ejemplos. Entonces comencemos. Bien, entonces
lo primero que debemos
tener en cuenta es cómo podemos definir una función simple en PySon y luego podemos
construir a partir de ahí Derecha. Entonces
lo primero que voy a hacer es definir una función. Voy a decir Def
y voy a decir aquí decir subrayado Hola Y voy a dejar vacíos a los
parenses y no
voy a pasar por
nada en el curlon Y entonces lo que voy a hacer aquí es que
voy a decir print, y fue en el comunicado
impreso aquí, voy a decir hola mundo. Perfecto. Ahora lo que quiero hacer es llamar a esta función, y voy a decir, decir,
subrayado, hola. Ahí vamos. Lo que esencialmente va
a pasar es que
vamos a definir esta función. Entonces va a ejecutar print hello world
una vez que se llame. Aquí estamos llamando a esta función
en particular y
ejecutará lo que sea que esté dentro de
esta función misma. Sigamos adelante y ejecutemos el código y podemos ver ahí
sale hola mundo. Esa es la forma sencilla
en la que puedes utilizar una función. Genial. Perfecto. Entonces ahora que tenemos
eso en las envolturas,
sigamos adelante y
construyamos sobre esto. Entonces tenemos esta función, y digamos que queremos ir
a una cobertura y modificar los resultados que vamos a obtener
con esta función Bien, entonces digamos que
queremos envolver esto en un decorador y queremos
tener más de una salida, no solo hola mundo Queremos tener un
poco más que eso. Entonces lo que voy a
hacer es que voy a
seguir adelante y definir un decorador Ahora bien, un decorador,
por supuesto, como mencioné, puede ser una
función o una clase ahora una
clase funcional especial para ser más específicos Lo que voy a hacer es
simplemente alejar un poco aquí y ahora vamos a definir
una función especial. Voy a decir ef y
esta función aquí, voy a llamar a este
M subrayado decorador Bien. Y entonces lo
que vamos a hacer es que vamos a
pasar por el funk Bien. Ahora bien, puedes tratar el
funk aquí como un parámetro ,
bien, para otra función que vamos a
¿cómo puedo decir absorber? Ahora bien, esta función
que absorbe va
a ser absorbida cuando agreguemos el decorador encima
de la función Entonces digamos que quiero seguir adelante y modificar
esta función aquí. Lo que tendría que hacer es agregar en el decorador at y eso
en decorador va a hacer
referencia a esta función
aquí llamada Mi Mi subrayado decorador y ahora funk aquí está el parámetro, y esto ahora va a tomar en esta función en particular
que tenemos Porque aquí tenemos funk, y la razón por la que
sabe que va a ser esta función porque
adjuntamos el decorador Con este decorador,
va a agarrar esta función y
pasarla por aquí automáticamente porque
de este decorador que agregamos aquí
fue el símbolo at, va a
pasarlo por Esta es ahora esencialmente la función decoradora y
esta es nuestra función original Podemos agregar dos puntos ahí mismo. Entonces lo siguiente que tenemos que
hacer es que tenemos que envolver. Necesitamos envolver esta función
original dentro de nuestro decorador Se podría decir en
nuestra nueva función. Tendrías que decir muerte. Envoltura, abrir y cerrar paréntesis y cerrar los dos puntos Esta va a ser la nueva función que va a envolver la función
original ahora. Lo siguiente que
vamos a querer hacer es que vamos a querer hacer una prueba simple y simplemente
ejecutar algo de código aquí. Así que voy a ejecutar una simple
declaración print que va a decir que la función
está a punto de ejecutarse. ¿Bien? Entonces esta
sentencia se va a ejecutar antes de que ejecutemos
esta función aquí, cual ha sido
pasada por funk Entonces, para llamar a esta función, tendríamos que
seguir adelante y decir funk, ¿verdad Y eso entonces va a
ejecutar aquí esta función, que va a
decir hola mundo. Después de que eso haya sido ejecutado, podemos entonces configurar otra sentencia
print aquí que
diga que la función ha
terminado de ejecutarse. Entonces esto se ejecuta después de que se haya llamado a la
función. Ahora lo último que tenemos
que hacer es que necesitamos
devolver esta salida a través de
la nueva función envuelta. Entonces para hacerlo, podemos escribir aquí indent y decir
return wrapper, y eso va a ejecutar todo en consecuencia para nosotros. Bien. Así es como podemos
simplemente configurar un decorador ¿Bien? Bien, entonces déjame seguir adelante y mostrarte
lo que va a pasar ahora Entonces lo que va a pasar
es lo siguiente. Entonces lo primero que
va a pasar es esta declaración print
se ejecutará. Entonces el decorador
va a tomar esta
función original que teníamos, y como pueden ver,
la modifica No altera nada que se haya definido dentro de ella. Va a
pasarlo por aquí el parámetro, y luego lo vamos a
llamar dentro del wrapper, y luego vamos a
imprimir una sentencia de salida para decir que ha
terminado de ejecutar aches y devolveremos ese wrapper para asegurar que
ha sido ajustado. Entonces ahora si tuviera que ejecutar mi código, ahora
puedo ver que mi salida va a decir que la
función está a punto de ejecutarse, hola mundo, y la función
ha terminado de ejecutarse. Y se puede ver
que todo ha sido ejecutado como debería haberlo hecho. Bien. Entonces así es
como podemos seguir adelante y configurarlo todo
para que funcione como debería. Bien, entonces déjame darte un poco más de detalle para
que entiendas
todo perfectamente. Entonces aquí tenemos M
subrayado decorador funk. Entonces nuevamente, el funk va a ser la función que
se está decorando En este caso,
va a ser decir hola, que está siendo decorado por el decorador
a mi subrayado Entonces así es como
decoras una función. Se pone en el
símbolo at y luego le sigue la
función decorada, ¿debo decir? Bien. Y mi decorador, Frank aquí va a
recibir la función y va a envolver código
extra alrededor de ella, lo que hace con este wrapper Entonces va a agregar en esta declaración de salida aquí que dice que la función
está a punto de ejecutarse, y esta de aquí que dice que la función ha
terminado de ejecutarse. Así que tenemos este
envoltorio aquí, ¿de acuerdo? Y esta es una nueva función
dentro de nuestro decorador. Y como pueden ver,
agrega un comportamiento extra,
es decir, aquí mismo
y aquí mismo. Entonces antes y ejecutando la función original
definida por funk Bien. Ahora, el envoltorio aquí
va a llamar funk adentro Entonces la función original
todavía va a estar ejecutándose. Entonces tenemos envoltura de retorno. Entonces, en lugar de
devolver el funk mismo, bien, vamos a
devolver el envoltorio, ¿de acuerdo? Ahora cada vez que llamemos a saludar, en realidad vamos a
estar llamando a la devolución. En realidad vamos
a estar llamando a wrapper. Eso es esencialmente
lo que vamos a hacer. Todo bien. Ahí lo tenemos. Existe la
forma más sencilla en la que podemos integrar un decorador
dentro de Python Vamos a trabajar en algunos ejercicios
más prácticos, pero eso es lo básico para configurar tu primer
decorador y cómo
puedes aplicarlo a un concepto determinado Bien, lo que podemos
hacer es simplemente seguir adelante y sacarlo por ahora y luego continuaremos momentáneamente
30. Trabajar con decoradores - [Laboratorio]: Todo bien. Entonces continuemos y trabajemos en
algunos ejercicios prácticos. Ahora, lo siguiente
que queremos
hacer es que queremos trabajar en un programa que va a convertir la
salida de la función a mayúsculas. Entonces, sigamos adelante
y apliquemos esto. Bien, entonces
lo primero es lo primero, sigamos adelante y
configuremos una función sencilla. Entonces vamos a decir def, raza y luego aquí
vamos a decir regreso, y yo voy a decir ahí,
digamos, buenos días Muy sencillo. Entonces
voy a decir imprenta. Saludar. Y si ejecuto este código, va a decir buenos días. Entonces ahí lo tenemos muy sencillo. Entonces en este caso,
eliminé la declaración print
de dentro de la función. Lo moví afuera, y solo estoy devolviendo
el texto dado, es decir buenos días,
y luego estoy llamando a la
función aquí en consecuencia, estaba en la
sentencia print para
ejecutarlo Wister valor que se ha
devuelto ins función Ahora, recuerda cuál es
nuestro caso de uso. Queremos convertir la salida de la
función a mayúsculas. Aquí cuando estamos imprimiendo y
ejecutando esta función, queremos que esta esté en mayúsculas Sigamos adelante y
hagamos que eso suceda. Entonces necesitaríamos tener decorador en
mayúscula para eso. Ese sería un buen tipo
de caso de uso digamos muerte aquí y podemos decir mayúsculas
subrayado decorador Entonces vamos a
pasar por el funk. Ahora bien, para
absorber esta función, necesitaríamos agregar en el
decorador, que estará en, y eso va a ser subrayado en
mayúscula
decorador aquí, y luego va
a pasar por esta función como
tiene ahora mismo Entonces necesitamos definir el
envoltorio IO podemos decir def wrapper. Entonces queremos llamar a
la función original, y vamos a asignarla
a una variable. Voy a decir
aquí resultado es igual, y eso va a ser funk Estoy almacenando esta función
en particular, que va a
pasar por aquí como funk y voy a almacenar eso en esta variable llamada result Aquí es donde estoy llamando a
la función original. Entonces lo siguiente que
quiero hacer es convertir la salida
a mayúsculas. Entonces sea cual sea el resultado
aquí del funk, que es esencialmente
buenos días, quiero convertir ese
resultado a mayúsculas Entonces puedo decir retorno
resultado punto superior. Entonces voy a aplicar este método
en particular aquí, el método superior,
y eso va a convertir la salida
a mayúsculas. Y entonces todo lo que necesito
hacer ahora para devolver la nueva función es
devolver el wrapper. Yo sólo puedo decir aquí,
devuélvete el envoltorio. Y ahí lo tenemos. Ahora lo que podemos hacer es ir
a una cobertura y ejecutar el código Vamos a hacer Zach y ya podemos ver
la salida ahora está mostrando buenos días y eso es de hecho
en mayúsculas Podemos ver que
eso ahora es mucho más limpio y conciso ahora que hemos agregado
en ese decorador Derecha. Entonces así es como
podemos crear un programa sencillo que convierta la
salida de la función en caso de desarraigo Para que podamos ver dónde es útil. Por lo que formatea automáticamente texto sin cambiar la propia función
original. Así se puede ver que esta función
no se cambió en absoluto. Y como podemos ver,
esto también puede ser muy útil si estamos
mostrando títulos, mensajes o cualquier tipo de entrada de usuario de alguna manera
estándar, ¿debería decir? Bien. Entonces así es como
podemos seguir adelante y hacerlo. Borde. Ese es un ejemplo que podemos ir en un seto
y seguir. Todo bien. Sigamos adelante y
veamos otro ejemplo. Ahora, sigamos adelante y
creamos otro programa. En este programa, el caso de uso
va a estar enfocado en asegurar que nuestras contraseñas tengan al menos ocho
caracteres de longitud. Ahora, definamos una
función sencilla para comenzar. Voy a decir, D, generar subrayado contraseña como mi función básica en los dos puntos, y aquí voy
a decir retorno, ABC Muy sencillo. Entonces
esto sería visto como una contraseña muy débil
para empezar. No sólo es genérico
porque es ABC, sino que también está en el cómo puedo decir en el
lado bajo en cuanto a personajes. Bien. Entonces lo que
haremos es decir imprimir, y vamos a simplemente
imprimir esas funciones en particular. Diré generar, subrayar contraseña, abrir
y cerrar parenses Y si ejecutamos esto,
va a sacar ABC, ya que eso es lo que
estamos regresando en esta función. Derecha. Entonces así es como podemos seguir adelante y poner en marcha esa función. Ahora, sigamos adelante y hagamos esto un
poco más complejo. Ahora bien, para
verificar si una contraseña es demasiado nítida y para asegurar que la analizada tenga
al menos ocho caracteres, vamos a necesitar
hacer uso de algunos módulos Así que vamos a hacer uso
del módulo aleatorio y
el módulo de cadena. Entonces, hasta esta etapa,
debería estar bastante conocedor con los módulos
y bastante confiado con Así que sigamos adelante y
empecemos con ello. Yo diría import random, y luego podemos
decir Import string. Rico. Bien. Ahora
lo que podemos hacer es definir nuestra
función decoradora para empezar Entonces voy a decir sordo, contraseña de subrayado
fuerte. Voy a pasar por el funk. Y antes de que podamos realmente
utilizar esta función, necesitamos agregar en nuestro
decorador y decir at, y va a ser contraseña de
subrayado fuerte Así como así. Rico. Lo siguiente que queremos hacer es definir nuestro envoltorio. Entonces vamos a decir envoltorio sordo y solo podemos
ajustarlo así. Entonces queremos llamar a
nuestra función original, que está aquí mismo,
generar contraseña. Entonces para hacerlo, solo podemos
decir contraseña es igual a funk, y vamos a asignarla
a la contraseña variable Entonces lo que sea que se va a devolver en el resultado
aquí será ABC, eso se va a
poner a la contraseña, que actualmente es ahora ABC. Entonces queremos establecer un WlLoop para verificar si la
contraseña es demasiado corta, entonces queremos
realizar una acción Entonces lo que podemos hacer aquí
es decir mientras la longitud. Entonces vamos a
usar la función ng para verificar la longitud
de la contraseña, y si es menor a ocho. Lo que quiero hacer es
agarrar mi contraseña. Y luego quiero
incrementarlo en un dígito aleatorio cada vez Voy a usar el
módulo aleatorio y decir elección de punto. Recuerde que la elección de punto es una, y vamos a decir
aquí dígitos de punto de cadena. Ahora, los dígitos de punto de cadena aquí
esencialmente van a ir en una cobertura y
va a este valor, debería decir que los dígitos de
punto de cadena van a ser 0-9 en Los dígitos de punto de cadena son, por supuesto, el dígito cero a nueve
en una cadena completa. Y esta
función aleatoria de elección de punto aquí va a escoger un dígito aleatorio 0-9 en formato de
cadena y va
a agregarlo a la contraseña Tendremos ABC, y luego
podremos tener ABC dos. Eso va a
incrementarse y volver a correr. Eso va a ser ABC siete. Eso va a incrementar y volver a correr y
va a ser AB 274 así, y va a
sumar otro dígito Lo siguiente que
vamos a querer
hacer es una vez que
se haya adelantado y llegue aquí
al límite superior. Si bien lo es, ¿cómo puedo
decir más de ocho? Si bien ya no son
menos de ocho, entonces
va a romper el bucle while y
luego podemos decir return password y
luego va a devolver la contraseña final, y después de hacer esto, queremos devolver esta
función modificada que tenemos. Para ello, tendríamos que decir
al final, envoltura de
retorno Bien, así que ya
tenemos todo definido. Entonces lo que vamos a
hacer ahora es ejecutar el código. Y como podemos ver ahora, tenemos esa salida,
y dice ABC 66507 Entonces, si podemos contar esto,
tenemos cuatro, y tenemos cuatro. Entonces esto tiene, por supuesto,
ocho caracteres de largo. Entonces nuestra contraseña es ahora
un poco más segura. No es perfectamente seguro, pero es mucho mejor de lo
que era antes. Y como puedes ver
ahí, agregamos en la funcionalidad para modificar
nuestra función para que
podamos asegurarnos de que
nuestras contraseñas al
menos ocho caracteres largo y estén funcionando
bien como deberían ser. Podemos ver que incorporamos
todo eso en esta función. Entonces, si solo fuera a alejar un poco más para que puedas ver el resultado general que
tenemos aquí mismo y la
salida que tenemos. Todo bien. Eso es todo para
los ejercicios sobre decoradores Ojalá te estés
volviendo un poco más seguro con él y que lo
estés integrando bien. Hemos pasado por
algunos ejemplos. Podemos seguir adelante y quitar esto y ahí
lo tenemos decoradores en Bison
31. E/S de archivos: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en archivo IO. Así que comencemos. Entonces probablemente
se esté preguntando qué significa el IO en el archivo IO? Entonces IO simplemente significa entrada y salida. De ahí la parte IO. Por lo que el archivo IO se refiere
al proceso de lectura y
escritura en archivos. Y permite que su programa funcione como archivos
en su computadora, y esto nos permite
abrir escribir para leer, y luego cerrar
estos archivos según sea necesario. Así que en términos simples, te
permite trabajar con
archivos como leer textos de un archivo o
guardar datos en uno. Bien, entonces
te voy a mostrar algunos fragmentos de código algunas
de las acciones más
populares
con administración de archivos en Entonces digamos que queremos
abrir un archivo. Entonces digamos que tenemos un archivo
llamado persona punto TXT. Entonces lo que podemos hacer es definir una variable, por
ejemplo, llamar a person file, y luego vamos
a decir iguales, y vamos a abrir
el archivo TXT person dot, y vamos a
asociarlo con la variable
name of person file. Entonces digamos que hemos abierto ese archivo y ahora queremos
leer de ese archivo. Entonces lo que podemos hacer es definir
otra variable llamada text, y luego queremos
asociarla con person file, que por supuesto es como
puedo decir que tiene acceso al archivo txt person dot ya que lo
abrimos previamente
en el comando open file. Lo que vamos a
hacer ahora es que vamos a usar el método Red para leer los primeros cien caracteres
del archivo TXT person dot, y vamos a generar esos primeros cien caracteres en la ventana de salida
diciendo texto impreso. Ahora bien, no te preocupes si esto
no tiene sentido todavía, vamos a practicarlo, pero solo quiero
darte una visión general para que puedas tener una mejor comprensión
de los métodos utilizados y demás. Bien, ahora, digamos que queremos
crear nuestro propio archivo. Entonces el proceso para
hacerlo sería, por
supuesto, definir una variable A, así podemos decir car
file es igual a open, y luego quieres
especificar car dot TXT, y luego quieres
especificar otro valor que es W. Entonces eso
va a significar escribir. Y esto también se puede interpretar
como una forma de crear. Entonces escribe un archivo, crea un archivo, y ese
debe ser car dot TXT. Ahora digamos que hemos seguido
adelante y creamos este archivo, y ahora queremos
escribir realmente en el archivo. Entonces haríamos
uso del método write. Entonces nos referiríamos
a esa variable que definimos anteriormente para
crear el archivo, archivo car. Entonces diremos que no escribas, y ahí podemos
decir, por ejemplo, mis autos favoritos son un Ford y un hessla y eso se va
a escribir en el expediente Y una
cosa muy importante a tener en cuenta es que cada vez que escribes
en un archivo en PySon, siempre
debes asegurarte que después de haber escrito en
un archivo lo cierras ¿Bien? Entonces hay que decir
archivo car dot close al final, al
menos en este ejemplo. Entonces punto cerrar es el
método que necesitas. Ahora bien, hay algo
en PySon conocidos como gestores de
contexto donde esto se hace automáticamente por ti, pero ese es un tema que
cubriremos más adelante en el curso Pero por ahora, tenemos que decir
manualmente punto cerrar. Ahora, digamos que queremos agregar
a ese archivo. No podemos
volver a decir escribir porque eso va a anular lo que sea que
haya en el archivo. Queremos agregar al archivo, y ese va a ser el siguiente problema que tengamos que
resolver y para resolverlo, podemos resolverlo
anexando a un archivo Básicamente vamos a
abrir el archivo, como puedes ver aquí,
definimos nuestra variable. Vamos a utilizar
la función open. Entonces vamos
a abrir set file, que va a ser
carrito txt es el primero, podría decir parámetro
y luego coma y luego A. Eso va a
representar append Vamos a
anexar a ese archivo. Estamos abriendo Set file para que podamos
agregarlo para que podamos agregarlo. Entonces puedes seguir adelante
y decir carfle dot a la derecha. Entonces como pueden ver,
agrego un espacio y digo, también
me gusta Honda. Eso se va a agregar a ese archivo en particular con el código que
le mostré anteriormente, donde nos dirigimos al archivo. A oids cuando estamos escribiendo o cuando estamos anexando
o cualquier tipo de acción, tenemos que decir
archivo car close al final Así que recuerda, énfasis en
el método de cierre de punto. Ahora, digamos que tenemos un excedente de archivos y tenemos que
empezar a eliminarlos. Ahora, para hacerlo, lo
que puedes hacer es hacer uso del módulo OS
que viene con Python. Y el módulo OS tiene una
función conocida como remove, y todo lo que necesitas hacer es colocar en el archivo que
deseas eliminar. Entonces en este caso,
podemos, por ejemplo, eliminar el
archivo TXT de punto de tarjeta simplemente insertando eso dentro de comillas dentro de
la función remove. Entonces es tan simple
como eso, así es como también puedes eliminar
un archivo. Muy bien, chicos. Eso es todo en términos de la visión
teórica de mirar la entrada
y salida de archivos en PySon En la siguiente lección, nos vamos a centrar en el ejercicio
práctico de laboratorio, y vamos a trabajar en práctica de trabajar
con archivos en PySon Muy bien, chicos. Eso es todo
para la visión teórica.
32. Realización de operaciones de archivos - [Lab]: Todos, y bienvenidos al
próximo ejercicio práctico de laboratorio, que va a estar
enfocado en archivo IO y PySon Empecemos. Ahora bien,
lo primero que quiero que hagas es
navegar para explorar aquí. En nuestro directorio,
queremos crear un archivo TXT simple person dot. Voy a navegar por
aquí y decir nuevo archivo, voy a llamar a
esta persona punto TXT. Aquí está mi archivo TXT. Lo que puedo hacer es que en
realidad puedo agregar algunos datos. Voy a seguir adelante y
sólo decir, John, Smith, y voy a poner
en una fecha de nacimiento, por
ejemplo, decir 12 oh 2-1990 Dos. Sólo un poco
de información ahí. Hay algunos datos
al menos en persona punto TXT. Vayamos a main dot pie ahora
y lo que vamos a querer hacer es que vamos a
querer abrir person dot TXT. Podemos decir archivo persona,
que será una variable, por ejemplo, y vamos a hacer uso de la
función open para abrir ese archivo. Entonces el nombre de ese
archivo es persona punto TXT. Entonces voy a decir
persona punto TXT, y eso nos abrirá
el archivo. Entonces ahora que se abre el archivo, teóricamente hablando,
necesitamos realizar alguna acción Digamos que queremos
leer de este archivo. Entonces podemos definir una
variable llamada texto, y queremos referirnos a archivo
persona porque de
acuerdo a esta variable, el valor aquí va
a ser el archivo abierto. Y ¿qué queremos hacer con este archivo ahora que está abierto? Queremos leer de él, así podemos usar el método
read y luego quieres especificar
cuántos caracteres del archivo quieres leer. Siempre me gusta
hacerlo un poco alto, así que voy a decir 100
y eso va a ser básicamente todo en este archivo para que veas
que está a punto de
tomar todo. Y entonces como lo que se
ha leído en caracteres se asocia ahora
con ext y se almacena en él, podemos imprimir texto
para ver la salida. Entonces voy a decir texto impreso. Entonces ahora si ejecuto el código, va a dar salida a los primeros 100 caracteres
de este archivo. Ahora, digamos que cambio
la cuenta de arco aquí a solo digamos cinco
personajes y ejecuto esto. Sólo voy a
imprimir a John. Por supuesto, podemos ver que hay un espacio ahí cuando destaco. Si tuviera que decir 12, por ejemplo, y correr, va a decir el guión de
John Smith. Sólo llega a este punto. Puedes ver que puedes limitar la cantidad de caracteres
que
quieres leer de tu propio
programa. Bien, perfecto. Así es como podemos seguir adelante
y sech eso arriba. Entonces esa es la forma básica de
abrir un archivo que ya existe y cómo se puede
leer desde un archivo en sí. Así que hemos dominado la apertura de un archivo existente y la
lectura de él. Ahora, digamos que queremos darle
un paso más allá y queremos crear un
archivo y escribir en él. Lo que voy a hacer ahora es
que podemos eliminar este código, y quiero crear un archivo. Para hacerlo, voy a decir car file como mi variable es igual, y voy a decir open
voy a decir car dot TXT y luego en coma y voy a decir W. Porque
quiero crear un archivo,
voy a decir W. Ahora, antes de que este archivo realmente
exista y se cree, en realidad
necesitamos escribirle, entonces necesitamos escribir algo, pero este es el primer paso creando tu archivo,
teóricamente hablando. Lo siguiente que tenemos que hacer
es escribir en este archivo, y luego se va a
crear y aparecerá aquí en nuestro directorio aquí
en nuestro directorio base. Lo que vas
a querer hacer es decir archivo de auto, perro aquí mismo
entre paréneses podemos decir que mis autos favoritos son
una fragua y un ajedrez Entonces queremos decir archivo auto, cerrar, y eso va
a cerrar el expediente por nosotros. Ahora si fuéramos a ejecutar nuestro código, podemos ver que nada
va a ser de salida, pero si vamos a nuestro directorio, ahora
deberías ver que
tenemos un archivo TXT de carrito que fue creado y tenemos algo de texto en él porque
escribimos al archivo. Ahí podemos ver que
seguimos adelante y escribimos
mis tarjetas favoritas son un Ford y un Tesla y podemos ver
que se ha escrito, y claro, ese archivo
fue creado él mismo. No esperábamos ninguna declaración de salida de
impresión. Por eso no había nada aquí, pero necesitábamos
ejecutar nuestro código para
poder ejecutar las
siguientes líneas de código. Pero podemos ver
que se ha creado. carrito TXT
ya existe. Correcto, perfecto. Ahora, digamos que quieres seguir adelante y leer
ahora desde auto punto TXT. Quieres leer un
poco de este archivo. Entonces vamos a referirnos de nuevo
a lo que hicimos antes. Entonces déjame seguir
adelante y justo esto. Entonces queremos
volver a leer un archivo. Entonces voy a decir texto es igual, y voy a decir archivo de
coche punto Rojo. Y voy a leer un
poco de ese archivo. Entonces voy a decir 15 caracteres. Y voy a decir imprimir cheques. Entonces ahora, si ejecuto la salida, me
va a dar
algo de código aquí para
que veas que la operación IO
estaba en un archivo cerrado. Así que recuerda, cada vez
que estés cerrando un archivo, necesitas volver a abrirlo. Entonces esto es algo
muy importante a tener en cuenta cuando estás
trabajando con tus archivos. Entonces, lo que tienes que hacer ahora es que necesitas abrirlo
antes de continuar. Para que puedas definir tu
variable aquí de nuevo, archivo car. Es igual a abrir, y
quieres abrir car dot TXT, y ahora lo estás abriendo. Y ahora si ejecutas tu código, vas a ver que
dice mi CA favorita. ¿Bien? Porque solo lo estamos
limitando por 15 caracteres, pero si lo hago un poco
más largo a 100, por ejemplo, va a imprimir toda
la línea diciendo, Mis autos favoritos son Ford
y una prueba recuerda eso. Muy importante. Es
por eso que los gestores de contexto serán cómo puedo decir
mucho más útiles más adelante. Entonces eso es algo que
quería mencionar para que estés al tanto de todo
ese proceso. Así que recuerda, una vez que cierres, no
puedes realizar
una acción hasta que la vuelvas a
abrir. Muy importante. Yo quería demostrarlo para
que veas qué pasará
si no haces eso. Te vas a encontrar con
un error como te mencioné. Una vez que cierras,
necesitas abrir de nuevo. Derecha. Lo siguiente que quiero mostrarte es cómo
puedes anexar a un archivo Ahora, digamos que ya
tenemos el texto en coche punto TXT. Mis autos favoritos son Ford y Chess y queremos
agregar a este archivo. Podemos usar append. Lo que vas
a querer hacer es simplemente reestructurar un poco tu
código aquí, así que solo podemos eliminar parte
del código antiguo aquí Y claro, tenemos que
abrir el archivo, pero tenemos que
abrirlo en apendamde Para ello, necesitamos agregar
una coma aquí y decir, A, porque le estamos diciendo a
Pyson que queremos
abrir este archivo y
queremos agregarlo. Ahora, para añadirlo, claro, necesitamos volver a hacer uso
del método correcto, pero nuestro enfoque está en agregarlo
y no escribirlo Si digo archivo de auto, escribe, Bien. En cotizaciones, necesito
agregar un espacio y decir, también
me gusta Honda, por ejemplo. Entonces sólo puedo decir archivo
de coche punto cerrar. Así que cada vez que
escribes, necesitas cerrar. Entonces esa es una buena medida. Entonces ahora si sigo adelante y ejecuto este código, claro, nada
va a salir ahí. Pero si voy a auto dox, verás que se anexó esta
textura adicional que dice, también
me gusta Honda. Entonces así es como puedes anexar a un archivo que ya tienes Bien, perfecto. Así es como puedes seguir adelante y
configurarlo en consecuencia. Ahora, no puedes seguir adelante
y solo decir escribir un archivo o de lo contrario va a eliminar todo lo que hay en tu archivo y comenzar
desde el principio. Déjenme demostrarlo. Si yo fuera a sustituir
esto por W y decir, sólo
voy a
escribir en el archivo. Digamos, también me gusta Honda, va a reemplazar
todo esto y solo show también me gusta Honda. Porque cuando escribes, va a ser un descanso limpio. Un bolígrafo se va a agregar a un archivo. Nosotros, va a empezar de
cero. Entonces déjame mostrarte. Si corro esto ahora y
voy a Cardo txty, solo
va a demostrar que también
me gusta Honda Es por eso que necesitas
asegurarte tener en el símbolo A, que se establece cuando estás
abriendo tu archivo para especificar el modo que
pretendes utilizar. Entonces estos se conocen como modo. O W es modo de escritura. A es modo appenda,
recuerda eso. Tenemos dos expedientes aquí, pero sólo quiero quedarme con uno. Quiero mantener persona punto TXT, así puedo quitar auto dot TXT. Probablemente te estés preguntando,
¿cómo hago eso? Muy sencillo.
Solo tiene que decir importar OS y el módulo OS tiene una función de eliminación y
esto se aplica a los archivos. Puedes decir Os dot
remove y luego todo lo que necesitas hacer es poner
el nombre exacto del archivo, y en nuestro caso, es car dot
TXT, que podemos ver aquí. Se puede decir auto punto TXT. Y voy a recomendar solo
cerrar este archivo por ahora. Y si ejecutas ese código, puedes ir a tu
explorador y podrás ver que card dot txt de
hecho ha sido eliminado. Ya no existe. Desgraciado. Entonces ahí lo tenemos. Es así como
puedes ir en una cobertura y realizar archivo básico IO, decir,
entrada y salida de archivos Así que ya has aprendido cómo
puedes seguir adelante y abrir archivos, leer archivos, crear archivos, escribir en archivos, anexar a
un archivo y eliminar un archivo Vamos a entrar en un
poco más de detalle
pronto en cuanto a la
obtención de metadatos de archivos. Entonces eso es algo a lo que
llegaremos pronto. Derecha. Ahora bien, en cuanto a
este archivo TXT punto persona, normalmente limpiamos todo después de cada tamaño práctico siguiente, pero vamos a dar
seguimiento en este caso,
por primera vez. Así que recomendaría simplemente
mantener todo tal cual. Vamos a tener algunas visiones
teóricas
en el siguiente conjunto de lecciones, y luego vamos
a regresar para explorar un poco
más profundo en el manejo de archivos Bien, así que eso es todo por ahora.
33. Cómo obtener metadatos de archivos: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en obtener metadatos de archivos. Entonces echemos un vistazo. Bien. Ahora, cuando
estamos realizando operaciones de entrada y salida de
archivos como lo venimos haciendo
ya en este curso, posible
que también necesitemos conocer más detalles sobre el procesamiento y
detalles más finos de un archivo, conocidos como los metadatos Ahora, estos metadatos pueden
incluir el nombre del archivo, el estado de un archivo, ya sea abierto o cerrado, y el modo en el que
el archivo está abierto. Si actualmente está
en modo escritura, si está en modo pluma, entonces A para un modo pluma, W para modo escritura, es alguna información
que quizás necesitemos saber, no necesariamente,
sino simplemente algo que podría ser importante. Entonces, en cualquier caso,
eso es solo un poco de una visión general teórica. Vamos a sumergirnos en algunas de las opciones en las que
podemos sumergirnos para obtener
esta información. Así que nos sumergimos justo en
eso en un momento.
34. Atributos de los metadatos de salida del archivo - [Lab]: Hola a todos y bienvenidos
al próximo ejercicio práctico de laboratorio, que va a estar
enfocado en obtener metadatos de archivos. Ahora, estamos continuando
desde donde lo dejamos, así que todavía tenemos nuestro archivo TXT
person dot que teníamos antes y
tenemos nuestro archivo principal punto pi. Lo que quiero que
hagamos es seguir adelante y abrir nuestro archivo en
modo, por ejemplo. Voy a decir persona, archivo es igual a abierto, y voy a
abrir persona punto TXT. Y vamos a poner esto
por ahora en modo escritura, así que el modo será W. Genial. Tomemos algo de información y voy a
sacar esto también. Voy a decir print y voy a agregar
en algunas texturas, voy a decir nombre. Lo que quiero hacer es que me
den el nombre de mi expediente. Para hacerlo, sólo puedo
decir archivo de persona. Como hemos asignado
esa variable al valor aquí del contenido
del archivo, entonces
puedo decir nombre de punto. Ahora, el nombre del punto aquí va a ser un atributo
que estamos utilizando. Bien. Lo siguiente
que quiero hacer es que quiero verificar si el archivo está
en el estado de apertura o cierre, y esto devolverá un valor Bool o un
valor booleano Entonces voy a decir print, y voy a
comprobar si está cerrado. Voy a decir que está cerrado. Bien, entonces en la coma. Nuevamente, necesitamos hacer
referencia al archivo, así que voy a decir persona archivo punto, y el atributo para
esto estaría cerrado. Entonces vamos a
comprobar si está cerrado. Y si está cerrado, si
el expediente está cerrado aquí, va a devolver verdadero. Si no está cerrado,
devolverá falso. Entonces estamos comprobando
si está cerrado, lo
cual no lo es. Está abierto. Lo siguiente que queremos hacer es
que queremos comprobar el modo. Entonces voy a decir
print, y aquí, voy a decir modo actual. Espacio, y necesitamos
referirnos al archivo, punto de archivo
persona, y
vamos a decir modo. Así que vamos a seguir adelante y
predecir lo que vamos a tener. El nombre del archivo aquí, nos
referimos al
atributo del archivo, que va a
ser persona punto TXT. Y vamos a
comprobar si está cerrado. Podemos ver que lo último
que hicimos fue abrirlo. Al decir que está cerrado,
va a resultar en falso, así que no va a ser cierto. Entonces tenemos el modo de punto de
archivo persona aquí. El modo actual es W para la derecha. Sigamos adelante y ejecutemos este código aquí podemos ver que
el nombre es persona no TXT. Estos estados cerrados,
podemos ver que es falso y el modo actual es W. Pero sigamos adelante
y cambiemos esto. Pongamos el modo a A. Bien. Y
lo que queremos hacer ahora es que queremos seguir
adelante y cerrar el expediente. Entonces voy a decir
persona archivo punto, cerrar. Así que vamos a ejecutar el código. Y podemos ver el nombre aquí
es persona Dtxty está cerrado,
es cierto porque
seguí adelante y cerré el archivo utilizando
el mensaje de cierre Y el modo actual es A
para append y el nombre, claro, sigue siendo
el mismo Entonces esto es muy
útil si quieres obtener algunos metadatos
de tus archivos. Entonces sigue siendo bastante
a nivel de superficie, pero así es como puedes seguir adelante y hacer referencia de acuerdo
a diversos atributos que están disponibles
para solo obtener algunos metadatos en tus archivos. Entonces eso es todo para
este ejercicio de laboratorio, muy sencillo y al grano. Sigamos adelante y solo eliminemos ese archivo para que pueda hacer clic derecho. Y eliminar. Ahí vamos. Asegúrate de tener intacto
tu archivo principal punto pi y eso es todo
lo que necesitamos por ahora. Eso es todo para este ejercicio.
35. Parámetros y argumentos: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en parámetros y argumentos. Así que sigamos adelante
y comencemos. Correcto, entonces parámetros
y argumentos. Ahora, un parámetro puede verse
como un marcador de posición que
va a definir qué
entradas espera una función Ahora, por otro lado, los argumentos son los valores reales que se pasan a una
función al llamarla. Entonces, sigamos adelante y echemos
un vistazo a una simple
analogía para que
podamos diferenciar
entre un parámetro
y un argumento de manera más coherente Bien, entonces echemos un
vistazo. Ahora, digamos que estás en un restaurante y el mesero o servidor
viene a ti y te hace algunas preguntas sobre qué te gustaría tener
en el restaurante Por lo que puede hacerte
algunas preguntas como, qué te gustaría
para tu entrante. Entonces podrá preguntar, qué le gustaría de
su plato principal y si le gustaría algún tipo de postre
después de su plato principal. Entonces digamos, por ejemplo, tienes bastante hambre y le
dices al servidor o mesero,
sí, me gustaría que mi entrante estuviera compuesto de un
poco de pan de ajo Para mi plato principal,
quiero una pizza, y de postre, me
gustaría tomar un poco de helado. Sigamos adelante y profundicemos más. Ahora bien, en este ejemplo en particular, con mirar
parámetros y argumentos, podrías tratar los
parámetros como en este caso, los espacios en blanco en un formulario de
pedido, I E, el entrante, el
plato principal, el postre. Entonces en este caso,
definen lo que se puede ordenar pero aún no tienen valores
específicos. Por otro lado,
con nuestros argumentos, estas son las elecciones reales
que toma un cliente. Es decir, pan de
ajo, pizza, helado, y estos llenan los espacios
en blanco al
hacer el pedido. Así es como puedes
diferenciar entre tus parámetros y
tus argumentos. ¿Verdad? Entonces apliquemos esto en un
programa simple de Python, por ejemplo. Entonces usando el
mismo ejemplo exacto aquí, por ejemplo, como puedes ver, tenemos una función y
nuestros parámetros que
se colocan dentro de esta función entre los parenss
incluyen entrante, plato
principal, y postre Y esto va a definir qué entradas espera la
función. Entonces estos son los parámetros. Entonces como puede ver, aquí
tenemos una
declaración print que va a decir ordenada, y luego va a tomar los valores que estarán vinculados
al parámetro starter, al parámetro del plato principal y al parámetro desert. Eso va a dar salida a
un resultado específico. Ahora, para llamar a esta función, lo que vamos a hacer es referirnos al nombre de la función
que es orden de lugar. Entonces entre paréntesis,
lo que vamos a estar haciendo es llamar a la
función con argumento Estos son los valores
que esencialmente van a estar vinculados con los
parámetros que tenemos. Aquí puedes ver que
tenemos pan de ajo, tenemos pizza, y
tenemos helado. Esencialmente, lo que
va a pasar ahora es que vamos a introducir valores, estos valores de argumento,
donde están nuestros parámetros. El pan de ajo va a
estar en lugar de entrante. La pizza estará en lugar del plato
principal y nuestro postre, en ese caso,
vamos a tener helado en línea con el postre. Entonces, por supuesto, como
estamos llamando a la función, entonces va a ejecutar lo que hayamos definido
en la función. En este caso, la declaración
impresa va a subir al final, usted ordenó pan de ajo. Pizza y helado de postre. Es así como podemos
racionalizar vía una analogía, cómo podemos hacer uso de parámetros y argumentos
con nuestras funciones en Ahora, vamos a
profundizar en esto con cómo se pueden
utilizar funciones y cómo se puede utilizar más
específicamente argumentos parámetro
debería decir, fue en PySon Pero de todos modos, esa es la esencia de misma para que tengas
la idea general entre cuál es la diferencia
entre un parámetro y un argumento y en un contexto
36. Diferenciación entre parámetros y argumentos: [Laboratorio]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en parámetros y argumentos. Entonces en este ejercicio de laboratorio, solo
voy a enseñarte los fundamentos de
parámetros y argumentos para que al menos puedas entender la idea general del mismo
antes de
profundizar en parámetros y argumentos
en el siguiente conjunto de lecciones Así que comencemos. Bien, entonces digamos, por ejemplo, quiero crear una función
sencilla, que va a estar
enfocada en alguien que pida un determinado conjunto de
alimentos de un restaurante. Entonces digamos que quieren
almorzar y
deciden que quiero un entrante, un plato principal y un postre. Sigamos adelante y veamos a dónde lo
podemos llevar a partir de ahí. Entonces lo primero que normalmente
haríamos es definir nuestra función. Entonces voy a decir Dev y voy a decir
poner orden de subrayado, y ese va a
ser el nombre de mi función Y dentro de mi función dentro de los parenesST
ser más específicos, necesito definir mis parámetros En este caso aquí, ya que
estamos tomando un entrante, un plato principal y postre, esto sería apropiado
para los parámetros. Eso va a definir
las entradas que nuestra función esperará. Entonces sigamos adelante
y hagamos precisamente eso. Tendremos arrancador. Tendremos plato de
subrayado principal, y vamos a tener postre Derecha. Ahora, una vez que
tenemos los valores asociados conectados al
plato principal de inicio y postre, queremos generar algún
tipo de funcionalidad Entonces en este caso,
aquí, solo quiero imprimir el pedido en sí. Entonces aquí voy a decir print, y voy a
decir espacio ordenado, y voy a usar concatenaciones de
cadenas, voy a decir plus, y voy
a agregar en el starter Entonces voy a agregar
en una coma y un espacio, y luego agregaremos en
el plato principal, ¿verdad Y lo que voy a hacer
es simplemente alejar un poco aquí de claridad plus y luego agregar mi coma
y decir y espacio, y luego tomaré un postre Muy sencillo. Yo sólo
iba a decir ordenado, va a decir el
postre, el plato principal, y claro, lo que
tenemos en consecuencia aquí. Genial. Ahora, fuera
de esa función, nosotros por supuesto, queremos llamarla y ejecutar esa línea de código. Entonces lo que vamos a querer hacer es llamar
a esa función, y para ello, se referiría al nombre de
la función en sí,
que es orden de lugar. Y aquí estaba entre paréntesis
es donde
llamarás a la función
enchufando los argumentos Esencialmente, los argumentos
aquí van a ser sustituidos donde hayas
definido tus parámetros. Déjeme seguir adelante y
darle un ejemplo. Ahora si pongo en bredge de ajo, entonces pongo pizza Y me puse helado. Estos van a
ser mis argumentos y va a ser
enchufado en consecuencia El pan de ajo estará
en lugar del entrante, pizza estará en
lugar del plato principal. El helado estará en
lugar del postre. Entonces podrías verlo ya que los siguientes tendrán entonces los valores
del pan de ajo,
pizza, y helado,
eso va a
bajarse a lo que sea que esté
dentro de la función aquí. entrante
se convertirá entonces en pan de ajo, plato
principal se convertirá en pizza y el helado
se convertirá en postre. Esos valores pasarán
hacia abajo a nuestra función. Y el resultado final
va a ser tú pedido, pan de
ajo, pizza
y helado. Bien, así que sigamos adelante
y ejecutemos este código. Bien. Y ahí
se puede ver la salida. Entonces pediste pan de ajo, pizza y helado. Bien, así que esa
es una forma sencilla en la que prácticamente se puede ver la diferencia entre parámetros
y argumentos y cómo funcionan juntos. Todo bien. Entonces ahí lo tenemos. Ahora, digamos que queremos ir
un poco más en GitL. Entonces la mejor manera es
conseguir algo más de práctica, y veamos
otro ejemplo. Así que déjame acercarme. Y sigamos adelante y
trabajemos en un segundo ejemplo. Bien, así que sigamos
adelante y trabajemos con
nuestro segundo ejemplo. Entonces nuevamente, voy
a definir una función, y esto va a
llamarse muerte y
voy a decir ubicación. Muy sencillo. Entonces voy
a colocar en dos parámetros. Entonces es decir, voy a tener ciudad, y luego tendré
país como mis parámetros. Y aquí en mi declaración impresa, voy a decir imprimir. Voy a decir que eres de agregar en el espacio
de dos puntos,
agregar, por supuesto, un plus para la concatenación de cadenas, voy a decir city plus y luego
voy a seguir adelante y agregar
en un conjunto de comillas y luego
agregaré en dos puntos aquí,
y luego agrego en un conjunto de comillas y luego
agregaré en dos puntos aquí, el espacio y
luego la concatenación
de cadenas Ahora tendría que
llamar a la función, así que diría ubicación. Y con inferencias,
voy a añadir en los argumentos. Aquí voy a decir, el
primer parámetro estaría en el primer tipo de cómo puedo decir en la primera
definición que hacemos aquí. Voy a decir Ciudad del Capetown, y en mi coma entonces el
segundo argumento va a pertenecer al
país y estar vinculado
a y voy a Ahora puedo seguir adelante
y ejecutar este código. Como puedes ver,
dice ahora eres de Ciudad del Capetown, Sudáfrica Lo que puedo hacer en realidad es
simplemente moverme. Bien, ahí vamos. Eso se ve un poco más limpio. Oh también podrías hacer es tal vez
una coma podría verse mejor. Así que sólo estoy en los
pequeños deles aquí. Entonces, discúlpeme.
Eres de la cocina. Ahí vamos. Mucho más limpio. Todo bien. Entonces así es como podemos integrar parámetros y
argumentos muy sencillos. Entonces nuevamente, voy a
reiterar lo que aquí
definimos dentro de
nuestros paréntesis ¿Bien? Ésos van
a ser nuestros parámetros. Entonces nuestros parámetros,
también podemos llamarlos dentro de
la propia función. No obstante, lo que
entonces tendríamos que hacer es agregar en los argumentos
aquí que
van a usted podría
decir sustituir nuestros parámetros dentro de
nuestras funciones penses, que luego
van a pasar a cualquier lógica que
tengamos dentro de la función
designada Bien, chicos, eso es todo para este ejercicio práctico de laboratorio
sobre parámetros y argumentos.
37. Argumentos posicionales y palabras clave: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en argumentos
posicionales y de palabras clave. Entonces echemos un vistazo. Bien, entonces vamos a diferenciar
entre los dos. Los argumentos posicionales se pasan en un orden específico con su posición determinando a
qué parámetro se
les asigna Ahora bien, si tuvieras que
cambiar el orden, eso va a
cambiar el significado. Ahora, también obtenemos argumentos de
palabras clave, y los argumentos de palabra clave usan
nombres para asignar valores, por lo que el orden no importa. Entonces, sigamos adelante
y echemos un
vistazo a otra analogía
como ejemplo, y luego te voy a
mostrar cómo puedes aplicar tanto argumentos posicionales
como de palabras clave Entonces echemos un vistazo. Todo bien. Entonces digamos que
queremos comprar un auto, y vamos a
un concesionario de autos, y digamos que queremos
comprar, no sé,
un Ford, un Tesla, o un Mercedes Así que vamos a la
concesionaria de autos y nos reunimos con un concesionario de autos ahí y estamos
preguntando por comprar un auto nuevo Ahora, después de haber
conocido a las personas, por
supuesto,
nos va a hacer algunas preguntas. Él nos va a preguntar ¿qué
marca te gustaría? ¿Qué modelo también te
gustaría y de qué color? Nosotros decimos, me gustaría un Mercedes. Quiero comprar la clase S
y tiene que ser negra. Veamos cómo
aplicaríamos esto en un programa PySon de
una manera muy sencilla Entonces, con la aplicación de ese escenario
en particular, podemos crear un programa de la
siguiente manera mediante la utilización de argumentos
posicionales Entonces como puedes ver
aquí, estamos definiendo nuestra función que es en coche. Tenemos los parámetros, marca, modelo y color. Y entonces nuestra
sentencia print aquí para ejecutar la función
va a decir que
compraste A y luego agregaremos en sage valores
asociados a ella. Ahora, como podemos ver aquí, los argumentos
posicionales, lo que
mencioné antes,
el orden importa Entonces como podemos ver aquí,
tenemos Mercedes, tenemos clase S,
y tenemos negro. Ahora, Mercedes va a
ser sustituido por marca, clase
S, por modelo
y negro en color. Entonces al final,
va a decir que
compraste y va a decir que compraste un
Mercedes clase S negro. Bien, así es como
va a funcionar esto en el proceso. Entonces puedes ver aquí argumentos
posicionales, el orden importa porque
si tuvieras que cambiar el Mercedes aquí por
clase S, y reemplazar los dos, entonces
vas a conseguir
la marca como clase S, y vas a conseguir, por
ejemplo, ¿cómo puedo decir
el modelo como Mercedes Puede haber cierta confusión. Entonces los argumentos posicionales,
la posición importa. Entonces Mercedes, por supuesto, va a marca, clase S a
modelo, y negro a color. Bien. Lo que define aquí fue concatenación de cadenas,
eso es completamente diferente Ese es un tipo diferente de caso de uso. Entonces eso realmente
no importa. Pero argumentos posicionales,
qué valores pones aquí importa
porque va a coincidir con el orden en que
definas tus parámetros Bien. Entonces déjame mostrarte otro ejemplo para
solidificar este conocimiento Si tuviéramos que cambiar esto, usar el mismo escenario y
usar argumentos de palabras clave, vas a notar aquí que tenemos un poco de diferencia. El modelo está configurado en la clase S, marca está establecida en Mercedes
y el color se establece en negro. Ahora bien, en este caso, ya se
puede ver que cambié el orden de los parámetros, dice marca, modelo y color. Aquí con los
argumentos que puedes ver, el orden no importa
porque lo que estoy haciendo aquí, estoy definiendo explícitamente el argumento
de la palabra clave diciendo: Bien, el modelo va
a ser una clase S, la marca va a ser Mercedes y el color
va a ser negro. Automáticamente va
a asumir los parámetros. ¿Cómo puedo decirlo de una manera
muy poco gradual y dinámica? Marca automáticamente va
a saber que se trata de un Mercedes. El color se
va a establecer automáticamente en negro y el modelo se
va a establecer automáticamente en la clase S. Puedes ver aquí, técnicamente el orden es diferente en cierto modo, pero no importa porque
estamos asignando explícitamente los parámetros como podemos ver aquí de acuerdo a las etiquetas Entonces esto sería visto como argumentos de
palabras clave donde
el orden no importa. A diferencia de antes, si
volvemos, teníamos
argumentos posicionales donde importa qué valores se podría decir código duro o el orden en el
patrón Así que recuerda, tenemos posicionales y
tenemos argumentos de palabras clave. Bien. Entonces eso es algo que
quería mencionar y
repasar con ustedes en términos de
una visión teórica. Vamos a practicar esto en los ejercicios prácticos de
laboratorio, así que estén atentos para eso.
38. Mapa de argumentos posicionales y palabras clave: [Lab]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en diferenciar entre argumentos
posicionales y de palabras clave desde una perspectiva práctica Ahora, en el ejercicio de
laboratorio anterior, nos enfocamos en comprender el concepto central de
parámetros y argumentos. Ahora indirectamente,
habrás notado que utilizamos argumentos
posicionales si
puedes entender la lección anterior
que fue sobre obtener una visión general seriatal sobre una visión general seriatal posicionales y Entonces, con argumentos posicionales, enchufa los
argumentos directamente
cuando está llamando a la
función S. Todo bien. Entonces, la primera parte este ejercicio va a ser como
una actividad de revisión porque
vas a entender la forma predeterminada en la que
manejamos los argumentos posicionales anteriormente En fin, sigamos adelante
y comencemos. Voy a crear una
función y quiero decir persona
sorda subrayado info Mi nombre de función
va a ser información de persona. Entonces quiero
pasar por algunos parámetros. Voy a tener digamos nombre, voy a tener ciudad, y
voy a tener país. Esos serán mis parámetros. Entonces quiero establecer una declaración de impresión y
voy a decir print, y voy a
empezar diciendo, estoy y voy a decir, voy a decir IM y luego
voy a usar concatenación de
cadenas
y decir name plus Entonces, claro, entre comillas, voy a agregar
un espacio y decir, entonces dirás IM
y por ejemplo, ni y yo soy de. Y entonces lo que puedo hacer es
seguir adelante y decir más, y luego podemos decir Siti plus, y luego podemos ir ahdge y agregar una coma y Ahí vamos. Entonces esa
va a ser la declaración. Ahora, tendríamos que
pasar por algunos argumentos. Pero antes que nada, necesitamos llamar
a nuestra función, lo primero que
tendríamos que hacer es decir persona subrayado
info, y esa es, por
supuesto, la función
que aquí hemos definido, el nombre de la función, y luego
podemos pasar por nuestros argumentos Bien, entonces primero,
voy a tener el nombre, así que va a ser honor, ciudad puedo decir Ciudad del Cabo, y luego país,
voy a decir Sudáfrica Estos son vistos como mis argumentos
posicionales. Nombre ciudad y país, como sabemos, son nuestros parámetros. Ahora, con argumentos posicionales, la posición de tus
argumentos necesita coincidir con el orden o posición
de tus parámetros Es decir, el
nombre va a, por
supuesto, ser sustituido
en lugar de honor. Tampoco va a ser nombre, Cabo será ciudad Sudáfrica será país, y luego se utilizará
como está el programa en términos de la
funcionalidad aquí donde va a tomar en los
valores que se le pasan. Ahora bien, lo importante
que quiero que veas en todo
este tipo de estructuras argumentos
posicionales es que si defines
aquí tus argumentos
posicionales y los codificas
duro, entonces van a
vincularse a tus parámetros Entonces, véalo de esta manera. El argumento uno pertenece al parámetro uno. Argumento dos, parámetro dos, argumento tres, parámetro tres. Así que permítanme seguir adelante ahora
y ejecutar esta función. Voy a llamar a esta función.
Va a decir, soy Ono, soy de Ciudad del
Cabo Sudáfrica. Como pueden ver,
va a dar salida a lo
siguiente lo que
voy a hacer en realidad es ir a un seto y simplemente
poner un tope completo y podemos poner una parada completa ahí espacio desde Ciudad del Cabo allá vamos Sólo el
cambio de puntuación ahí. Bien, ahí
vamos. Ahora déjame, por ejemplo, cambiar algo. Si tuviera que cambiar
el primer valor aquí era Ciudad del Cabo
y el segundo valor. Entonces mi segundo argumento, debería
decir que no, y ejecuto esto. Va a decir que soy Ciudad del Cabo, soy de Anno So Para que puedas ver el tema aquí. Entonces es por eso que
los argumentos posicionales importan, Bien, porque
se puede ver, por supuesto, Cabo es el primer argumento, y ahora pertenece y se adjunta al primer
parámetro que es nombre Arno, que es el segundo argumento
posicional pertenece ahora a la ciudad, y por supuesto, entonces África y
país siguen siendo los mismos Pero en nuestra
declaración impresa, puedes ver aquí la diferencia de
que ahora está diciendo que soy
Cape toown soy de Arno porque Arno está
técnicamente ligado a la ciudad. Puedes ver el tema aquí y por qué es importante que cuando
estés definiendo tus argumentos posicionales
que el orden importe El orden de sus
argumentos debe coincidir con el orden de sus parámetros
en su función. Eso es una inmersión más profunda en los argumentos
posicionales. Ahora quiero moverlo de nuevo. Y eso lo podemos hacer. Ahí vamos. Yo soy Ano. Soy de Ciudad del
Capetown, Sudáfrica Perfecto. Argumentos posicionales Ahora, digamos que queremos
hacer uso del argumento de palabra clave. A diferencia de los argumentos posicionales
donde el orden importa, los argumentos de
palabras clave no Lo que
esencialmente harías aquí es cuando estás definiendo
tus argumentos, puedes asignarlo a tus
parámetros aquí directamente. Entonces tenemos nombre,
ciudad y país, pero podemos
asignarlo aquí directamente. Y en ese caso, el orden no
va a importar. Entonces no importa si
tuviera que seguir adelante y cambiar el primer
argumento aquí con, por
ejemplo, Cape
Down, segundo Anno, y dejar el *** de África, no va a importar
porque vas a asignar los parámetros
aquí de antemano Entonces el orden aquí no va
a ser de ninguna consecuencia. Déjame mostrarte lo que
quiero decir con eso. Si solo fuera a
alejar por ahora y dejarme configurarlo de la siguiente manera. Anno es, por supuesto,
va a ser nombre. Puedo decir nombre igual,
y luego Arno. Entonces claro,
vamos a tener Ciudad del Cabo. Tenemos que decir que la ciudad es igual a
Ciudad del Cabo y Sudáfrica. Podemos decir que país
es igual a Sudáfrica. Bien. Ahora bien, si tuviera que
ejecutar este código ahora y correr, como podemos ver aquí,
va a decir, no
soy, soy de Ciudad del
Cabo Sudáfrica. Funciona exactamente
como debería ser. Así es como puedes
cambiarlo con argumentos de palabras clave, pero en realidad no estamos viendo la diferencia
aquí como el orden, no importa
porque técnicamente, podría argumentar que Ono está
aquí y ese es el nombre, Cabo es el segundo argumento, y así África tercera y está
separada por el comercio Eso es lo que se podría argumentar. Pero déjame mostrarte algo. Permítanme cambiar ahora ciudad
en primer lugar de la
discusión. Déjeme hacer eso. Bien, déjame quitarlo
y simplemente cambiarlo. Ahora, técnicamente hablando,
pensarías, Ciudad del Cabo está en primer
lugar que debería ser nombre. El segundo aquí es no y
eso debería estar en el ajuste. Técnicamente, en orden
estaban las posiciones. Pero este caso, todavía
va a funcionar como debería. Si ejecuto el código, todavía
va a decir, soy Arno. Soy de Ciudad del Capetown Sudáfrica. A pesar de que técnicamente
hemos cambiado de orden, se
puede ver que el orden
no importa en absoluto. Entonces estamos definiendo los valores de los
parámetros en sí. En lugar de sustituir directamente en los parámetros definidos
dentro de la función, estamos declarando el
valor antes de tiempo Entonces el parámetro buscará automáticamente
lo que se ha definido aquí
mismo en este argumento en esta llamada de argumento
que estamos estableciendo. Entonces así es como
podemos seguir adelante y definir tus argumentos de palabra clave. Entonces el orden no
va a importar. Bien. Ahora bien, no lo
mencioné con estricto detalle en las conferencias
teóricas, así que probablemente te estés
preguntando, Bien, tenemos país igual, nombre igual y ciudad igual. Entonces, ¿cómo llamamos a esto en
cómo llamamos a esto en Payson? Porque conocemos
Sudáfrica, Arno y Ciudad del Cabo es esencialmente el argumento, pero
¿cómo llamamos al resto Ahora bien, no hay un término
real en pyson para estas formas de declaraciones Bien, entonces no hay
un nombre real para ello. Pero el nombre más cercano que
sería el más preciso sería clavado a
sus nombres de parámetros Entonces tenemos ciudad igual, nombre igual, país igual. Entonces puedes llamar a estos nombres de
parámetros, bien, que es esencialmente lo que
tienes aquí nombres de parámetros. Entonces así es como realmente
puedes llamarlo directamente. También puede referirse a
él como etiquetas de parámetros. Ese es otro término que también
he escuchado antes. Entonces, realmente
depende de nosotros cómo
quieres reformularlo. Pero los nombres de los
parámetros están bastante limpios aquí. Y todo lo que realmente puedes
ver aquí es que estás asociando
estrictamente tu
parámetro con tus argumentos Así es como puedes verlo en cuanto a lo que estás haciendo aquí
con argumentos de palabras clave. Bien. Entonces sí, así es como
podemos utilizar argumentos posicionales
y de palabras clave Bien. Entonces lo que voy a hacer
es cambiar esto también. Voy a mudarme de país aquí y voy
a mover eso
al frente ahora solo para
mostrarte la diferencia aquí. Entonces si ejecuto el código, todavía
voy a ejecutar lo mismo. Pero ahora, déjame
seguir adelante y cambiar esto, y ya no vamos a configurarlo como argumentos de palabras clave. ¿Bien? Ahora vamos a
establecerlo como argumentos posicionales Así que recuerda el formato
en este formato aquí, estos son vistos como argumentos de
palabras clave. Si solo tuviéramos que sumar
los valores tal cual, esto sería visto como argumentos
posicionales Así que recuerda la estructura
entre los dos. Entonces ahora si ejecuto mi código aquí, se va a volver loco aquí porque
Sudáfrica se llama, Ciudad del Cabo es ciudad, y
nu es el país. Bien, entonces argumentos posicionales
y de palabras clave. Ahora bien, lo que quiero que hagamos
es seguir adelante y trabajar en otro ejemplo solo para
practicar para que podamos tener una mejor idea de los argumentos posicionales
y de palabras clave Bien, así que continuemos y
pongamos un poco más de práctica en. Bien. Así que comencemos
con la función que se va a centrar en los argumentos
posicionales y luego trabajaremos en los argumentos de
palabras clave Bien. Entonces voy a decir Def, y esta va a
ser una función que se llama ver película de subrayado
. Muy sencillo. Va a tomar
en dos parámetros. Primero tendremos el nombre de la película. Entonces voy a decir película, y luego voy
a decir la persona. Entonces, ¿con quién estoy viendo la
película en mi colon, y luego voy a decir Imprimir. Fui a ver y luego al espacio, y voy a agregar el plus, y luego voy a
tener la película, el espacio, y luego voy a decir whiz y plus y luego
tendremos persona Bien. Entonces ahí lo tenemos, así que voy a tener ingenio así. Podría ajustarlo. Fui
a ver se puede decir, por ejemplo, Star Wars con
Jane. Simplemente muy sencillo. Entonces voy a llamar a
esta función, y voy a decir ver película de
subrayado, y argumentos
posicionales Primero, voy a
tener el nombre de la película. Entonces aquí voy
a decir Star Wars. Segundo argumento, voy
a decir Jane. Muy sencillo. Por lo que debería seguir adelante
y pasar estrellas a película, Jane en persona. Entonces
va a imprenta. Fui a ver Star
Wars con Jane. Entonces, sigamos adelante
y ejecutemos este código. A veces solo
necesitamos volver a ejecutarlo. Ahí vamos. Fui a
ver Star Wars con Jane. Y eso va a
sacarlo para ti en consecuencia, así. Bien, así que eso son argumentos
posicionales. Ahora, digamos que iba
a cambiar la posición,
digamos Jane, Star Balls, y accidentalmente
cometo un error y ejecuto ese programa. Voy a decir, fui
a ver a Jane con Stars. Eso no tiene sentido. Entonces, ¿cómo puede el argumento de palabras clave
resolver este problema para nosotros? Ahora bien, si lo
codificamos de esta manera, no necesitamos cambiarlo. Solo podemos usar un argumento de
palabra clave. Así que refiérase al nombre del parámetro. Entonces diga explícitamente:
Bien, la persona es Jane. Y película es igual a Star Wars. Ahora bien, de esta manera, si
ejecuto el código, déjame guardar si lo
ejecuto, fui hacia
Starwars con Jane De esa manera, te va
a ayudar a resolver cualquier tipo de problema que puedas
tener con argumento posicional, y puedes simplemente ajustarte sin tener que hacer un cambio de
ruptura aquí Por lo que
se va a hacer ese ajuste. Entonces ahora lo hemos reemplazado
con argumentos de palabras clave. Ahora bien, aunque anteriormente
mencioné que estos podemos referirnos
como nuestros nombres de parámetros, otra razón que también
quiero agregar
a este proceso
aquí siendo conocido como argumentos de
palabra clave es
que también se pueden tratar estos
nombres de parámetros aquí que están siendo declarados como palabras clave. Entonces por eso también en Python, lo
llaman argumentos de palabra clave. Así que solo recuerda
que la razón por la que
no quiero centrarme
demasiado en llamar a estas palabras clave es
porque son esencialmente
nuestros parámetros aquí. Bien, así que solo quiero
que mantengas una buena especie de mente abierta y perspectiva sobre la lógica
y el formato aquí. Entonces, la mejor manera de
solidificar realmente tus conocimientos aquí
es mirar el formato Si estás definiendo tus nombres de parámetros y
diciendo iguales a un argumento, eso significa que esto se
ve como argumentos de palabras clave. Si agrega directamente argumentos
para que codifique valores duros, eso va a ser
argumentos posicionales. Bien, chicos Entonces sé que eso fue un
poco en detalle, pero solo
quería
profundizar un poco en ello para que
entiendas el proceso. Ahora, voy a hacer
un ejercicio de laboratorio extra, pero ella va a estar
enfocada en mezclar tipos de argumentos. Entonces eso va a
ser puramente práctico. No vamos a
mirar el lado teórico porque lo hemos cubierto
técnicamente. Entonces siento que es mejor
para ti aprender visualmente sobre la mezcla de tipos de
argumentos. Entonces ese va
a ser un
próximo ejercicio opcional que
vamos a hacer. Así que no voy a quitar el
código ni nada todavía. También se debe continuar. Pero si quieres seguir
adelante y saltarte a la siguiente lección
oficial, que va a ser sobre
argumentos por defecto, puedes hacerlo. Entonces es sólo algo que quería mencionar para que
estés consciente de ello. Entonces, para aquellos que quieran aprender más sobre la mezcla de tipos de argumentos, va a ser una única lección, pero no va
a ser tan formal. Sólo puedes
seguir conmigo como está. Si no, puedes simplemente eliminar
el código que tienes y luego pasar a la
siguiente lección oficial.
39. Mezcla de tipos de argumentos - [Laboratorio opcional]: Hola a todos. Bienvenido al
próximo ejercicio práctico de laboratorio, que va a ser una lección adicional
opcional que podrías ver tiene, y esencialmente
vamos a estar aprendiendo a mezclar tipos de
argumentos. En este ejemplo,
vamos a mezclar nuestros argumentos posicionales y argumentos palabras clave cuando
estamos llamando a una función
en particular Donde lo dejamos fue cómo podemos mapear argumentos posicionales y de
palabras clave Esta vez, voy
a mostrarte cómo
puedes mezclar y combinar ambos. No obstante, hay un conjunto de reglas que vas a
necesitar seguir y tal. Bien, así que comencemos con el ejemplo anterior
y donde lo dejamos por última vez. Como puedes ver aquí, tengo
esta función que dice, fui a ver, y luego va a decir
la película y la persona. Ahora si corro este cody va a decir que
fui hacia las estrellas con Jane Ahora, las posiciones aquí. Entonces como podemos ver,
tenemos a Jane y Starwars, y el parámetro es
esperar persona, primera película, y luego persona La razón por la que este
código funciona es porque estamos usando
argumentos de palabra clave y estamos declarando
explícitamente
el nombre del parámetro y asignando el valor
asociado Este es el uso de argumentos de palabras clave en
el formato de las cosas. Ahora bien, si tuviera que quitar estos argumentos de palabra clave y reemplazarlos por los argumentos
posicionales
en bruto, en otras palabras, si tuviera que decir piedras y digamos Jane, y ejecutar el código Fui a ver a Jane con Sows, lo cual no tiene sentido porque ahora la
funcionalidad de argumentos posicionales por defecto está en Entonces Jane va al cine y
Stows va a persona. Bien, así que esa fue la
razón por la que seguimos adelante y usamos nuestros
argumentos de palabras clave para
cambiarlo y para seguir adelante
y enviar persona Bien, como Jane y luego
película como Star Wars. Y luego cuando ejecutemos esto, lo
va a arreglar por nosotros porque los argumentos de palabra clave ajustan y asigna el valor
aquí directamente para nosotros, así que va a
ajustar muy bien y buscar el nombre del parámetro donde se ha definido
argumento en esta llamada de función, donde especificamos los argumentos Ahora, también podemos
mezclar tiempos de argumento, que no es algo que te
recomendaría hacer. Te recomiendo que te
apegues a los posicionales o a los argumentos de
palabras clave tal como son Pero también es bueno tener un mayor sentido de
funcionalidad adicional. Bien. Ahora hay reglas
desgraciadamente a esto. Ahora bien, la idea de todo
el argumento posicional y los argumentos de palabras clave es que solo puedes
hacerlo de ciertas maneras Si por ejemplo, aquí tuviera que
cambiar una de las opciones aquí, uno de estos
argumentos de palabras clave a posicional, va a funcionar
en algunos casos, en algunos casos, no
va a Como sabemos ahora,
persona está vinculada
al segundo parámetro aquí y película está vinculada
al primer parámetro. Si tuviera que quitar
el argumento de palabra clave. En el segundo en el segundo, ¿cómo puedo decir estado
en el segundo set? Se puede ver que
habrá un error que dice que el posicional no puede
aparecer después del argumento de palabra clave Entonces ahora tenemos este argumento de
palabra clave aquí, y tenemos este argumento
posicional, por lo que nunca podrá tener un argumento posicional
después de un argumento de palabra clave Siempre vas
a tener que al menos tener primero tus
argumentos posicionales, y luego luego podrás
tener tus argumentos de palabras clave Bien. Ahora, otra cosa que
quiero mencionar es si lo hiciste al
revés y digamos que
cambié esto por, claro, era película, es
igual a teles, está bien. Ahora déjame hacer
lo que decía antes. Ahora voy a tener a Jane, por
ejemplo, ese es mi argumento
posicional, y luego tengo mi argumento de
palabra clave Ahora, técnicamente
hablando, dirías, esto funciona perfectamente bien. Eso es lo que uno asumiría. Pero si seguimos adelante y
guardamos y ejecutamos este código, vamos a obtener un error
diciendo que Ver película obtuvo múltiples valores para la película de
argumento. Ese es el tema que estamos teniendo. Ahora bien, aquí está la
razón de eso. Aquí tenemos a Jane y Jane
está siguiendo, por supuesto, la regla del argumento posicional, eso se va a
asignar a la película, pero también tenemos película aquí Tenemos que asignarle
algo a la persona. Ahí es donde comienza todo el
truco en esta área. Bien. Entonces, para que puedas
mezclar efectivamente estos tiempos de discusión, necesitas hacer algunas
maniobras aquí. Entonces la primera regla
que mencioné son tus argumentos posicionales,
bien, siempre deben ser primero, y luego puedes usar
un argumento de palabra clave Y en segundo lugar, hay que vigilar lo que estaba
asignando aquí. Lo que vamos
a tener que hacer en esta situación es cambiar lo que teníamos antes
y que tenga sentido. Entonces aquí tendríamos que
decir Star Wars, para que primero satisfaga la película Y luego aquí,
vamos a querer cambiarlo por
el nombre de la persona. Y tenemos que establecer esto a
persona para que se
ajuste aquí en consecuencia. Entonces ahora si tuviera que guardar
esto y ejecutar mi código, dice, fui
hacia puestos con J. ¿Bien? Ahora bien, así es como
integrarías ambos tipos de argumentos. Entonces los puestos van al cine
y la persona va a J. Y así es como funcionaría ese
proceso ¿Bien? Ahora bien, algo que
sí quiero mencionar aquí
en el resultado aquí es que vas a
tener que seguir siempre tus argumentos
de este tipo de moda si quieres
integrar ambos. Entonces, sigamos adelante y trabajemos en otro ejemplo
completamente diferente. Déjame seguir adelante y
eliminar este código. Derecha. Entonces sigamos adelante y continuemos
con el siguiente ejemplo. Bien, entonces digamos que defino una función que se
llama secuencia. Digo De secuencia. Tengo A, B y C. Entonces puedo simplemente imprimir los valores asociados en la declaración print y decir, A, B, C, Entonces quiero
llamar a la secuencia de funciones, así puedo decir secuencia. Entonces puedo
pasar por algún valle. Hagamos una simple comprobación aquí. Quiero decir uno, dos, tres. Aquí estoy usando argumentos
posicionales. Déjame guardar y ejecutar ese código. Salidas uno, dos y tres. Ahora, permítanme seguir adelante y cambiar esto por argumentos de
palabras clave ahora. Yo sólo voy a
cambiar las posiciones. Voy a seguir adelante y decir,
digamos, A es igual a dos,
C es igual a tres,
y B es igual a uno. Guardar Zach, runach
me dan dos, uno, tres porque podemos ver que A es, por supuesto,
va a ser B va a ser uno
y C equivale a tres, y el orden aquí
es A, B y C, va a ser dos, como
puedes ver, uno y tres. Ahí tenemos los argumentos de las
palabras clave. Sigamos adelante y
pongamos esto de nuevo a la posición uno, dos, tres. Veamos cómo podemos mezclar
estos tiempos de argumento. Con las reglas que
mencioné antes, recuerden, no se
puede tener un argumento de
palabra clave frente a uno posicional Si configuro esto en A es igual a uno, vamos a ver dos y tres
tendrán un problema porque posicionales no pueden
aparecer después de los argumentos de palabras clave Recuerda que no puedes tener estos
argumentos de palabra clave primero, siempre posicional,
siempre posicional Entonces necesitamos tener uno como
argumento posicional. Entonces lo que podemos hacer es que
técnicamente podemos establecer B igual a dos, pero luego tenemos que
hacer que C sea igual a tres, porque no podemos tener el argumento
posicional por sí solo Entonces, si tuviera que ejecutar esto, va a correr lo mismo y esa es una forma en la que podemos mezclar nuestros tiempos de discusión. Pero aquí notarán que
haciendo esto es un poco, ¿cómo puedo decir innecesario? Porque estás agregando código
extra para algo que puedes lograr
con argumentos posicionales Porque técnicamente, uno, dos y tres ya
coincidieron con el pedido. Si solo los eliminas, habrías tenido el
resultado que querías. Solo estás agregando código extra aquí donde
realmente no te está ayudando. Entonces, si pones B y C, es solo código extra, y técnicamente
está
en el mismo orden. La única utilidad en la fase de argumento de palabra clave es si quieres
cambiarlos. Así que técnicamente puedes seguir
adelante y cambiar el valor. Sabemos que C es igual a tres
y B es igual a dos. Lo que técnicamente puedes hacer
es simplemente cambiar el
orden . Así como así. Entonces si lo ejecutas, claro, vas a conseguir uno,
dos y tres de nuevo. Por lo que sigues siguiendo las mismas reglas que
se mencionaron. ¿Bien? Bien, chicos. Entonces eso es todo en este ejercicio de laboratorio extra
práctico sobre cómo puedes seguir adelante y mezclar tus
tipos de argumentos juntos. Bien, chicos. Entonces, eso es todo.
40. Argumentos predeterminados: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en el argumento por defecto. Entonces echemos un vistazo. Bien, entonces
probablemente te estés preguntando,
Bien, ¿qué rayos es
un argumento por defecto? Entonces, un argumento predeterminado es un parámetro con un valor
predefinido en una definición de función que se usa cuando no se proporciona ningún valor
durante la llamada a la función. Ahora, sé que los sonidos son un poco confusos,
pero no te preocupes. Te lo prometo,
va a tener sentido. Ahora bien, una cosa importante que debe
saber es que los argumentos predeterminados deben colocarse al final
de la lista de parámetros, lo que significa que no puede tener
un argumento predeterminado y luego tener sus
parámetros regulares inmediatamente después. Siempre debe ser después de
tus parámetros regulares. En otras palabras, tu lista de
parámetros. Ahora bien, esto tendrá
más sentido cuando trabajemos en los ejercicios
prácticos, así que no te preocupes por
eso todavía. Bien, así que sigamos adelante y echemos un vistazo a un ejemplo sencillo. Nuevamente, vamos a referirnos a un ejemplo típico aquí
de alguien que compra un auto. Aquí tendremos una función
que dice comprar carro y que va a tomar en
los siguientes parámetros. Tenemos marca, tenemos modelo, y luego tenemos un argumento
por defecto, que se conoce como
color es igual al negro. Bien. Ahora bien, si vas a echar un vistazo a la función
que está siendo Cladie, entonces estamos llamando a la
función y solo enchufando dos argumentos en
lugar de tres Por lo que estamos agregando en Mercedes, que sustituirá el parámetro de
marca y la clase S, que sustituirá
al parámetro del modelo. Y en lugar de agregar un argumento SRD para hacer referencia
al color directamente, en su lugar
estamos utilizando un argumento predeterminado
que asignamos, que es establecer
el color en negro Ahora bien este resultado
va a dar salida a la siguiente declaración
con la declaración impresa al
respecto que dice, Compró un
Mercedes Negro clase S. Entonces esta es una forma
en la que puedes utilizar un
argumento predeterminado en el sentido de omitir el argumento directo
que definas dentro la función a la que estás
llamando y en su lugar simplemente configurarlo en el nivel de
parámetro que puedas decir Entonces se define esto como
un argumento por defecto. Bien. Derecha. Ahora, algo
que también quiero mencionar, es muy similar a
un argumento de palabra clave. Es algo así como
al revés, se podría decir. Entonces, en lugar de tenerlo
en la llamada a la función, lo
tienes en tu lista de parámetros
regulares dentro de los paréntesis
de tu propia función Así que solo una manera rápida de tipo de referenciarlo de una manera de
tratar de tener una mejor
comprensión de la misma. Entonces a esto se le llama un argumento
por defecto en sí mismo. Ahora mismo, otra situación
que quiero
mostrarte es lo que sucede
si, por ejemplo, tienes tu
argumento predeterminado como antes, pero cambias
tu llamada
a la función para incluir la lista de argumentos. Entonces tienes Mercedes, tienes clase S,
y tienes rojo. Entonces ahora, técnicamente hablando, en realidad no
tendrías la
necesidad de este argumento predeterminado, que es el color igual al
negro porque tienes un conjunto completo de argumentos en
tu función de llamada aquí, y tienes tus
parámetros tal cual. Probablemente te vayas, Bien,
¿qué va a pasar ahora? ¿Va a haber un conflicto? ¿Va a haber un error? Bueno, el resultado es el siguiente, va a salir en el código, compraste un
Mercedes rojo una clase. Ahora, el argumento
que define estaba en su
función de llamada esencialmente
va a sustituir o anular el
argumento predeterminado que
especifique junto con sus
parámetros en la lista de parámetros Eso es
algo muy importante a tener en cuenta cuando estás trabajando
con tus argumentos predeterminados que aquí hay una preferencia
a la mano que
va a ser utilizada. Muy bien chicos. Digamos que en el lado teórico
de los argumentos por defecto, vamos a
entrar en más detalles, y hay algunas cosas
más que quiero mencionar en términos
del parámetro
menos que donde se pueden definir los argumentos
predeterminados y si hay algún tipo de orden o preferencia que
deba seguir. Pero esta es la parte principal que acabo de
repasar en términos del núcleo principal en términos de teoría para los argumentos
por defecto.
41. Trabajar con argumentos predeterminados - [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en unos argumentos por defecto. Así que comencemos. Así que definamos nuestras funciones. Diré Df por carro subrayado. Entonces quiero
pasar por mis parámetros. Entonces voy a
decir marca, modelo. Y por ahora, sólo
voy a mantenerlo sencillo. no voy a usar un argumento
por defecto Todavía no voy a usar un argumento
por defecto. Voy a decir color. Entonces lo que voy a hacer
es que voy a decir print, y voy a
seguir adelante y decir o A, y luego voy a decir plus. Se trata de agregar el color aquí
y en las comillas más. Entonces quiero agregar en
rama más espacio, y luego podemos agregar en el
modelo al final. Ahí vamos. Entonces quiero
llamar a la función. Voy a decir
por subrayado coche, y quiero pasar por
el siguiente argumento Voy a tener Mercedes
y luego tendré clase
S y luego
tendré negro. Tenemos ese conjunto. Vamos a
ejecutar nuestro código ahora. Dice, Compraste un Mercedes clase S
negro. Mercedes pasó a la marca, clase
S a modelo,
negro a color, y luego los trajimos
a nuestra declaración impresa. Bien. Perfecto. Entonces ahí tenemos una función por defecto con los
argumentos y parámetros posicionales regulares Ahora veamos donde un
argumento por defecto puede llegar a ser útil. Entonces digamos que no quieres exponer explícitamente
un argumento aquí. Fue en tu función a la que estás llamando. Simplemente
puedes quitar esto. Lo que entonces puedes usar
es un argumento predeterminado en su lugar y
solo puedes decir el color es igual, y entre comillas,
puedes decir negro. Ahora bien, si
tuvieras que ejecutar tu código, ahora
va a decir, aún así, compraste un
Mercedes negro una clase. Así es como se puede usar
un argumento por defecto. Simplemente puedes seguir adelante y configurar lo siguiente
como puedes ver. Todo lo que estás haciendo aquí es
básicamente especificar explícitamente tu parámetro aquí dentro tu lista
de parámetros de esta función. Ahora bien, esto puede ser
útil, por ejemplo, si no tienes un argumento en particular que
quieras pasar por tu función gesto
y estás bien con un valor predeterminado mientras tanto. Bien. Ahora bien, lo útil aquí que quieres
tener en cuenta aquí es que si luego
proporcionas un argumento en sí
dentro de la llamada a la función, aún
puedes mantener
tu argumento predeterminado aquí sin que ocurra ningún tipo
de conflicto. Entonces, si tuviera que poner explícitamente en el argumento para
el tercer parámetro, que es técnicamente el color, aunque ya
se le asignó el negro. Si tuviera que dirigir esto, va a decir
Mercedes S de color rojo clase. Ahora la razón de eso es que cualquier argumento que se
defina dentro de la función qual va a anular cualquier argumento predeterminado
que se defina
aquí dentro de esta
lista de parámetros, debería decir Entonces eso es algo
importante que quieres tener en cuenta cuando
estés trabajando con esto. Ahora, otra cosa que también
quiero mencionar son las reglas colocar argumentos por defecto al final de la lista de
parámetros. Entonces esto es como
lo que quiero decir con esto. Si tuviera que seguir adelante y
digamos que puse esto en negro, y elimino este argumento
por defecto, no
puedo al inicio aquí, por
ejemplo, de la lista de
parámetros, seguir adelante y decir marca, y si fuera a decir, digamos, más SDs Entonces va a
toparse con un problema. Entonces puedes ver si coloco el cursor sobre el parámetro aquí
en el modelo aquí, dice argumentos no predeterminados, no predeterminado
sigue al argumento predeterminado Entonces, lo que puedes ver
aquí es que tienes un parámetro regular o argumento
no predeterminado que sigue a un argumento predeterminado. Entonces no puedes tener
esto en el orden, aunque si tuviéramos
que ejecutar este código, Bien, técnicamente todavía va a mostrar a
Mercedes aquí. Y si tuviera que poner este vado, por ejemplo, solo como una simple prueba para el argumento
por defecto, no
va a ir
en una cobertura y como puedo decir aun persistir
para decir Mercedes, aunque hayamos definido un argumento por defecto, como
mencioné antes, puede tener este argumento
por defecto frente ningún otro como puedo decir
argumento en su lugar aquí Te voy a mostrar una manera
en la que va a funcionar. Entonces es muy similar
a si viste el ejercicio práctico de laboratorio y sigues junto con la
mezcla de tipos de argumentos, puedes tener algo similar aquí con
tus parámetros. Entonces te voy a mostrar
lo que quiero decir con eso. Si tuviera que volver a trasladar
esto a la marca, tenemos el color y ejecutamos
esto. ¿Bien? Eso está bien. Lo que puedes hacer es
establecer argumentos por defecto. ¿Bien? Si estás
trabajando con cómo puedo decir algo después de tu parámetro
inicial. Por lo que debes asegurarte de
que siempre tienes tu primer parámetro para buena medida para no tener
un argumento por defecto. No debes comenzar con un argumento por defecto
cuando estás
configurando tu ¿cómo puedo
decir tus parámetros A menos que solo estés trabajando
con un parámetro. Pero si estás trabajando
con varios, no
va a funcionar tan bien. Todo bien. Entonces déjame
mostrarte a lo que me refiero. Entonces podemos establecer valores predeterminados aquí, así puedo establecer el color a cresta
y el modelo a clase F. Y puedo quitar
estos argumentos, guardar el código, y puedo ejecutarlo. Voy a decir que compraste
un Mercedes clase F rojo. Entonces aquí está usando
argumentos por defecto, como puedes ver, y es solo
reemplazarlos como puedes ver ahí
mismo y agarrando todos los
valores necesarios y tal Bien, así es como podemos usar argumentos predeterminados
en su lugar. Ahora, solo quiero mostrarte
algunas cosas extra más. Entonces sigamos adelante y hagamos eso. Digamos que defino
otra función, voy a decir muerte
y voy a decir persona, y sólo va a tomar en un parámetro que es el nombre. Sólo voy a
decir nombre impreso. Quiero llamar a la
función y es decir que no. Entonces esto es muy sencillo
para la función, vamos a ejecutar el código.
Da salida no. Ahora bien, lo que puedo hacer es que puedo establecer un
argumento por defecto aquí para decir, solo
voy a decir John. Y antes de que pueda realmente poner en mi voy a poner a
John Dove, en realidad Y digamos que no agrego en un argumento en particular
aquí en la convocatoria. Va a dar salida a John Doe. Entonces en este caso,
funcionará para tener un argumento por defecto
aquí en su lugar. ¿Bien? Pero no puede ser el inicio
de tu lista de parámetros. Cuando tienes otros parámetros, como viste antes, no
puede seguir una
situación en la que luego vas a tener un
argumento no predeterminado. Entonces solo
funcionará si tienes, debería decir una situación que solo tienes
un parámetro, pero generalmente no es
el caso en Python, generalmente tendrá la mayoría
de parámetros con los que
trabajas. Por eso mencioné
en este ejemplo aquí donde puedes tenerlo
permitido. Vamos a continuar. Lo que voy a hacer es
darte otro ejemplo. Vamos a crear una función sencilla. Diré persona sorda
subrayado info, que tomará en
dos parámetros Voy a decir
nombre y país. Voy a decir print
y voy a decir soy y eso va
a ser por el nombre. Entonces voy a decir, y soy de, y luego voy a decir
país. Muy sencillo. Entonces quiero
llamar a esa función persona bajo info cuadrada, y podemos pasar por honor y podemos decir
Sudáfrica, muy simple. Guardemos eso
y ejecutemos nuestro código. Dice, soy honor y soy de
Sudáfrica, muy sencillo. Bien, perfecto. Así que
tenemos eso en su lugar. Ahora, usemos un argumento
por defecto. Entonces podemos seguir adelante y establecer el
valor predeterminado aquí, por ejemplo, y voy a decir país
es Sudáfrica, y puedo ejecutar el código, y va a
ejecutar soy de Sudáfrica usando
ese argumento por defecto. Ahora, digamos que
ese no es el caso, y en realidad soy del Reino Unido. Y aquí sólo me ajustaría. En realidad, eso no tendría
sentido del todo. Digamos, Inglaterra. Aquí vamos. Guarda eso y corre, y dice, soy honor y soy de Inglaterra. Entonces ahora está tomando en cuenta el argumento explícitamente definido que se está utilizando en la llamada. Ahora, digamos que
no quiero agregar ningún argumento explícitamente. Entonces lo que puedo hacer es que puedo
quitar todo aquí. Yo sólo puedo llamar a la función, y voy a poner esto en honor. Y puedo ejecutar el código, y él dice, estoy en él,
y soy de África. Entonces técnicamente
no necesitas ni siquiera poner ningún argumento
específicamente aquí. En su lugar, solo puede utilizar argumentos
predeterminados. Entonces eso es algo que
puedes seguir adelante y hacer y agregar ese valor
predefinido en. Y nuevamente, solo recuerda
lo que dije antes en términos de la regla en términos de dónde se colocan
los argumentos por defecto. Entonces, si quería ir a una cobertura y definirla de una
manera diferente y simplemente configurarla como
teniendo mi argumento, si tuviera que establecer el argumento de
una manera diferente y comenzar con el argumento
por defecto, van a ver
si elimino esto Bien, vamos a
tener una especie de error. Bien. Así que recuerda, argumentos no
predeterminados, ¿de acuerdo? No pueden seguir los argumentos
por defecto. Entonces otra vez, solo
recuerda esa regla. Muy bien, chicos. Entonces eso
es todo para argumento por defecto. Espero que este haya sido un ejercicio de laboratorio
valioso para ti y que
hayas aprendido mucho. Bien, así que eso es todo.
42. Argumentos de longitud variable: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en el argumento de longitud variable. Así que comencemos. Bien, entonces, ¿qué son los argumentos
de longitud variable? Todo bien. Los argumentos de longitud variable
permiten una función excepto más argumentos
que aquellos que se definen explícitamente, y esto permite una mayor flexibilidad
en el número de entradas que se pasan. Ahora bien, hay dos tipos de
argumentos de longitud
variable que obtenemos en Pierson, a saber, los arcos Entonces es un astérix, y luego denotado por arcos Y esto le permite pasar
un número variable de argumentos
posicionales sin
especificar el recuento exacto Entonces llegamos a quarks, y esto es definido por dos astérixs de antemano
y Y esto le permite
pasar un diccionario de argumentos de palabras clave en
forma de par de valores clave sin límite fijo. Bien, simplifiquemos los
arcos y los quarks. Args se usa cuando no se sabe cuántos argumentos posicionales podrían pasarse a la función, y esto recopila argumentos
posicionales adicionales en Entonces tenemos quarks, que se usa cuando
no se sabe cuántos argumentos de palabras clave
podrían pasarse, y esto recopila argumentos de
palabras clave adicionales en un diccionario Recuerda los puntos clave. Cuando ves arcos, recopila posicionales
adicionales en una tupla
y Quark recopila
argumentos y Quark recopila palabras clave
adicionales Recuerda la diferencia
entre los dos. Adelante y mira una analogía. Entonces digamos, por ejemplo, estamos configurando ingredientes. Podemos crear una función
llamada ingredientes. Luego podemos pasar múltiples argumentos posicionales
como harina, azúcar
y mantequilla, como los
llamamos dentro nuestra función llamada aquí Y podemos simplemente en
lugar de
seguir adelante y poner en parámetros
particulares, podemos simplemente agregar en el
asterix seguido arcos y luego pasarlo
a través de la función
donde queremos usarla,
como en la
instrucción print y decir a través de la función
donde queremos usarla, como en la
instrucción print y Observe, cuando estamos
pasando por arcos o quarks, no
agregamos en los Solo agregamos en los astérixs
cuando
lo estamos pasando como parámetro en nuestra función, algo
importante que hay que saber Las ediciones echan un vistazo a cómo
podemos hacerlo con quarks. Ahora, solo quiero
mostrarles también de antemano la salida para que puedan ver
los ingredientes aquí. Va a ser
salida en una tupla, como mencioné antes, para que podamos ver harina,
azúcar y mantequilla Bien. Entonces esa
sería tu salida. Entonces verías ingredientes, y luego arco recordar
estará en una tupla Ahora bien, el otro
ejemplo es si estamos trabajando en términos
de usar quarks. Así que aquí queremos pasar argumento de palabra clave
múltiple. Entonces aquí tenemos bebida es café, tamaño es grande, la leche es almendra. ¿Bien? Y lo que haríamos
entonces está en la lista de parámetros, solo
añadiremos en
los dobles asterixs y luego pasaremos Después de lo cual imprimiremos los detalles del pedido
y seguiremos adelante y pasaremos por quarks sin los astérixs que van a liderar en la siguiente salida, que va a
ser detalles del pedido, que estarán en Entonces eso va a correlacionarse con lo que
mencioné antes, si se quiere simplificar toda
la idea de
utilizar args y quargs Bien, chicos, así que eso
es todo en términos de las explicaciones teóricas de utilizar argumentos de
longitud variable Así que recuerda de nuevo, si estás usando argumentos de
longitud variable, vas a usar asterix y quarks
dobles
43. Uso de argumentos de longitud variable - [Lab]: Hola a todos, y bienvenidos
al próximo ejercicio práctico de laboratorio, que va a estar
enfocado en el argumento de longitud variable. Entonces comencemos. Bien. Así que vamos a crear
una función sencilla. Entonces voy a decir sordo y se va a
llamar ingredientes. Entonces lo que vas a
querer hacer es si quieres sacar todo en una tupla, quieres usar args de Asterix ¿Bien? Entonces eso va a dar salida a todos los datos que
atraviesas a los arcos como tupla Entonces necesitas agregar en tu
colon, Demican dice print. Y voy a
decir, por ejemplo, en dience sumar en Y colon, entonces necesitarás agregar en tu coma y luego
podrás decir Ahora bien, si quieres
dar salida y
quieres usar args
dentro de tu función, entonces
puedes simplemente eliminar
ese asterix dentro, pero necesitas mantenerlo
en esta Bien. Ahora, queremos pasar
múltiples argumentos posicionales Déjame seguir adelante y llamar a la función para que
pueda decir ingredientes, y aquí puedo pasar por, por
ejemplo, la harina. Recuerda, puedes ponerlo entre comillas simples
o dobles, no
importa,
azúcar y ver mantequilla. Se puede poner en una variedad incluso. Podemos seguir adelante abajo
y ejecutar el código, y podemos ver que la salida
aquí va a ser en harina, azúcar y mantequilla, y esto
está todo dentro de una tupla Y el beneficio aquí con el
uso de args es que
puedes pasar tantos argumentos
como quieras, tantos argumentos posicionales, debería ser claro en esa
nota como te gustaría? Entonces, si solo
pasara por un
argumento en particular, hace precisamente eso. Y si tuviera que poner
en múltiplos, azúcar, mantequilla, leche, O, guardar y correr. Esto dará salida a eso
todo dentro de una tupla. Hagamos otro ejemplo. Digamos muerte y
voy a decir información personal. Voy a tener estampados los arcos. Voy a decir info colon, agregar en coma y luego
voy a decir arcos Llamemos a estas funciones. Diré información personal. Y aquí puedo pasar
todo adentro. Quiero decir John Doe. Digamos DOB. Entonces, por ejemplo,
diré 140295, por ejemplo, como una cuerda, y luego solo
diré Sudáfrica Solo como ejemplo,
sigamos adelante y
ejecutemos este código, y aquí podemos ver que
imprime la información a John Doe,
DOB por fecha de nacimiento,
140295 Sudáfrica Y todo eso, de
nuevo, como se puede ver, se está saliendo como una tupla y todos son argumentos
posicionales Entonces piensa en argumentos
posicionales,
arcos, argumentos de teclado,
quarks Entonces vamos ahora en esa nota, un
vistazo a los quarks. Bien. Entonces otro ejemplo, y eso va
a ser en los quarks. Entonces voy a decir, Jeff, y aquí déjame
seguir adelante y decir orden, yo para anotar detalles, y voy a pasar por
doble astérix para Impresión de colon. Y aquí podemos decir detalles del
pedido, quark de colon Entonces ahora vamos a utilizar quarks y simplemente
omitir los asterixis, ya que solo usamos eso
dentro de la definición aquí, y luego podemos seguir adelante
y llamar Y ahora vamos a
usar argumentos de palabras clave, y podemos pasar por tantos
argumentos de palabras clave como queramos. Voy a decir bebida es igual, y entre comillas,
voy a decir café. Tamaño grande y almendra de leche. Así que sigamos adelante y
ahorremos y demos salida a esto. Así que aquí podemos ver que la salida
estará en un diccionario, y utilizamos los múltiples argumentos de
palabras clave para utilizar quarks para generar
todo dentro de un diccionario Bien. Entonces así es
como podemos hacerlo. Y nuevamente, no
importa cuántos tengamos. Ahora es muy
útil que esto se esté sacando en un
diccionario y también juega un papel más cercano aquí
con lo que estás definiendo. Aquí donde estamos definiendo
podrías decir los nombres de los parámetros, tenemos letreros de bebida y leche. Eso forma como las claves en tu diccionario donde los valores
son los propios argumentos, como puedes ver, se está
sacando aquí. Si puedes referirte a
lecciones amigables para principiantes sobre diccionarios, puedes ver la combinación aquí y cómo se vincula todo
junto con la referencia Si tuviera que cambiar la
bebida aquí por bebida, guarde eso y ejecútela. Vas a ver
que la clave aquí en esta salida de diccionario
va a cambiar. Sólo recuerda esa estructura. Genial. Eso son quarks. Hagamos otro
ejemplo para los cogolleros. Sigamos adelante y
configurarlo para comprar un auto, otra vez, así que digamos sordo y
comprar carro es la función. Entonces vamos a
pasar por quarks, y esto va a estar
dentro de un diccionario Entonces por eso estamos diciendo quarks y quiero decir print No podíamos decir detalles del pedido. Podemos decir que aún
así, ordene los detalles, y queremos
pasar por los quargs de forma natural Entonces podemos seguir adelante
y llamar a la función, y podemos seguir adelante y
especificar lo siguiente. Quiero antes que nada,
decir yo diría rama, y eso va a
ser igual a Ford. Y entonces podemos
decir modelo F clase, y luego podemos decir, entonces va a
ser Ford clase F, y podemos decir color. Eso va a ser azul. Ahí vamos. Entonces sigamos adelante y guardemos y
ejecutemos este programa. Entonces podemos ver aquí que va a devolver un diccionario porque
estamos tratando con quarks. Hemos agregado en la palabra
clave argumentos y múltiples argumentos de palabra clave, y va a generar lo
siguiente como podemos ver. Entonces la marca, forja, modelo clase F, color azul. Nuevamente, si solo tuviera que agregar un argumento y ejecutar el código, va
a hacer precisamente eso. Recuerda, aquí
no hay limitación, por lo que puedes pasar múltiples argumentos de
palabras clave. Ch. Entonces ahí lo tenemos. Así es como
esencialmente puedes ir a una cobertura y trabajar con tipos de longitud
variable De nuevo, lo volveré a decir
solo para que estés enterado. Recuerda con args, trabajas con argumentos posicionales que se transforman en una tupla quarks, trabajas con
argumentos de palabra clave que
se transforman en un diccionario después de la
salida Y defines el astérix con arcos y el doble
astérix con quarks solo cuando estás dentro de la definición de
tu función dentro tu función Cuando lo estás sacando dentro de la
funcionalidad de funciones, por ejemplo, solo
eliminas esos astérixs Bien, chicos. Entonces eso es todo para este ejercicio práctico de laboratorio.
44. Desembalado de contenedores: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en el desempaque de contenedores Así que comencemos. Bien, entonces
probablemente te estés preguntando, ¿qué pasa con el desempaque de
contenedores Así que en pocas palabras el
desempaquetado de contenedores
permite pasar elementos
de una tupla de lista o diccionario como
argumentos separados a una función usando asterix para listas y
tuplas o doble astérix para tuplas o Entonces echemos un vistazo
aquí, aún más simple. Entonces Asterix desempaqueta
una lista o dos en posicionales y Asterix
doble
desempaqueta un diccionario en argumentos argumentos
posicionales y Asterix
doble
desempaqueta un diccionario en argumentos de palabras clave. Bien, entonces eso es
algo que
quizás necesites repasar de
nuevo solo por claridad. Pero en cualquier caso, sigamos
adelante y veamos cómo podemos visualizar todo
este proceso. Bien, así que digamos que me
tengo a mí mismo, por ejemplo, y iba a crear un programa para describirme
como un ejemplo sencillo Entonces tendría mi función que diría describir persona. Yo tendría tres parámetros, como nombre, edad y ciudad. Yo tendría una
declaración impresa que diga nombre y luego es edad. Y luego, por supuesto, todos
los siguientes años de edad y
vive en seguido por ciudad. Ahora bien, lo que puedo hacer es agregar todos estos datos y
almacenarlos en una tupla, y luego puedo desempaquetar la
tupla en Entonces técnicamente, lo que
haría entonces sería utilizar el único astérix
y luego referirme a la tupla, que es Y eso va a
desempacar, se podría decir, todos esos
argumentos en nombre, edad y ciudad siempre y cuando
estén en el mismo orden Entonces aquí podemos ver
los argumentos reales, y así es como básicamente
llamaríamos a la función y
enchufaríamos esos argumentos. Y eso
nos dará la salida de no
tiene 29 años y
vive en Ciudad Entonces esencialmente, siempre tengamos todo en
ese orden en particular, como no 29 Ciudad del Cabo, y eso haga referencia al orden de
parámetros aquí, que es nombre agente ciudad, se va a llamar
dentro de esta
función describir persona y
va a verse como Asterix person subrayado
info ya que está Y en el orden en que estaba
en la tupla reflejará el orden que vamos
a sustituir dentro de los parámetros
de esta función Entonces una vez que lo desempacemos aquí
por Asterix person info, el orden que
teníamos en la tupla irá a Entonces no es primero, luego edad 29 segundo y luego
cert Ciudad del Cabo es SRT Entonces no iría por nombre. Ya que está en la misma posición, 29 pasarían a la edad y
Ciudad del Cabo irá a ciudad. Bien. Entonces así es
como lo podemos ver. Bien. Ahora, digamos que nos estamos
enfocando en algo que tenga que ver con la educación o la universidad como ejemplo
en términos de un programa. Entonces alguien que haya ido a la
universidad o se haya graduado. Nuestro programa sería un
poco diferente. Entonces en este caso aquí,
como pueden ver, tenemos una función que dice grado
o información de grado. Toma en los
parámetros de nombre,
grado, universidad
y año de egreso. Entonces tenemos una declaración impresa que simplemente sigue
adelante y menciona una persona y que obtiene un título de qué universidad
en el año de graduación, y los datos luego se
almacenarán en un diccionario. Se pueden ver los detalles de
educación, aquí estará en pares de
valores clave porque recuerda que un diccionario
funciona en pares de valores clave. Entonces tendremos el
nombre, el título,
el año de
graduación universitaria como claves, y luego los valores sobre tecnología de la
información BSC, Universidad de Ciudad del Cabo, 2019 Después desempaquetaremos el diccionario en argumentos de
función Esencialmente,
entonces nos aseguraremos agregar
asteriscos dobles esta vez porque estamos trabajando
con un diccionario, como puedes ver aquí mismo, y luego todos los
valores se
conectarán a los parámetros,
como puedes Por lo que se agregará nombre, grado, universidad y
año de egreso en. Bien. Entonces así es como
seguiríamos adelante y lo haríamos. Y salida, por supuesto, verás que se
obtendrá una EEB en tecnología de la
información de
la Universidad de Ciudad del
Cabo, 2019 Ahora, también notarás aquí que el nombre
va a coincidir con
el parámetro name, grado con parámetro grado, parámetro
universidad universitaria, año de
graduación, año de graduación, configurado
con ese parámetro, y luego los valores aquí se
conectarán a los parámetros asociados
que hemos configurado aquí Chico. Sé que puede ser un poco para tomar,
pero no para preocuparse, vamos a tener
mucha práctica en
los ejercicios prácticos de laboratorio.
Así que vamos a llegar a ello.
45. Realización del desembalaje de contenedores: [Laboratorio]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar enfocado en el desempaque de
contenedores.
Empecemos. Definamos nuestra función. Diré sordo y quiero llamar a esto describir subrayado persona Esa va a ser mi función. Entonces quiero pasar
en tres parámetros. Voy a tener nombre. Edad y ciudad, añadir en mi colon. Entonces agregaré en mi estado de cuenta
impreso, y esta vez solo voy a
decir nombre, solo
voy a
usar comas simples No voy a usar
concatenación de cadenas solo para variar poco, agregar la coma, luego diré que es edad, y luego diré
años y vive Tenemos todo lo que se está
pasando en consecuencia. Ahora, sigamos adelante ahora y definamos una tupla y queremos almacenar todos nuestros datos que queremos sustituir por nombre,
edad y ciudad Sigamos adelante y
definamos una tupla. Diré persona subrayado
info fuera de la función es igual y tupla voy a decir RNO que va
a 29 eso va a
sustituir a H y Ciudad del Cabo, eso va a sustituir a ciudad A continuación, lo que tenemos que hacer
es llamar a nuestra función para que
podamos decir describir
subrayado persona, que será nuestra función, y luego queremos desempaquetar
los datos en la tupla que está aquí
mismo en los parámetros de la
función aquí Entonces podemos simplemente decir,
recuerden, ya que es una tupla, podemos seguir adelante y
agregar en un astérix, y podemos decir persona subrayado info que Bien, así es como podemos
seguir adelante y definir lo siguiente. Por lo que la salida
al final debería ser no tiene 29 años de edad y
vive en Entonces, sigamos adelante y
ejecutemos este programa. Ahí lo tenemos. Anu tiene 29 años y
vive en Ciudad del Cabo, así que podemos ver que ahora tenemos ese resultado designado que queremos.
Bien, perfecto. Bien, así es como podemos seguir
adelante y hacer lo siguiente. Así que sigamos adelante y hagamos un poco más de práctica
otra vez. Todo bien. Y déjame seguir adelante y
quitar todo esto. Pensemos en otro ejemplo. Digamos que nos estamos enfocando en
uno con digamos almuerzo, por ejemplo, en un restaurante. Entonces aquí voy
a decir lugar de muerte, orden de
subrayado,
y vamos
a pasar por algunos parámetros Voy a decir arrancador. Plato principal y postre. Entonces puedo simplemente decir print, y voy a decir aquí, solo
voy a pasar para que sea sencillo
decir starter. Voy a usar concatenación de
cadenas, plato principal Y postre. Bien, tal vez podamos
apretarlo. Genial. Entonces ahora tendríamos que
poner en la información. Entonces digamos comida
subrayan info, y eso será en una tupla Entonces voy a poner aquí
los argumentos. Entonces para el entrante, digamos que tenemos puente de ajo. El plato principal sería
pizza y postre. Sólo podemos decir helado. Ahora queremos desempaquetar esta
tupla en argumento de función. Voy a llamar a la función, que es poner orden de subrayado Luego entre paréntesis,
agregaremos en la estrella y
luego diremos comida, subrayaremos info, y
eso lo va a enchufar en estos parámetros y sacarlo en esta declaración de
impresión Ahora podemos ejecutar nuestro código, y dice pan de ajo, pizza y helado. Perfecto. Lo que podemos hacer para
limpiar esto en realidad, es simplemente agregar una coma
entre ellos. Ahí vamos. Esta
salida necesaria. Muy bien, así es como podemos seguir adelante
y utilizar el desempaquetado de contenedores cuando
estamos utilizando el único asterix
para desempaquetar estamos utilizando el único asterix una lista o
tupla Así que aquí estábamos utilizando una tupla. Bien, entonces
esa es la primera parte. siguiente es cómo podemos
desempaquetar un diccionario
en argumentos de palabras clave Ahora, antes de continuar con eso, una última cosa que
quiero mencionar, recuerda cuando estamos usando esta estrella singular aquí astérix, aparte del hecho de que
desempaqueta la tupla listal, recuerda lo clave que la hace en argumento
posicional Entonces hay que estar consciente de que lo que
pones aquí, los valores o
los argumentos
que pones aquí,
una vez que añadimos en el astérix
a la tupla aquí cuando lo
estemos definiendo, va a ir en el orden
que especificaste originalmente en que especificaste originalmente tu tupla de ahí
convirtiéndolo
en Ahora tenemos que hacerlo
para argumentos de palabras clave. Para que podamos seguir adelante
y eliminar esto. Bien, así que continuemos. Así que definamos
nuestra siguiente función para continuar con el desempaque de
contenedores Entonces queremos transformar nuestros datos en un diccionario
en argumentos de palabras clave. Entonces voy a
definir mi función como muerte y voy a decir información de subrayado de grado, y luego voy a
pasar por varios parámetros Voy a tener nombre, grado, UNI, y voy a decir grado subrayado año
para el año de graduación Entonces queremos tener
el estado de cuenta impreso, y sólo voy
a mantenerlo sencillo. Voy a dar
salida literalmente nombre, y voy a decir plus y agregar
en el coma entonces voy a tener licenciatura voy a tener UNI y graduado Perfecto. Ya lo tenemos todo listo. Ahora sigamos adelante y almacenemos
nuestros datos en un diccionario. Voy a llamar a mi diccionario educación
subrayado detalles, y eso va a estar
dentro de mis llaves Ahora bien, aquí es donde entran en juego
los argumentos de las palabras clave. Las claves del diccionario
van a ser tus nombres de parámetros
que van a ser los mismos que name, degree, uni, y grad year. Vamos a
querer decir aquí nombre. Para empezar, y eso
va a ser equivalente a podría decir el valor o
en nuestro caso, el argumento. Entonces voy a decir que no, coma. continuación, vamos a tener grado, ya que eso es lo que tenemos a
continuación en la lista aquí, y eso se va
a fijar a BC en TI, podemos decir. Entonces el siguiente parámetro aquí
será la universidad, así podemos decir UNI que
va a ser igual
a para ciudad de Capetown, y luego finalmente,
tenemos subrayado de posgrado, que va a ser
equivalente a 2019 Derecha. Ahora, dado que 2019 es un int y estamos usando
concatenación de cadenas, la regla es que necesitamos
lanzarlo a una cadena aquí Tienes que decir más
STR así que tal vez tengas que
hacer un poco de
casting, así como así. Vamos a poder
administrar este entero. Solo un pequeño ajuste
que necesitas hacer. Yo sólo voy a hacer zoom por
ahí para ti. Recuerden cuando dije que esto se va a centrar
en los argumentos de palabras clave. Nombre en el diccionario, esto sería visto como nuestras claves y lo que asociamos
son nuestros valores, como puedes ver aquí mismo. Ahora, cuando estamos trabajando
con argumentos de palabras clave, se va a tratar
como nombre, grado, UI, y graduado bajo
año cuadrado serán los parámetros. Estos serán nombres de parámetros y van a ser iguales a los como puedo decir los
argumentos que serían
Ano BSEty University
of Cape toown Intenta visualizar ese
proceso a mano. Bien. Entonces, una vez que estés
contento con todo eso, puedes seguir adelante y
llamar a tu función. Entonces al final, podemos
seguir adelante y hacer precisamente eso. Entonces la función aquí es
grado bajo info cuadrada. Entonces voy a decir grado bajo info
cuadrada, y luego
queremos llamarlo. Recuerda desempacar
el diccionario, necesitas agregar dos astérixs y luego hacer referencia al nombre
del diccionario, que es educación
bajo Así. Y una vez que estés
contento con todo, puedes seguir adelante y ejecutar
ese código. Ahí lo tenemos. Podemos ver que dice honor BSE e IT Universidad de Ciudad del Cabo,
2019. Bien hecho. Así es como puedes ir a
una cobertura y desempaquetar un diccionario en argumentos de
palabras clave Hagamos otro ejemplo. Podemos seguir adelante y
eliminar todo eso. Otra forma en la que
podemos ir a un seto y comenzar todo
esto es que
podemos configurar algo para los detalles del
pedido como ejemplo Voy a establecer
lo siguiente. Diré DF Ordenar
detalles de subrayado. Y podemos decir, sigamos adelante y
pongamos voy a tomar un trago. Tamaño y leche. Podemos tener un tipo de
leche, por ejemplo. Podemos tener leche de vaca, leche de
almendras, etcétera. Perfecto. Ahora, la declaración
impresa. Lo que voy a seguir
adelante y hacer aquí es que solo voy a
decir detalles del pedido, y podemos seguir adelante
y pasar lo que necesitamos. Aquí voy a decir
bebida Agrega en las cotizaciones, voy a tener cotizaciones
y leche. Genial. Ahora, lo que podemos hacer es que ahora
podemos seguir adelante y
definir nuestro diccionario. Entonces voy a seguir
adelante y decir, llamemos a esta bebida artículos para beber. Bien, ahí vamos. Llámenlo así. Entonces, primero, recuerden, estamos
usando argumentos de palabras clave, así que bebe, talla y leche. Entonces necesitamos referirnos a los nombres
de los parámetros. Entonces vamos a tomar colon, y eso va a
ser digamos café. Tamaño, grande y leche. Diré almendra. Ahí vamos. Entonces tenemos artículos para beber. También podemos simplemente eliminar
algo de espacio a cada lado. Bien, ahora tenemos que
llamar a nuestra función, para que pueda seguir adelante y decir
orden, subrayar detalles Y dentro de parenses, bien, vas a decir
Asterix astérix,
bebe Rey, subraya artículos bebe Eso va a
seguir adelante y asignarlo como bebida es igual al café, el
tamaño es igual a grande, la
leche es igual a Almendra. Bien, así es como
encajará todo eso y
podamos ejecutar el programa. Podemos ver aquí todos los
detalles, café, olmos grandes. Entonces tal vez necesites
revolver ese espacio. Ahí vamos. Y
ahí lo tenemos. Así que también podemos hacer que este bit más limpio. Bien,
ahí estamos. Así que ahora podemos ver
que está un poco más claro. Muy bien, chicos. Entonces eso es esencialmente todo. Así es como podemos
desempacar nuestro contenedor. Entonces puedes ver que es una forma muy
útil si quieres
simplificar la gestión de tus argumentos y pasarlos a
tu función, etcétera Muy bien, chicos. Entonces eso es todo para estos ejercicios prácticos de
laboratorio.
46. Argumentos locales y globales: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en el argumento
local y global. Entonces echemos un vistazo. Derecha. Entonces y los argumentos globales se refieren a donde una variable
es accesible en un programa. Ahora, echemos un vistazo, en primer lugar
, a los argumentos locales. Ahora bien, estas son
esencialmente variables que se crean
dentro de una función. Solo se pueden usar dentro de esa
función en particular y en ningún otro lugar, y desaparecen después la función termine de
ejecutarse o ejecutarse. Argumentos
globales por otro lado, se
trata de variables
que se crean fuera de la función
o de una función. Se pueden usar
dentro y fuera de las funciones y persisten a
lo largo del programa. Podemos ver que hay muchas más ventajas para los argumentos
globales como
podemos ver aquí. Sin embargo, todo va a depender de los
requisitos y necesidades de tu proyecto. Ahora, echemos un
vistazo a la analogía para simplificar aún más esto para nosotros. Ahora, quiero que
piensen en una ciudad como ámbito local y un
país como alcance global. Digamos que elegimos la
ciudad de Ciudad del Cabo como ejemplo de alcance local y el país Sudáfrica
como el alcance global. Entonces Ciudad del Cabo, en general, que es una ciudad, por lo que una ciudad puede recibir sus propios fondos
locales del alcalde, y esto puede considerarse
como argumentos de función. Ahora bien, estos fondos pertenecen
sólo a esa ciudad, y bien, no afecta
el presupuesto nacional. Ahora bien, si miramos a un
país, por ejemplo, podemos imaginar que el país
proporciona un presupuesto nacional a todas las ciudades y que cada ciudad
tiene acceso a este presupuesto, pero si una ciudad lo modifica, afecta a todo el
país como resultado Entonces ojalá esta analogía te
ayude a darte un poco de mejor comprensión con argumentos
locales y globales Nos vamos a centrar en el ejercicio
práctico sobre esto. Es un
concepto bastante sencillo de entender. También puedo agregar un ejercicio práctico
adicional con él,
pero eso es solo algo que
quería mencionar en términos de las analogías
47. Análisis del alcance de los argumentos - [Laboratorio]: Hola a todos y bienvenidos
al próximo ejercicio práctico de laboratorio, que va a estar enfocado en argumentos
locales y globales. Así que comencemos. Primero, queremos
comenzar con global. Bien. Ahora, los argumentos globales
y locales son esencialmente parte del
trabajo con variables. Entonces definiríamos
algo conocido como una variable global en términos
de argumentos globales. Entonces, si tuviera que definir una
variable y decir nombre es igual, quiero decir, Esto puede
verse como una variable global. Si seguimos adelante y
lo llamamos dentro de nuestra función. Entonces si ahora defino una
función, muy simple, esa es definida por def Grit Entonces la función es Grit. Puedo decir imprimir.
Puedo saludar. Y entonces solo puedo usar la
concatenación y decir más nombre, y eso va a seguir
adelante y agarrar esta variable que es nombre y utilizarla directamente
en mi función Y así es como podemos
acceder a una variable global. Entonces cuando llamamos a la función, sólo decir saludar,
va a decir hola y luego RNO Ahora bien, si sigo adelante
y ejecuto este código, va a decir hola RNO Entonces así es como
podemos ir a una cobertura y definir una variable global Entonces la variable global es
accesible dentro de una función a menos que esté siendo
modificada de alguna manera. Ahora, déjame mostrarte cómo se ejecuta
una variable local. Así que simplemente quitarás
esto aquí mismo, y hagamos algunos ajustes. Bien. Podemos mantener nuestra función
Saludo por ahora. Y fue en nuestra función, podemos decir mensaje
es igual hola aro. Y puedo decir mensaje impreso. El mensaje aquí,
hay una variable estaba en mi función que dice
mensaje y el valor es hola honor y estamos
diciendo mensaje impreso. Entonces cuando saludo, va a dar salida hola ni
porque la impresión, como puedo decir que la funcionalidad de
impresión esta dentro de la función, y estamos usando esta variable localmente dentro de la función. No está afuera. Entonces, si
tuviera que ejecutar este programa, va a dar
el mismo resultado. Pero para mayor claridad, solo puedo cambiar esto para que
realmente puedan ver el cambio. Hola, John, va
a decir hola, John. Pero si quisiera dar salida a este mensaje y quería
acceder a él fuera
de mi función, si fuera a decir imprimir, mensaje. Vas a ver aquí
cuando lo destaco, dice, mensaje no está definido. Entonces esto es lo que quiero decir
con local y global. Esta es ahora una variable local. Las variables locales solo
existen dentro de la función y no
se puede acceder fuera. La razón por la que estamos
obteniendo un área aquí diciendo mensaje impreso es porque la variable mensaje, por
supuesto, es local. Derecha. Así es como podemos
seguir adelante y ver las diferencias en términos de argumentos locales y
globales. Estos se refieren a
donde una variable es accesible en un programa en
particular. Se puede ver la
diferencia ahí, tenemos global y tenemos local. Recuerda, todo
lo que definas dentro esa función como variable
permanece en la función. Cualquier cosa fuera
que sea, por ejemplo, variable será
accesible en todas partes. Recuerde que hay un
alcance en cuanto a dónde se puede
utilizar y tal. Derecha. Eso es todo para este ejercicio
práctico de laboratorio. Sé que fue bastante
breve y breve, pero es un tema bastante simple realmente para agarrarte la cabeza. Pero en fin, quería
cubrirlo, así que eso es tal.
48. Utilizar la palabra clave global: [laboratorio opcional]: Hola a todos, y bienvenidos
al siguiente ejercicio práctico, que va a estar enfocado en utilizar la
palabra clave global en funciones. Ahora bien, esto es un bono, debería decir ejercicio práctico con
lámpara. No tienes que
hacerlo, pero es algo
extra en lo que estaba
pensando y vi que podría
ser útil agregar, pero definitivamente es
algo que sí surge a veces en PySon en un espectro
intermedio Entonces echemos un vistazo.
Entonces la palabra clave global. Así que déjame mostrarte
por defecto si solo queremos utilizar una
variable global solo para leer. ¿Bien? Entonces lo que quiero decir
con eso es lo siguiente. Si yo fuera a decir contar es igual a cinco, un
número, por ejemplo. Entonces iba a definir
una función y decir show, underscore count En mi colon. Entonces
digamos que tengo una declaración impresa
y digo conteo es, y solo agrego en conteo ahí, y luego llamo a la función
diciendo show count. Se va a ejecutar esta línea, que va a decir count
is y el valor de count es cinco y ya veremos que
cuando llamemos a esta función. Bien. Ahora bien, esto, por supuesto, es usar una
variable global porque la
estamos haciendo referencia afuera y podemos utilizarla
dentro de esta función Déjame seguir adelante
y ejecutar este código. Y dice que el conteo es cinco. Bien. Derecha. Entonces
esa es esa parte. Ahora, la
palabra clave global se utiliza si quieres modificar
tu variable. Entonces, si tuviéramos que modificar
este código, digamos, quiero ajustar este valor que está unido
a esta variable. Lo que puedo hacer está dentro
de la función aquí, puedo decir, global. Y
esa es la palabra clave que necesitamos. Y voy a
adjuntar eso para contar porque count se trata
como una variable global, entonces decimos conteo global, y esto es necesario porque
estamos cambiando conteo explícitamente. Y lo que queremos
hacer es incrementar. Solo queremos agregarle uno,
así puedo decir contar, y el
espacio más es igual a uno. Entonces va a tomar
el valor actual y agregarle uno para agregarlo. Entonces será entonces, claro, cómo puedo decir que
entonces serán seis. Bien. Entonces lo que podemos hacer entonces es
que podemos mostrar el conteo ahora, y luego va
a sacar seis aquí. ¿Bien? Entonces ese
será el conteo que hemos ajustado aquí
dentro de esta función. Entonces, si tuviera que ejecutar este código, ahora
podemos ver que el conteo es seis viniendo de esta función. Así que seguimos adelante y agarramos
esa variable en particular, le agregamos una e
imprimimos el resultado
arrastrando esa
variable global y ajustándola Entonces, si queremos modificar una variable global dentro una función y no
solo leerla, necesitaríamos
especificar explícitamente esta palabra clave global, y ese es el
objetivo de ello
modificar una variable global
dentro de una función, y eso suele estar restringido
si no tenemos eso. Entonces si, por ejemplo,
decido hacerlo
sin decir Global, y solo saco esto. Y digamos contar más es igual a
uno y luego contar, ya
verás, si ejecuto
esto, va a mostrar
un error aquí. Error local no enlazado. Ahora es tratar esto como una variable local
en cierto sentido porque eso es lo que
se supone porque estamos haciendo algunos ajustes aquí en juego. Sólo estamos diciendo que
contar más más es igual a uno y no puede leer de dónde viene
este conteo. Es por eso que
necesitarías seguir adelante y
declarar explícitamente el recuento global, y eso
te permitirá seguir adelante y obtener
la salida designada. Bien chicos. Eso es en términos de este ejercicio aguinaldo. Así que solo un poco más en toda
la perspectiva global y
local del alcance. Así que adelante y toma
eso. Todo bien.
49. Envío de variables como argumentos: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en enviar variables como argumentos. Entonces echemos un vistazo. Todo bien. Ahora bien, no
siempre tienes que establecer un valor codificado duro con
nuestras llamadas a funciones. También podemos pasar por
variables en su lugar, por lo que es un concepto muy simple. Entonces echemos un vistazo a lo que
hemos hecho antes
en el curso. Así que anteriormente,
hemos estado definiendo nuestras funciones,
estableciendo un parámetro. Entonces, por ejemplo, name,
y luego agregar el argumento directamente a la
función que estamos llamando. En este caso, por
ejemplo, saludo. Estamos pasando en no
con un valor codificado duro para luego sustituir el parámetro
name y luego quedar agarrados en la declaración print donde decimos hola allí en el
nombre, que será nu Lo que también puedes hacer es
definir una variable exterior. Entonces puedes crear un programa
como este donde todo lo que
haces es definir una variable
fuera de tu función, y luego estableces ese valor. Y en lugar de poner en no
directamente como podemos ver aquí, simplemente
pasamos por esa variable en
particular, que está primero en
el nombre cuadrado, que va a sustituir
nombre aquí como rno Por eso tuve
el comentario ahí, y va a imprimir exactamente
los mismos resultados. Entonces esto es sólo algo que quiero mencionar para que estés enterado. Simplemente puedes pasar por variables siempre y cuando las hayas
asignado de antemano. Se va a ejecutar
los mismos programas, la misma salida, exactamente similar al
que te mostré justo aquí en
el lado izquierdo, que estaba codificado duro. Sólo algo por mencionar, es algo muy fácil
y sencillo aprender y entender. Eso es algo que es importante que creo que
deberías saber, y así es como podemos enviar
variables como argumentos.
50. Trabajar con variables como argumentos - [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en enviar variables como argumentos
en funciones. Entonces comencemos. Entonces este va a ser un ejercicio
bastante sencillo, así que no va a
ser tan extenso. Así que sigamos adelante y
solo practiquemos un poco. Así que definamos una función
simple. Voy a decir saludo sordo. Quiero establecer mi nombre de
parámetro como nombre. Entonces quiero dar salida a la
siguiente declaración que dice hola y luego podemos agregar en
coma y pasar por nombre Ahora bien, lo que estamos
acostumbrados a hacer es llamar a la función y luego agregar directamente
el valor. Podemos, por ejemplo,
solo poner, digamos, Katie ejecutar el código
y dice hola Katie. Ahora, digamos que no queremos
agregar los valores directamente, sino que queremos ir en una cabeza y asignarla primero
a una variable. Lo que puedes hacer es
decir, por ejemplo, nombre de pila, y
podemos seguir adelante y establecer
esto para digamos Katie. Entonces aquí donde estás
llamando a tu argumento, acabas de poner en nombre, otra vez solo
quiero configurarlo. Ahora bien, si
ejecutas tu código vas a mostrar exactamente
los mismos resultados. Digamos que puedes seguir
adelante y enviar tus variables como argumentos. Hagamos otro ejemplo. Di sordo y
voy a decir aquí, favor beber voy a pasar por aquí
beber imprimir declaración, y voy a decir, me gusta beber. Y vamos a poner en bebida. Entonces afuera, puedo seguir adelante y decir bebida favorita de
subrayado, llamar a la función, y
puedo enchufar ahí, por
ejemplo, Ejecutar el código Dice, me gusta beber Bien. Sigamos adelante y
cambiemos esto alrededor. Definamos una variable
afuera y pongamos esto ya que incluso podemos decir
esto como bebida es igual. Lo definimos justo
aquí y luego
podemos pasar por la bebida misma. Eso va a ir en un
seto y sustituir lo que tenemos aquí mismo en
el parámetro y si fuéramos a ejecutar el código,
me gusta beber también. Bien. Entonces esa es otra forma en la que
podemos seguir adelante y hacerlo. Entonces incluso si los
nombres están establecidos aquí, así que beber aquí va a tomar en cuenta la variable
aquí, sustituir beber aquí, que es un parámetro,
y eso es muy importante porque
a veces te encuentras código y varios programas y ajedrez donde lo
mantienen igual solo
para poner a prueba tus conocimientos. Así que recuerda, la bebida
aquí es un parámetro, o, y eso va a
dar salida a dicho valor. Beber aquí es una variable. Recuerde que si resalta, puede ver la variable
y el parámetro. Téngalo en mente. Pero lo que puedes hacer para
ayudarte a distinguir, sobre todo si estás
empezando, puedes
diferenciar claramente entre los dos para que sepas que, estas son mis variables,
estos son mis parámetros. Otra vez, claro, si
corro me gusta tomar té. Eso es sólo un
poco más de práctica en el envío de argumentos
como nuestros argumentos. Eso es en ese ejercicio.
51. Pasado de parámetros por valor o referencia: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en el paso de parámetros por valor o referencia.
Entonces echemos un vistazo. Todo bien. Ahora, cuando pasas
una variable a una función, Pyson la maneja de
una de dos maneras Pasar por valor o
pasar por referencia. Ahora, echemos un
vistazo a cada uno de estos comenzando con
pase por valor. Ahora, con el valor pass by, la función obtiene una copia
de la variable original, y los cambios dentro de
la función
no afectan a la variable
original. Ahora bien, esto funciona para tipos de datos
inmutables, y para eso, tenemos int,
so integer, float, SDR,
for string, for string, Tan importante recordar que cuando estás
pasando por valor, va a funcionar para tipos de datos
inmutables
y necesariamente estos
cuatro tipos de datos Entonces tenemos pase por referencia. Ahora, en este caso, la función obtiene una referencia o una dirección
de memoria de dicha variable, y cualquier cambio dentro de
la función
afectará a la
variable original que se definió. Ahora bien, esto funciona para tipos de datos
inmutables, no inmutables, sino
mutables, que incluirán una lista,
dict y un dict Eso sería en términos
de pase por referencia. Chicos. Eso es todo para la visión
teórica. Sigamos adelante y sumérgete
en lo práctico.
52. Explora los valores de los parámetros y las referencias - [Laboratorio]: Hola a todos, y bienvenidos
al próximo ejercicio práctico de laboratorio, que va a estar
enfocado en el paso de parámetros por
valor o por referencia. Entonces lo primero que
vamos a hacer es que nos vamos a centrar en pasar por valor, que va a estar
enfocado en tipos de datos inmutables, como enteros Tan inmutable, el significado
no puede cambiar el valor una vez que se ha configurado y
pasado y asignar Bien, así que comencemos. Entonces lo que quiero hacer
es definir una funciones. Diré Def, cambie el número de
guión bajo. Ese será mi nombre de función. Entonces quiero pasar por
X o establecer X como mi parámetro. Entonces voy a decir imprenta. Y voy a
agregar algo de texto para decir dentro de función, dos puntos. Después agregaré en espacio,
coma, y luego X.
Entonces quiero llamar a
mi función y decir cambiar número de guión bajo Y lo que voy a hacer es que
voy a pasar a través
de unos valores codificados duro. Voy a decir
cinco, por ejemplo. Entonces cuando siga adelante
y ejecute este código, va a decir
dentro de la función cinco. Entonces podemos ver que se pasó este
argumento, y sustituyó a X, y luego se
recopiló X y se agregó aquí a
la función print, y al final salgo cinco. Genial. Ahora, sigamos adelante y fijemos esto como una
variable por ahora. Establecer num es igual a cinco, y ahora voy a pasar ahora
voy a pasar una variable aquí a una variable como argumento para
sustituir el parámetro. Ahora lo que puedo hacer es seguir
adelante y ejecutar el código dentro de la función
cinco y podemos ver que se ha pasado
como debería haber sido. Perfecto. Aquí es donde entra en juego
la parte interesante. Ahora, digamos, por ejemplo, me dirijo a mi
función y digo que X ahora va a ser diez. Pensando para ti mismo
en lo que va a ocurrir. Recuerden lo que dije,
Inmutable, sin cambios. Entonces, si tuviera que seguir adelante y configurar esto
y ejecutar el código, va a decir diez. Ahora bien, lo que está sucediendo aquí es que
el valor num aquí que
se está estableciendo está siendo como
puedo decir que se está
pasando al parámetro X, pero luego estamos redefiniendo
X y configurándolo a diez Por lo que el valor que se
mantendrá en la función local siempre
será diez. Ahora bien, la parte que
voy a mencionar en inmutable es que el original va a permanecer sin cambios Entonces lo que quiero decir con
eso es que si digo print y salgo función
lateral, y sigo adelante y digo num vas a ver que la
función externa no cambia. Entonces esto va
a ser inmutable, así que no cambia afuera, no importa lo que hagamos aquí fue en la
propia función localmente No va a
hacer ningún cambio. Entonces no hay ningún efecto en num
fuera de la función. Entonces esto es inmutable. Ahora bien, si tuviéramos que
configurarlo de tal manera que se
volviera mutable, entonces los cambios
se verán afectados afuera Lo que podemos hacer es
que podemos probar esto, por ejemplo, con una lista. Entonces ahora les voy
a mostrar cómo
podemos pasar por referencia
al tipo mutable Entonces hagámoslo
ahora. Entonces la nota clave para ver aquí es que no cambió fuera del valor
num independientemente del ajuste que hicimos en la función,
no cambió Entonces déjame mostrarte
dónde va a cambiar por un
tipo mutable como una lista Por lo que los cambios afectarán
el resultado original. Permítanme seguir adelante y
definir una nueva función
, anuncio de definición en el ítem de puntaje, y voy a establecer el
parámetro como mi lista Bien, lo que voy a hacer por ahora es que
solo voy a decir impresiones dentro de función
dentro de función. Con entonces voy a
tener mi lista de puntajes, y solo queremos
agregar en esa coma Entonces queremos llamar a esta función en
particular, pero necesitamos agregar alguna
información a una lista. Entonces voy a decir números, iguales, y voy
a decir uno, dos, tres. Entonces podemos ver sumar
debajo del ítem cuadrado, y vamos a decir números. Así que vamos a pasar por esa lista en particular
aquí mismo a mi lista aquí, y luego va
a simplemente seguir adelante y generar lo que se está ejecutando
dentro de la función. Entonces podemos seguir adelante
y ejecutar esto ahora, dice dentro de la función
uno, dos, tres. Eso es exactamente lo que pasamos. También quiero mostrarte
lo que muestra afuera. Entonces si digo imprimir,
fuera de función. Y si fuera a decir números, Dentro de la función uno, dos, tres, fuera de la función
uno, dos, tres. Entonces déjame seguir adelante y modificar la lista original
dentro de la función. Entonces lo que puedo hacer es
poder agarrar mi lista, que estoy agarrando aquí
del parámetro, que tiene asignado valor
establecido en números como uno,
dos, tres, y puedo anexar
a esta lista, por ejemplo, puedo usar un método de pluma, así puedo decir punto pluma
y pasar por cuatro Entonces eso significa que la función ahora va a cambiar a uno, dos, tres, cuatro, pero queremos ver si cambia afuera. Si ejecuto esto, G
a tres ahora que la función interior es ahora 1234 y la
función externa es 1234. Entonces, aunque
estemos configurando esta lista
dentro de la función, también
va a tener
consecuencias externas. Entonces en otras palabras, como
se puede ver que la lista se modifica fuera
de la función. Como es también fue
en la función. Entonces esto lo hace mutable. Por lo que los cambios afectan al original. Entonces el original eran
los números uno, dos, tres. Como continuamos antes
y miramos al final, no
se pudo
cambiarlo porque es inmutable. Todo bien. Entonces ojalá, esto te dé una gran comprensión de
lo que quiero decir con mutable, inmutable en términos
de cambios y cómo van
a entrar en juego todos. Derecha. Ahora, hagamos
algunos ejemplos más. Bien, ahora el siguiente
que quiera hacer va
a ser de
tipo inmutable esta vez Entonces significa que no hay cambio, y eso va a ser una cadena. Entonces voy a decir sordo,
cambio, subrayado
texto, solo una función Va a pasar por texto. Y voy a decir por
ahora función de lado de impresión. Texto. Entonces puedo decir
cambio, subrayado texto Y lo que voy a hacer
por ahora es simplemente saludar. Bien, ahí vamos.
Eso es lo básico. Ahora vamos a asignar una
variable. Diré mensaje. Hola. Ahora voy a pasar
por una variable a través del argumento. Ejecuta eso ahora. Hola. Bueno. Estoy haciendo esto en incrementos para que solo puedas aprender de cada parte cómo
estoy configurando todo esto. Ahora las funciones externas, así que voy a primero
de diré impresión, función
externa. Y ese será mensaje. Ahora lo que quiero hacer es hacer una actualización estaba en la función, pero antes de hacer eso,
permítanme ejecutar de nuevo este código. Así se puede ver dentro de la función, hola, fuera de la función, hola. Ahora bien, si tuviera
que hacer un cambio aquí estaba en la
función local y decir: Bien, texto ahora va
a ser bueno Adiós. Entonces ahora va a ir en
un seto y ser adiós. Entonces ese va
a ser el cambio, y sigo adelante
y ejecuto este código. Vas a ver que va a ser adiós en la función interior, y afuera,
va a ser hola. Para que puedan ver, cambiando el
texto dentro de la función, y el original que
teníamos aquí mismo, por supuesto, permanece sin cambios y
no hay impacto ni cambio
en él en absoluto. Entonces puedes ver
aquí que hay una diferencia en el tipo. Gretch. Rico. Ahora, sigamos adelante y pasemos de nuevo
por referencia. Por lo tanto tipo mutable, y uno
de ellos es un diccionario. Ese es un tipo mutable. Así que sigamos adelante y
definamos nuestras funciones. Diré Def, actualización
bajo dict escolar. Y podemos simplemente seguir adelante y definir los parenses
y podemos poner aquí, podemos seguir adelante y poner en el primeter de M dict
para mi Entonces podemos decir print por ahora, y quiero decir
dentro de función, dos puntos, y vamos
a pasar por mi dict. Ahora lo que quiero
hacer es referirme a actualizar dict y seguir adelante y mantener esto abierto
por el momento los parenses y luego
puedo definir un diccionario Diré persona, igual, y voy a establecer el valor clave aquí, los
pares de valores clave, es singular. Diré el nombre de colon Alice. ¿Yo quería pasar esto a través de? Entonces voy a decir persona, y persona va a
sustituir mi dict, y va a
decir dentro de función, y entonces mi dicta
será persona, que mostrará el nombre Alice
dentro de la función Vamos a ejecutar esto. Dentro de
la función, nombre Alice. Perfecto. Bien, entonces
hagamos nuestros ajustes. Entonces fuera de función,
voy a decir print, outside function. C en el espacio. Tengo persona. Ver es lo mismo por dentro y
por fuera porque no hemos
hecho ningún ajuste. La funcionalidad de
la declaración impresa es solo leer desde
fuera de mi código. Déjame seguir adelante y marcar la
diferencia dentro de la
propia función y decir mi
underscorechazar, aquí, voy a agregar
en un nuevo par de valores clave Voy a fijar la edad y
voy a establecer eso en 28. Ahora vamos a tener un
nuevo par de valor clave agregado para nombrar a Alice. También tendremos edad y
28 y eso va
a ajustar y cambiar la función interna y
este resultado también
va a afectar lo que vemos
en la función externa. Entonces déjame seguir adelante
y ejecutar el código. Y ahí vamos, podemos
ver que ese cambio es, como se puede ver mutable, los cambios
tras los cambios afectan
al original Entonces persona se ha cambiado la lista de
personas. Como podemos ver fuera
de la función, también ha cambiado. Bien, así que ahí lo tenemos. Así es como se puede pasar
por valor y pasar por referencia y la
diferencia entre tipos mutables y mutables Recuerde, los cambios mutables afectan
al original y los cambios
inmutables no afectan al Todo bien. Entonces ahí lo tenemos.
53. El operador de asterisco: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en el operador de Asterix Así que sigamos adelante
y echemos un vistazo. Derecha, operador Asterix. Ahora, el
operador asterix, como podemos ver, denotado por un Asterix es un operador
especial que tiene diferentes usos dependiendo de
dónde y Ahora, por supuesto, en este curso, y si alguna vez has hecho un curso
PySon amigable para principiantes antes, es posible que hayas visto a este operador cuando estás, por ejemplo, multiplicando y tal,
y también hemos aprendido un poco más en
términos de arcos y quarks cómo podemos Pero solo quiero darte algunos casos
de uso más y
los escenarios de dónde se usa y cómo
se usa, etcétera Así que sigamos adelante y zambullamos. Ahora, sólo te voy
a dar una lista de las formas más comunes. Entonces aquí están los más
comunes de una manera sencilla. Entonces podemos usar asterix
para multiplicar,
así en matemáticas, podemos usarlo empacando con listas y
tuplas Puede usar arcos de Asterix para
múltiples argumentos de función. Podemos usar quarks dobles
asterix para argumentos con
nombre en
funciones y
podemos usar un solo asterix y un doble asterix
para pasar listas
y para Como puedes ver,
hay muchos casos de uso en los que
podemos utilizar asterixs Derecha. Yo solo quería darte un poco de resumen, así que
tienes una visión general Vamos a tener un ejercicio
sobre el operador asterix, eso va a ser un
poco más diverso e integrado solo para
alguna práctica y Pero eso es todo lo que
quería mencionar sobre el operador asterix
54. Aplicación del operador asterisco: parte 1 - [Laboratorio]: Hola a todos. Y bienvenidos al próximo ejercicio práctico de laboratorio, que va a estar
enfocado en aplicar el operador Asterix a
múltiples casos de uso en Ahora, por supuesto, hay un
sinfín de casos de uso disponibles. Sin embargo, voy a cubrir mayoría de los comunes a los
que te enfrentarás, y también voy a agregar uno o dos
extra en
también en términos de contenido
extra extra que está un poco ahí fuera. Así que comencemos.
En primer lugar, el caso de uso más común en matemáticas es
la multiplicación. Entonces podemos decir,
por ejemplo, resultado es igual, y puedo decir cuatro multiplicado o este es el astérix por dos Entonces en matemáticas, el
símbolo de astérix significa multiplicador. Puedo decir impresión, resultado.
Y me dan ocho. Genial. Ahora,
vayamos un poco más allá. Digamos que tengo num uno es igual a
decir cuatro, num dos, cinco. Entonces sólo puedo decir
resultado final es igual al número uno, se multiplica por num dos Y vamos a seguir adelante e
imprimir resultado final. Y es correr este 20. Bien, esa es otra
forma en la que podemos hacerlo. Lo que también podemos
hacer es hacerlo
en base a resultados para
obtener un resultado final. Entonces lo que puedo decir
aquí es resultado uno, y eso va a implicar
cuatro multiplicado por cuatro. resultado dos va a implicar
tres multiplicado por tres, y entonces el resultado final esencialmente
va a ser resultado uno y luego otra vez, multiplicarlo por resultado dos. Entonces vamos a
obtener este resultado, almacenarlo en esta
variable resultado uno. Vamos a obtener
este resultado,
almacenarlo en variable resultado dos. Entonces obtenemos otra variable y multiplicamos los resultados
de lo que ahí tenemos. Guarde esto y ejecute el código. Oh, necesito decir
imprenta, discúlpeme. Impresión, resultado final. Y obtenemos 144. Entonces así es como podemos ir
de cabeza y hacerlo
con matemáticas para multiplicar números Lo que también
podemos hacer es repetir cadenas
y listas también. Entonces, por ejemplo, si digo
texto es igual a alto, John. Afuera, puedo añadir en el
asterisco y decir tres. Entonces puedo decir imprimir Texto. Entonces ahora si sigo adelante
y ejecuto este código, va a decir: Hola,
John, hola, John. Hola, John. Bien. Entonces eso es
lo que podemos hacer al respecto. Ahora bien, lo que quiero
hacer en realidad es agregar un espacio ahí. Aquí vamos. Hola John, Hijohn un
poco más claro para ver ahora. Y sólo lo va a
multiplicar por tres. Ahora, como estamos
trabajando con cuerdas, sólo
lo va a
repetir tres veces. Así es como se
aplica este astérix con cuerdas. A diferencia de los números,
en realidad va a realizar la funcionalidad misma en
términos de multiplicación cruda Ahora, podemos ajustar
esto en realidad. Entonces el texto uno es alto. El ext dos es John Doe. Y podemos decir
resultado final es igual. Y lo que voy a hacer aquí
es decir veces dos por dos. Y luego voy a decir
texto uno más ext dos. Así que estamos usando la
concatenación de cadenas aquí, y esto funcionará muy bien porque actualmente estamos
tratando con Entonces el texto uno va
a tener el resultado de altos tiempos altos dos, y luego John Doe,
John Doe veces Y luego solo
los combinamos a ambos juntos. Y podemos simplemente imprimir esto, así puedo decir imprimir
resultado final y ejecutar este código. Alto, alto, Jon Do, Jon. Entonces así es como podemos lidiar
con cadenas repetidas. Derecha. Ahora, también podemos trabajar
con listas repetidas. Entonces si digo números iguales, y en mi lista, tengo uno, dos, puedo decir por tres, luego imprima la lista y
notarán si ejecutamos
esto tiene uno,
dos, uno, dos, uno, dos, uno, dos. Entonces, en vez de crear podrían decir tres listas
separadas, se podrían decir tres listas
separadas, va a modificar
lo que hay en la lista tres veces y aún así mantenerlo en una
lista singular como podemos ver aquí. Entonces eso es lo que la
multiplicación hará por ti. Ahora bien, podemos hacer
esto un poco más complejo, ¿debo decir? Podemos tener números dos, y pongamos
aquí, por ejemplo, cuatro, cinco por dos. Y entonces podemos decir de nuevo
resultado final, iguales. Y como estamos
tratando con una lista, primero
necesitamos lanzarla
a una cadena, así podemos decir SDR,
números, más, así que estamos
haciendo concatenación de cadenas,
lanzar una cadena, lanzar una cadena, Y ahora, si fuéramos a
imprimir resultado final, obtenemos uno, dos,
uno, dos, uno, dos,
cuatro, cinco, cuatro, cuatro, cinco. Ahora, podemos ver que está
todo aquí juntos, pero está separado en este caso. Entonces, cuando estés usando la concatenación de cadenas
entre las dos listas, notarás en este caso,
que va a estar separada Así que a diferencia de cuando lo
estás haciendo solo. Entonces, si tuviera que
imprimir números como
viste antes y
tengo este resultado, se va a multiplicar
y sumar Bueno, en este caso, multiplicar por tres, entonces
va a mostrar una, dos, una, dos, y
una, dos, tres veces. Si tuviéramos que realizar
concatenación de cadenas en él, lo que va a pasar
es que va a separarse en sus dos entidades
y va a realizar su tipo de
funcionalidades separadas en su propia lista Derecha. Entonces ahí tenemos eso. Así que se hace multiplicación y masa, repetición de cadenas
y menos Derecha, siguiente, desempaquetando
listas y tuplas. Entonces esta es bastante simple. Así que muchas de las
cosas que también
veremos ahora también las hemos cubierto, así que también será una
revisión un poco agradable para ti. Digamos que tengo algunos
números y tengo uno,
dos, uno, tres y cuatro. Bien. Digamos que digo print, y lo que podemos hacer es que
podemos agregar en el asterix, y esto va a
desempacar nuestra lista Entonces voy a decir números. Así que recuerda, cuando estés
desempacando tu lista, agregarás en el
único asterix Y podemos seguir adelante
y decir código de ejecución, y tenemos uno,
tres y cuatro. Ahora bien, esto también aplica si estás trabajando
con tuplas también Entonces, si poco a poco
cambio esto a tuplas, agregue en singular, el asterisco singular,
disculpe, y diga código de ejecución También va a
devolver lo mismo. Entonces así es como
desempaquetarías tus listas y tuplas. Entonces expandiendo los elementos
de tu lista desde la impresión o
pasando a las funciones, aquí es donde va a
ser realmente útil. Ahora, digamos que quiero
recopilar múltiples argumentos usando la notación Asterix args Entonces lo que podemos hacer para lograr este objetivo es que podamos
crear una función, así quiero decir
números de show de muerte y voy a pasar en Rx colon e imprimir arcos Entonces quiero llamar a mi función, y voy a simplemente seguir
adelante y
pasarlos en uno, dos y tres. Y todo eso
se va a armar dentro
del parámetro args
y va a
salir aquí en args
sin ese Así sería como también podemos utilizarlo en una
perspectiva de función con arcos Para que podamos seguir adelante
y ejecutar el código. Tenemos uno, dos, tres,
y esta vez está en un formato de tupla ya que se puede
ver cómo ha sido de salida Derecha. Entonces así es
como podemos hacer eso. Así es como podemos tomar
los múltiples argumentos y almacenarlos como tupla Ahora, también podemos recopilar argumentos de
palabras clave, y podemos almacenarlos como un diccionario
utilizando quarks. Para que podamos eliminar eso y decir sordos, mostrar, subrayar info Y aquí solo puedo decir
quarks, anuncio en dos puntos, y recuerda cuando digo print, quarks, y luego queremos llamar
a nuestra función Entonces vamos a decir
show y underscore info, y dentro de los paréneses
podemos seguir adelante y pasar Recuerda, argumentos de palabras clave esta vez ya que estás
trabajando con quarks de autos, voy a decir
nombre igual, no, y podemos decir que la edad es igual, y podemos seguir adelante y decir, vamos por 29, y podemos seguir
adelante y ejecutar este código Ahí vemos esa salida del
diccionario. Entonces tenemos el nombre
clave del honor y la clave de edad de 29.
Entonces ahí lo tenemos. Así es como podemos
utilizarlo con quarks, también. Entonces aquí tenemos dobles astérixs
que necesitamos aplicar. Genial. Ahora bien, lo siguiente es algo bastante nuevo
que no hemos mirado. Así es como podemos desempacar
con el símbolo de asterisco. Y por ejemplo, si queremos
saltarnos valores medios en
lista, por ejemplo. Entonces si yo fuera a decir primero y puedo agregar en mi
asterix para medio, entonces puedo agregar en último Eso lo puedo asignar a
una lista que tenga uno, dos, tres, cuatro y cinco. Ahora bien, si tuviera que imprimir
cada una de estas variables, primera, media y última, ya verás qué va a sacar. Si digo imprimir, primero, imprimir, y quiero decir
medio, imprimir, último. Es ejecutar esto. Vamos
a ver aquí tenemos uno, y luego tenemos dos,
tres, cuatro y cinco. Este astérix
que aquí se aplica al medio va a recoger
todos los valores medios Si miras aquí,
uno es el primero s, cinco está al final, dos, tres, y cuatro estarán en el medio. Va a recoger todos los valores
medios de la lista, dejando primero y último
como variables separadas, y luego como podemos ver
cuando la estamos imprimiendo,
va a estar dentro de una lista misma y los números
separados aquí, en este caso solo serán
enteros por su cuenta Así es como podemos desempacar con el astérix en un
contexto dado Derecha. Ahora, sigamos adelante
y apliquemos esto para durar. Y nosotros dirigimos esto. Ahora podemos ver el
primer valor aquí, uno y medio, que
se extiende a dos. La última opción aquí ahora
va a dictar
que van a ser
tres, cuatro y cinco Va a ser un
poco diferente aquí si
configuras esto para la
última opción aquí. Va a
cambiar un poco. Va a ir con
los últimos valores y va a tomar eso después de que se hayan asignado los
dos primeros ,
se podría decir. Primero, técnicamente,
dirías que va a ser emparejado con uno. Medio, por supuesto, estaría emparejado con el
siguiente y último, por
supuesto, será el último
conjunto de valores en una lista. Derecha. A continuación, sigamos
adelante y fusionemos listas, y vamos a asegurarnos que también
las desempaquetemos en una lista Entonces voy a, por ejemplo, decir lista uno es igual, y dentro de la lista,
voy a tener uno, dos, Lista dos,
vamos a tener tres, cuatro, y luego
podemos fusionarlos. Entonces voy a
decir fusionar es igual, y crearíamos una especie
de lista aquí, dirías, agrega tu operador aritmético, y puedes decir Lista uno y luego agregar
operador aritmético y decir lista dos Y luego, cuando
sigas adelante e
imprimas fusionadas vas a ver ahora que todo se ha
fusionado en una sola lista. Entonces este asterix antes de la lista, como puedes ver, separado
por la coma en una lista aquí lo
fusionará en una lista Entonces así es como puedes fusionar tu lista y luego al final, desempaquetarlos en una lista aquí, así es todo en uno juntos Bien. Entonces así es como puedes combinar tu lista muy fácilmente. Ahora, digamos que quieres
fusionar diccionarios, por
supuesto, también seguirías adelante y
seguirías el mismo proceso. Sin embargo, es solo
un poco diferente. Tendría que
agregar dos astérixs esta vez en lugar de uno
para fusionar diccionarios Entonces déjame seguir adelante
y decir dict uno. Y aquí, voy a
asignar, claro, una llave, entonces A es, claro, va a ser uno, murió dos. Vamos a tener B, y podemos fijarlo como dos. Entonces podemos decir iguales fusionados, y dentro de parenss podemos simplemente
poner en dobles astérixs y decir jct uno, coma, Y ahora si
dijéramos print y tú dices fusionados, obtenemos A uno, B dos, así podemos
ver que eso
se ha fusionado en
un diccionario, así tenemos dos pares de
valores clave aquí. Entonces dos instancias. Entonces A uno y B dos
ha sido de salida. Entonces así es como podemos
fusionar diccionarios. Así que recuerda. Si
quieres fusionar una lista, que no
sea la lista que esté
entre corchetes, solo
harás un asterix para la fusión con un diccionario, tendrás Así que recuerda esa distinción clave cuando estés trabajando sabiduría. H. Lo siguiente que queremos
hacer es que queremos pasar, por
ejemplo, nuestras listas
o tuplas a funciones Esto es algo que
queremos mirar ahora. Digamos que queremos
seguir adelante y sumar valores, por ejemplo,
en nuestras funciones. Si digo D, agregue, y estamos esperando A y B, y vamos a
decir retorno A más B. Lo que podemos hacer es seguir adelante y
establecer los valores en una tupla Entonces voy a decir nums
para números iguales, y en un tup
diré tres y cinco Entonces voy a decir imprenta. Y en este caso,
me voy a referir a que voy a llamar a
esta función añadir aquí. Estoy teniendo la
declaración print afuera en lugar de usar el return inside. Entonces puedo seguir adelante y simplemente
pasar y decir nums,
y eso va a seguir adelante
automáticamente y
asociarse con A siendo tres,
y B era cinco, ya que opera sobre argumento
posicional ya que estamos trabajando con apenas un astérix
singular Entonces ahora podemos seguir adelante y decir código de ejecución, y
devuelve ocho. Pero lo que puedo hacer aquí
solo por simplicidad, solo
puedo decir add nums. Y no
queremos volver. Podemos simplemente decir print, y en realidad
voy a decir A plus, pongamos resultado final
igual a A más B, y luego quiero
imprimir, resultado final. Bien, así puedes
hacerlo de esa manera también. Entonces va a ir
adelante y obtener el mismo resultado ahí vamos. Entonces sólo otra forma de hacerlo. Entonces así es como podemos pasar, por ejemplo, a una lista o a
una tupla a una función Ahora, digamos que seguimos adelante
y hacemos esto con una tupla. Entonces sigamos adelante y
pongámoslo de esa manera. Pero esta vez, lo
que voy a hacer es no hacerlo con misa aquí. Sólo voy a hacer algunas
uniones de una manera particular, así que vamos a cerrarlo, y
centrémonos en la lista.
55. Aplicación del operador asterisco: parte 2 - [Laboratorio]: Derecha. Entonces lo que podemos hacer
es definir nuestra función, decir def ad y
vamos a tener A y B. Entonces quiero decir print, A y B. Luego defino mis
diccionarios, diré palabras Y aquí en la lista,
voy a decir hola, anuncio en el espacio de coma, y luego una coma
para la siguiente parte, que va a ser mundo Entonces puedo llamar a la
función, que es Agregar, y luego necesitamos agregar en un astérix singular aquí
y podemos decir palabras Así que vamos a pasar por los
pares de valores clave del diccionario a AB, y luego
vamos a imprimir AB. Entonces si ejecutamos este código, necesitamos conseguir hola mundo. Así es como podemos seguir
adelante y pasar la lista a nuestras funciones. Ahora queremos aprender
cómo podemos pasar diccionarios a funciones,
así que hagámoslo. O revisar, ¿debería decir? Entonces voy a decir DF, crea. Nombre y edad como mis parámetros. Entonces voy a decir imprenta. Esta vez, voy a usar cadenas
F y utilizar
marcadores de posición aquí Voy a tener nombre y luego
vamos a decir que tiene años de edad. Entonces puedo especificar mis
datos para el diccionario. Aquí voy a decir
simplemente nombre. Colon, no, y luego
coma y luego edad, colon y luego 29 Entonces puedo llamar a la función GET y
pasar por lo siguiente, que será doble asterix
para el diccionario aquí Así que ahora podemos ejecutar este código, y nos tenemos 29 años Entonces he definido
mi función aquí. Estoy usando una cadena F para actuar como marcador
de posición para los
valores que están entrando Entonces los datos aquí son un diccionario. Están pasando el diccionario aquí a los parámetros,
nombre y edad, y esencialmente
solo estamos imprimiendo cuáles los valores que se han establecido
como tales como nombre y edad. Y luego para obtener estos datos del
diccionario a nuestra función, estamos agregando asteris dobles
para sustituirlos en consecuencia Rico. Entonces así es como podemos seguir adelante y
empezar eso también. Perfecto. Derecha. Entonces así es como podemos
empezar y configurar todo eso. Ahora, otra cosa
que también quiero mostrarte es cómo puedes
seguir adelante y usar el astérix
para ignorar valores, o si también quieres saltarte
múltiples valores, y esto también puede funcionar en tangente con un
subrayado Bien, así que digamos que queremos extraer sólo el primer
elemento de la lista. Lo que podemos hacer,
por ejemplo, es decir A, y luego agregaríamos en el astérix con el
subrayado y Y en la lista,
digamos que tenemos diez, 20, 30 y 40. Diríamos imprimir A, y da salida diez. Lo que sucede aquí es
que A va a estar asociado al primer
ítem de la lista, y el uso combinado del asterisco y el
subrayado va a ignorar todos los valores
adicionales que están disponibles Bien. Lo que también podemos hacer es extraer quizás los dos
primeros elementos. Entonces lo que podemos hacer para hacer
eso es que solo podemos decir agregar en B ahora y
podemos decir imprimir A, B.
Entonces A va a estar
asociada a diez. B va a estar
asociado a 20, y la salida será de
diez y, por supuesto, de 20. Y el subrayado de Asterix
ayudará a ignorar 30 y 40. Entonces si ejecuto esto, tener
diez, y tenemos 20. Digamos que puedes extraer
los dos primeros elementos. Digamos que queremos
obtener el último elemento, que es 40 aquí. adelante y cambiemos
lo que estamos definiendo aquí e ignoremos todo al
inicio y luego podemos decir,
sumamos una variable que es
última y sumamos el año pasado, y eso quiere decir que el astérix y underscae aquí
ignorarán 1020 y seti y solo se
conservarán 40 para la última
variable y la Si ejecuto esto, obtenemos 40. Digamos que puedes
extraer el último artículo. Digamos que queremos ir a un seto y extraer el
primer y último elemento Entonces lo que podemos hacer
en este caso es decir primero sumar en tu astérix y subrayar y
decir Y aquí, digamos que tenemos uno, dos, tres y cuatro. Entonces podemos decir imprimir
primero y último. Entonces entonces solo obtenemos uno
y obtenemos cuatro con todos los valores medios ignorados por el astérix
seguido del Ahora, permítanme darle
más información sobre el astérix y Entonces el subrayado es
esencialmente un marcador de posición, bien, y podrías ver esto como una
especie de variable ignorada El astérix que
tenemos aquí, ¿no? Eso hace que el subrayado recoja múltiples valores o
elementos ignorados , se podría
decir, de la lista Y si no tenemos
el astérix, bien, este subrayado
sólo va a tener
un solo valor en lugar
de una Entonces eso es solo una
cosa extra que podemos hacer cuando queremos
ignorar valores y tal. Podemos combinar el
operador astérix con el subrayado. Bien, así que ahí lo tenemos. Hay un montón de casos de
uso a los que
ahora puedes aplicar con el operador
Asterix
56. Funciones de Lambda: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en las funciones de
Lambda. Entonces
echemos un vistazo. Entonces probablemente te estés
preguntando, Bien, ¿ qué es la función
Lambda en la Tierra? Entonces, una función Lambda es una función corta y
anónima que
toma múltiples argumentos, pero contiene solo una
sola expresión, lo que significa que definirá su función Lambda
en una sola línea. A diferencia de las funciones regulares,
donde, por supuesto, al menos
necesitarías tener algunas líneas para que todo se ponga en
marcha y funcione. Pero con una función
Lambda, va a contener una sola expresión en términos
de su orden y patrón. Y una función lambda
se usa a menudo para operaciones
cortas y simples donde es innecesario
definir una función completa. Entonces, si estás pensando
para ti mismo, bien, necesito hacer una función, pero va a ser una función
bastante corta. Entonces aquí es donde entra
el valor
de utilizar una función Lambda. Sin embargo, si tienes una función que es bastante larga con
muchos requisitos, muchos argumentos, parámetros y funcionalidad
que necesitas agregar en su lugar o una función que generalmente es más compleja
en tu caso de uso general, entonces quédate con las funciones. Pero como dije, cualquier cosa
corta y rápida o cualquier cosa que simplemente no necesites
mucha funcionalidad en su lugar, entonces entonces las funciones
son tu mejor manera de hacerlo, y
te
recomendaría encarecidamente que las utilices
porque pueden ser bastante útiles en
ciertas situaciones. Sí, en cualquier caso, eso es
todo lo que tengo que mencionar teóricamente sabio en
términos de funciones Lambda Entonces nos vamos a centrar en los ejercicios prácticos de laboratorio
donde voy a empezar suavemente y facilitarte en
él y simplemente enseñarte la diferencia entre una
función y una función Lambda, especialmente y principalmente,
debería decir en su sintaxis. Pero llegaremos a eso
en los ejercicios de laboratorio. Pero de todos modos, eso es todo por
la visión teórica.
57. Realiza operaciones con Lambda - [Lab]: Hola a todos. Bienvenido al próximo
ejercicio práctico de laboratorio que se
centrará en utilizar las funciones de
Lambda en PySon Ahora, por supuesto, para que esto sea muy simple
al principio, voy a mostrar
cómo puedes comparar las funciones
regulares con las funciones de Lambda
para que
puedas entender la
sintaxis y cómo
puedes utilizar las funciones de Lambda correctamente y desde el principio. Empecemos. En primer lugar, definamos una función regular. Sólo voy a
añadir en un comentario y decir función regular. Entonces, por
supuesto, comenzarías con tu palabra clave, que es Jeff. Entonces definirías el nombre de tu
función, que sería, digamos, subrayado
hola, por ejemplo Entonces en la siguiente línea, solo
podemos decir print y podemos decir hola mundo como ejemplo. Entonces eso será lo que
emitirá la función una vez que se llame. Entonces podemos llamar a nuestra función, que es decir subrayado hola, y eso va a
llamar a esta función e imprimir hola mundo
en la terminal Entonces si guardo eso
y ejecuto el código, va a decir hola mundo. Perfecto. Ahora
veamos cómo podemos aplicar esto cuando estamos trabajando
con una función Lambda. Lo que voy a hacer
no es eliminar este código, sino que simplemente
voy a
comentarlo para que puedas entender la sintaxis y la
lógica más suavemente. Voy a añadir un comentario
aquí que dice la función Lam D. Y lo primero que
quieres hacer es
definir el nombre de tu función. Ahora, con las funciones Lambda, lo que harías es
establecerla igual a Lambda. Entonces, por ejemplo, en este caso, puedes decir, decir
subrayado hola, y ese es tu
nombre de función en Lambda, muy similar a lo que teníamos en la función regular
donde decimos
decir subrayado
hola. Lo mismo. Así es como se define
una función en Lambda, y luego se dice igual
y se establece en Lambda. Y entonces quiero saber
que Lambda aquí es igual es la expresión para configurar
una función Lambda muy similar a decir muerte
para una función regular. Intenta verlo como lo mismo. Entonces podemos sumar en nuestro colon, y queremos definir
lo que queremos hacer. Entonces en esta función decir hola, definimos que
queríamos imprimir hola mundo. Pero eso lo hicimos
dentro de la función. Con la función Lambda
con la función Lambda, lo
estamos haciendo en la misma línea. Entonces esta impresión lo
world solo estará aquí en la
misma línea que la función Lambda. Esto es lo que quise decir en las conferencias teóricas cuando
mencioné que con Lambda, va a ser una
sola expresión. Así que sólo podemos decir imprimir
y decir hola mundo. Ahí vamos. Entonces queremos llamar
a nuestra función, esa va a ser exactamente como nuestra
función regular que teníamos aquí y además
tendremos los paréntesis, así que solo podemos decir
subrayado, hola Así que ahora podemos ejecutar este código, y podemos ver aquí
sale hola mundo. Muy bien hecho, así es como se
puede utilizar una función Lambda, y ojalá eso tenga
sentido con la sincronización y el uso en comparación con una función
regular Pero no te preocupes, aquí
vamos a pasar por algunos ejemplos
y vamos a
pasar por otra comparación
directa entre una función regular y
una Lambda. Derecha. Así que vamos a eliminar todo aquí excepto
el comentario anterior, y ahora queremos
sumar dos números. Entonces una función regular para
hacerlo y una función Lambda. Ahora bien, algo que sí quiero
mencionar es cuando estás trabajando
con funciones Lambda, normalmente no
es adecuado para definir variables dentro de
una función Lambda. Ahora, sé que en funciones
regulares, se
puede hacer eso con variables
locales, pero no es realmente un
cantar realmente en Lambda. Así que a menudo lo harías si
quieres devolver un resultado, a menudo querrías decir return en lugar de definir una variable
y luego imprimirla. Entonces solo algo que quiero
mencionar de antemano. Bien, esas son las funciones
regulares finales. Diré que Def agrega números de
subrayado. Esta vez vamos a trabajar con
parámetros. Voy a tener X e Y, por ejemplo, y luego voy a tener una
simple declaración de retorno que dice return X más Y. Entonces quiero utilizar la declaración print
afuera y decir print, y luego quiero envolver alrededor del nombre de la función que es agregar en los números
cuadrados, y luego necesitamos
poner en los argumentos que queremos enviar
a los parámetros de X e Y para que podamos devolver el resultado a través de la
función print de lo que es X más Y. Aquí sólo voy a
decir cinco y siete. Va a devolver
cinco más siete, y eso va a
imprimirse como
salida , eso debería ser 12. Sigamos adelante y
ejecutemos ese código. Entonces podemos ver 12.
Entonces ahí vamos. Así es como podemos
definir una simple función
regular
para sumar números. Ahora, vamos a aplicar esta
función aquí como una función Lambda
o re transformarla. Entonces voy a añadir un comentario
y decir función Lambda. Así que todo lo que necesitas
hacer recuerda de nuevo, necesitas referirte al nombre de tu función
Lambda. Entonces aquí usamos agregar números para la función regular.
Nosotros podemos hacer lo mismo. Entonces quieres decir
iguales y Lambda. Ahora lo que quieres hacer
es justo al lado de Lambda, quieres asegurarte seguir adelante y agregar
tus parámetros. Aquí tenemos X e Y, y todo lo que necesitamos hacer es agregar un espacio junto a
Lambda y decir X, Y, y esos son tus parámetros. Entonces junto a eso,
quieres agregar en tu colon. Entonces es muy similar
a lo que tenemos aquí. Entonces tenemos X, Y, pero aquí no
tenemos paréntesis y agregamos en los
dos puntos al final, y hacemos lo mismo
con nuestra función Lambda Quieres definir
lo que realmente
quieres hacer en tu función
Lambda. Entonces en nuestra función regular, estamos diciendo devolver X más Y. Así que aquí, todo lo
que tenemos que hacer es decir lo
que realmente queremos hacer directamente. Diré X más Y,
así como así. Entonces vamos a decir
imprimir como lo hicimos antes, y luego quieres
pasar por el nombre de tu función. Entonces en nuestro caso, agrega números de
subrayado. Y al igual que cuando estás
enviando tus argumentos, va a ser
exactamente el mismo tipo de estilo que las funciones regulares. Vas a tener
tus paréneses y en la posición o palabras clave, pones lo que
quieres devolver Voy a decir cinco y siete. Así que tenemos eso en su lugar. Entonces ahora si ejecutamos nuestro
código, obtenemos 12. Correcto, perfecto. Ahí vamos. Entonces así es como puede utilizar una función Lambda,
y lo más importante, cómo puede utilizar
la sintaxis de función
regular para
ayudarlo a aprender rápidamente las funciones de
Lambda y cómo
utilizarlas en comparación con el funcionamiento de una
función regular. Derecha. Perfecto. Para que podamos quitar esta pluma. Bien, así que esa
es la primera parte
en la utilización de funciones Lambda Vamos a trabajar en unos
cuantos más tipo extra de cómo puedo decir
actividades y ejercicios. Así que no te preocupes.
Nos vienen más. Todo bien. Entonces ahora vamos a
trabajar con Lambda, ya que
ahora estamos bastante seguros de entender la definición de cómo
usamos una sintaxis y todo. Entonces voy a trabajar en la
creación de algunos programas. Entonces primero, notando
a nosotros mismos, Bien, ¿cómo puedo crear un pequeño
programa que sea útil
y sea rápido de resolver con una función Lambda que podría ser tediosa con una Entonces digamos que queremos
cuadrar un número. Necesitamos definir los nombres
de las funciones. Voy a decir iguales cuadrados. Entonces tenemos que decir que esta
va a ser una función Lambda. Tenemos que decidir,
voy a poner en cualquier valor. Voy a poner en un valor que
eso equivalga a
un parámetro. Yo sólo puedo establecer el
parámetro como digamos Num. ¿Qué quiero hacer? ¿Quiero devolver algo? Lo que quiero hacer es
en realidad devolver lo que sea num multiplicarlo por NUM es. Entonces voy a asegurar que imprima esto
los resultados. Diré print y
quiero enchufar nombre de la función que
es cuadrado y luego poner en el argumento que va a pasar
al parámetro aquí como NUM y luego voy a tomar ese número asociado y
multiplicarlo por sí mismo. Entonces cuatro por cuatro. Ahora bien, si ejecutamos el código, podemos ver si obtenemos 16, y así es exactamente como podemos
cuadrar un número con
una función Lambda. Bien, hagamos
otra. Digamos que queremos duplicar un número. Entonces crearíamos una función y podemos llamar a esto double, por
ejemplo, y esta va
a ser una función Lambda, así
que necesitamos definirla en consecuencia. Aquí vamos a tomar
un parámetro. Entonces voy a poner
esto como X, por ejemplo. ¿Y qué quiero hacer? Quiero regresar,
sea cual sea el resultado de X multiplicado por dos. Bien. Entonces quiero imprimir esto, voy
a decir print y
quiero imprimir cualquiera que sea el resultado
de la función, así que necesito llamar a la función
para que eso ocurra y luego pasar por el argumento, que sustituirá a X y
luego X va a ir y al siguiente código dentro
de la función Lambda
y decir X por dos. En este caso, seis veces dos. Ahora podemos ejecutar este
código. Y tenemos 12. Perfecto. Eso es duplicar un
número. Vamos a cambiarlo. Vamos a entrar en la lista. Ahora, digamos que queremos obtener el primer elemento de una lista. Sigamos adelante y definamos nuestro nombre de función,
se podría decir. Voy a establecer esto como, yo diría primero es igual, ese
será el nombre de mi función. Va a ser una función
Lambda. Vamos a
esperar un parámetro, así que sólo puedo llamar a
esta lista de LST, por
ejemplo, en los dos puntos Y ¿qué es lo que
realmente quiero hacer? ¿Qué es lo
que realmente quiero devolver? Entonces quiero devolver el
primer elemento de la lista. Y ahora recuerda en PySon
lista empezar en cero. Entonces voy a decir, Bien, la lista aquí, y
quiero mirar a cero. Bien. Entonces lo que quiero
hacer es decir print, referirme al nombre de la primera
función, y dentro de parencs quiero
definir una lista tal cual Voy a decir dentro de
la lista diez, 20, 30. Ahora bien, lo que va a
pasar es que voy a pasar por esta lista aquí, que está aquí definida
dentro de mi disculpa, se define aquí dentro
del argumento aquí. Tengo diez, 20 y 30, primero va a
albergar todo eso. Se va a pasar
a través del parámetro. Toda esta lista que he
definido dentro primero. Entonces lo que va a
pasar es que vamos a
llamar a la lista y
buscar el primer ítem, que serán diez, y
eso va a ser output. Si ejecuto este código, vamos a ver
que da como resultado diez. Simplemente estamos
pasando por esta lista como un argumento en sí dentro de
la primera función. Bien, así es como
podemos hacer precisamente eso. Ahora, digamos que queremos obtener el segundo elemento de una lista. En otras palabras, eso
va a ser cero, uno. Entonces podemos decir segundo
es igual a Lambda, y podemos decir
lista de nuevo, dos puntos, y luego podemos decir lista, y el resultado que queremos
devolver es el primero. Es el segundo
elemento, técnicamente de la lista, pero denotado por uno Podemos decir print, pasar por la función y los
argumentos para la función, vamos a establecer
como una sola lista con ítems de 15, 21, 87. Entonces ahora debería imprimir 21, así pasaremos esta lista aquí, a la lista aquí
como parámetro, y luego vamos a consultarla en el procesamiento y
buscar el segundo elemento,
que va a ser 21. Así que vamos a ejecutar esto.
Y luego obtenemos 21. Perfecto. Bien, chicos Entonces eso
es esencialmente al
presentarnos a las funciones de Lambda y cómo podemos usarla
y lo más importante, cómo podemos distinguirla
entre una función regular. Ahora bien, no hemos terminado
con las funciones Lambda, hay algunas funciones
incrustadas más que quiero usar con funciones
Lambda que son bastante populares
para muchos desarrolladores, y quiero sumergirme más
en la función Lambda, así que vamos a hacer solo es la idea general de las funciones de
Lambda y cómo se puede integrar. Ahora puedes practicarlo
y utilizarlo
a lo básico al menos para que
sepas cómo
pasar por los parámetros, cómo puedes generar
datos y demás. Eso es todo para este ejercicio
práctico de laboratorio.
58. Aplicar funciones lambda a otras funciones: Hola a todos, y bienvenidos
a la siguiente lección que va a estar
enfocada en aplicar funciones
Lambda a
otras funciones. Así podemos incrustar funciones dentro nuestras funciones Lambda
dependiendo lo que nos gustaría hacer.
Pero echemos un vistazo. Entonces las funciones Lambda
funcionan bien con funciones
integradas
como la función map, y esto esencialmente aplica una función a cada
elemento en un iterable, ahí que devuelva un nuevo iterable
con valores modificados También tenemos la función filter y esta selecciona
elementos de un iterable basado en
una función que devuelve ya sea true o false, así podemos ver una
situación en negrita de dos estados Finalmente, una función muy popular para utilizar con Lambda
es la función de reducir. Esto aplica repetidamente
una función para combinar todos los elementos en un iterable en un solo valor.
Entonces ahí lo tienes. Por lo tanto, las funciones Lambda también
pueden funcionar con otros tipos de funciones integradas
. Sin embargo, estos son los
más comunes que mayoría de los desarrolladores usarían cuando están
trabajando con Pison, la función de mapa,
la función de filtro y la función reducida
con una función Lambda, normalmente se incrusta
dentro de ella para ejecutar una determinada consulta de código
que se agrega en su lugar Muy bien, chicos. Entonces eso es todo para el panorama
teórico. Ahora nos vamos a
centrar en integrar estas funciones dentro de
nuestras funciones Lambda y armar todo
59. Incorporar lambda con otras funciones - [Lab]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que se
centrará en utilizar el filtro de mapa y reducir las funciones dentro de la
función misma. Vamos a integrar
todo juntos. Sigamos adelante y comencemos
con la función de mapa. Eso es lo primero con lo
que vamos a querer seguir adelante
y empezar. Sigamos adelante y hagamos precisamente eso. Ahora bien, lo primero
que vamos
a querer hacer es definir
una lista de números. Voy a decir números. Igual, y
voy a decir uno, dos, tres, cuatro y cinco. Ahora bien, el objetivo de
que utilicemos la función map en
este caso de uso es porque
queremos modificar cada ítem en
una lista y luego queremos devolver una lista modificada que va a realizar
alguna funcionalidad. Entonces lo que podemos hacer a continuación es ir a un seto y
configurar lo siguiente Entonces vamos a ir a una cobertura y definir una variable aquí Así que voy a
decir resultado es igual, y vamos a establecer
eso en nuestra función de mapa. Y vamos a
usar map para aplicar una función a cada
elemento de nuestra lista, es decir, uno, dos, tres, cuatro y cinco
independientemente cada vez. Y dentro de nuestra función map, vamos a agregar en
la función Lambda. Entonces vamos a decir am D y vamos a
pasar por uno parámetros. Voy a tener X, por ejemplo. Y luego la acción
que quiero realizar, quiero multiplicar cada
ítem por dos en la lista. Diré X asterisco dos
o lo multiplicaré por dos. Y para ello,
vamos a hacer uso de la lista de números. Entonces vamos a seguir adelante y
referirnos a
los números variables. Bien, así que tenemos
eso en su lugar. Perfecto. Entonces déjame darte una visualización de
lo que va a pasar. Entonces tenemos uno, dos,
tres, cuatro, cinco. Ahora vamos
a aplicar números aquí a esta función Lambft, y esencialmente,
deberías verla como uno viene de números Entonces uno sustituirá a X, y luego uno por dos
va a ser dos, y eso será almacenado, y procesado con nuestra lógica aquí que tenemos en su lugar
con map y función Lambda, y eso va a ser almacenado hasta que podamos posteriormente
sacarlo a una lista. Entonces vamos a
pasar al siguiente ítem de la
lista, que serán dos, dos serán de números, y luego vamos
a sustituir X era dos y luego decir dos por
dos , y eso
va a ser cuatro. Nosotros hacemos lo mismo para
el resto de los números para
que eventualmente
sea el resultado de dos, cuatro, seis, ocho y diez. Entonces lo que queremos
hacer es ir a un seto y convertir
nuestro objeto de mapa Este va a
ser nuestro objeto de mapa, que almacenamos en
el resultado de la variable. Podemos crear una variable aquí
ahora llamada números duplicados, y vamos a convertir la lista del
resultado final que obtenemos aquí. El resultado del proceso de salida que obtenemos de
esta funcionalidad. Resultado ahora en este caso no es una función Lambda como
seguimos adelante y demostramos o referenciamos como en la
actividad práctica anterior en funciones Lambda porque cuando se trata funciones que están
incrustadas con Lambda, como map reduce y filter, la variable que le
asignaste, como en este caso, resultado aquí no va
a ser la función Es esencialmente sólo va a ser variable que
va a almacenar. El valor que
se ha procesado ya que todo se
ejecuta aquí mismo y no en una función
Lambda separada. En cualquier caso, entonces almacenaremos los resultados aquí en la
lista para que podamos convertir el objeto map
que tenemos ahora en una lista para poder
ver los valores modificados. Entonces para hacerlo ahora podemos decir print y referirnos a números duplicados. Bien, perfecto. Ahora
podemos ejecutar este código, y podemos ver si
obtenemos la salida dos,
cuatro, 6810. Perfecto. Así es como podemos seguir adelante
y configurar esto como debiera. Derecha. Ahora, sigamos
adelante y veamos la función de filtro. Entonces, una vez más, vamos
a tener algunos números. Solo voy a agregar
digamos un número extra, y luego vamos a seguir adelante y utilizar la función de filtro. Ahora planeamos usar la función de filtro para
mantener solo números pares. Así que sigamos adelante ahora
y definamos una variable, que serán resultados para que podamos almacenar aquí el resultado que
tenemos de nuestro valor aquí
del objeto filter. Así que vamos a almacenar el
resultado del objeto de filtro. Y vamos a decir filtrar e incrustar la función Lambda. Y nuevamente, tendremos un
parámetro, al que podemos llamar X. Lo que queremos hacer es usar una defunción am
para verificar si cada número o X es
divisible por dos para,
en otras palabras, mantener solo
algunos elementos de una lista En otras palabras, deberíamos
sacar números pares. Podemos seguir adelante y
hacerlo diciendo X, y luego podemos agregar en nuestro símbolo de
porcentaje, digamos dos, un equivalente a cero, y vamos a estar trabajando
con la variable números, que es esencialmente la
lista con la que trabajaremos. Vamos a seguir
enchufando aquí. Vamos a agarrar uno. Entonces vamos
a pasar sustituto uno a X y luego vamos a seguir adelante y comprobar aquí
si uno es divisb por dos, si por alguna razón, el número no
va a ser par, sólo
vamos a omitirlo de la lista que
vamos a sacar y luego solo guardar lo que va a ser
par y divisible Bien. Después de ese proceso, y nuevamente, como
la función map, vamos a revisar cada
ítem o elemento que pudieras decir cada vez y luego almacenar los resultados
necesarios a medida que avanzamos. Entonces queremos convertir
nuestro objeto de filtro en una lista para que podamos
ver nuestros valores filtrados, luego
podamos encontrar una variable
conocida como números pares, por ejemplo, luego usar una lista para emitir resultados
aquí, esa variable. Y entonces lo que podemos hacer es
seguir adelante e imprimir
la lista filtrada. Entonces podemos decir print
y solo podemos decir incluso números de subrayado Y que vamos a imprimir 24 y seis, que es exactamente lo que
queremos como resultado. Entonces así es como podemos
seguir adelante y asegurarnos de que
seamos capaces de filtrar para que
solo podamos mantener algunos artículos
de nuestra lista. Correcto, perfecto. Ahora bien, la última función
que queremos ver es cómo podemos utilizar
la función de reducir. Entonces, esencialmente, lo que queremos
hacer es que queremos combinar todos los elementos que
tenemos en un solo valor, así que vamos a resumirlo
así que agréguelo, se podría decir. Y para ello, necesitamos
importar la función reducida, y eso viene
del módulo funk tools Por lo que está construido en. Entonces podemos decir desde funk tools, que es el módulo,
quiero importar la función reducida Ahora, queremos tener también una lista de números con los que
queremos trabajar. Entonces voy a decir números, y voy a tener uno, dos, tres, cuatro y cinco. Entonces voy a asegurar que utilizo reduce para sumar
todos los números juntos. Y nuevamente, necesitamos
tener una variable para que
podamos almacenar el resultado, claro, por lo que es
necesario llamarlo resultado. Y entonces podemos usar
la función reduce, que va a incrustar Lambda. Y nuevamente, vamos a tener esta vez dos parámetros
porque estamos sumando, estamos sumando números juntos.
Entonces tendremos X e Y. Y luego la acción que
queremos realizar y lo que
queremos devolver es el
resultado de X e Y aquí. ¿Y en qué vamos
a basar eso? De qué vamos a
obtener nuestra información que queremos agregar de
la variable números aquí, que podemos simplemente
asociar, así. Bien, entonces la función y, tomaremos dos números, X e Y de los números, y los va a sumar, y luego va a seguir sumando hasta que obtengamos
el resultado final. Entonces con los números aquí,
lo que va a pasar es que
vamos a seguir adelante y sumar los números consecuencia juntos hasta
que obtengamos ese resultado final. Entonces
va a ser uno. Entonces fueron X e Y, será
uno más dos es igual a tres. Tres más tres equivale a seis, seis más cuatro equivale a diez, y luego diez más
cinco equivale a 15. Y así vamos a seguir adelante y ver la secuencia de
operaciones a medida que avanzamos. Ahora bien, el resultado final, por
supuesto, debería ser 15, pero sigamos adelante e imprimimos el resultado para que
podamos aclarar. Ahí vamos 15 y
ahí lo tenemos. Así es como podemos combinar todos los ítems en un solo
valor como ejemplo de suma. Muy bien, chicos. Eso es todo para este ejercicio práctico de laboratorio. Sé que esto podría haber
sido un poco difícil, pero así es como podemos
seguir adelante y seguir
adelante si queremos
combinar diferentes funciones y utilizarla con nuestra función
Lambda juntas. Ahora una cosa importante sobre la
que también
quiero reiterar. Solo recuerda cuando estamos usando funciones con lamb
como map reduce y filter, anteriormente cuando estábamos
trabajando con funciones, podrías dictar y
puedes referir a lo que
asociamos con la función
Lambda como el
nombre de la función, podrías decir Pero en este caso aquí, esto simplemente
va a ser una variable para almacenar el
resultado de lo que está ocurriendo. Si ese resultado
va a ser específicamente un objeto de filtro o si
va a devolver un valor específico de clases o si va a
devolver el objeto map, eso es algo para lo que lo
estamos utilizando, no como un nombre de función. Todo bien. Entonces ahí lo tenemos. Entonces lo último que quiero mencionar es simplemente
recordar también, una cosa más, que
cuando estemos trabajando con el objeto map,
vamos a estar almacenando. Cuando estamos trabajando
la función map, estamos almacenando el objeto map, cuando estamos trabajando con
la función filter, estamos almacenando un objeto filter
y cuando estamos trabajando, por
supuesto, con reduce y específicamente en este caso,
la función reduced, estamos almacenando un valor específico que por supuesto
vamos a estar emitiendo si queremos
imprimirlo. Bien, vete. Eso es. Así es como podemos integrar otras
funciones con Lambda.
60. ¿Qué es la programación orientada a objetos?: Hola a todos. Bienvenidos
a la siguiente lección, que va a estar
enfocada en
mirar qué es la
programación orientada a objetos. Ahora bien, esta lección va a formar parte de una serie de lecciones, así que todo va a
estar conectado entre sí. Habrá un
poco repartido a lo largo del
siguiente conjunto de lecciones, pero justo ahora está todo
junto y parte como una. Entonces, la
programación orientada a objetos es un enfoque de programación
que se centra en el concepto de
clases y objetos. Entonces tu siguiente pregunta es probablemente ¿qué son
las clases y los objetos? Entonces esto es lo que vamos a discutir en detalle
en la siguiente lección, que se va a centrar en mirar clases
y objetos desde una perspectiva de definición y
también desde una perspectiva de analogía Va a diferenciar
entre los dos y ver en general cómo va
esto en el enfoque de la mano de la
programación orientada a objetos
en su conjunto. Así que estén atentos para
la siguiente lección, vamos a sumergirnos en
clases y objetos.
61. Clases y objetos: Hola a todos. Bienvenidos
a la siguiente lección, que va a enfocarse en clases y objetos.
Echemos un vistazo. ¿Qué es una clase y un objeto? En pocas palabras, una clase es un blueprint para
crear un objeto, mientras que un objeto es una instancia específica de
esa clase en particular Ahora, sé que eso podría ser
un poco confuso al principio, pero veamos una analogía
para ilustrar mejor esto Entonces digamos que
tenemos una persona. Podemos llamar clase a una persona. Ahora, una persona tiene un
conjunto de atributos. Entonces una persona tendrá, por
ejemplo, un nombre de pila. Tendrán apellido. Tendrán su
edad, su nacionalidad. Entonces estos son vistos
como atributos en PySon donde la
persona misma, como la estructura, la
persona es la clase Ahora podemos ir un
poco más allá en eso y echar un vistazo a los objetos. Ahora bien, los objetos, como
mencioné, son, por
supuesto, las
instancias mismas. Podemos, por ejemplo, tener
un objeto que va a
pertenecer a una persona única
y esa persona única, por
ejemplo, puede
llamarse Lucy Johnston, 22
años y su
nacionalidad es Es de Alemania. Digamos que tenemos otro objeto,
otra instancia específica. Entonces tenemos otra persona
única. Esta persona es Mark Smith. Tiene 21 años y es de Austria. Entonces así es como todo se
vincula con la
clase, el blueprint, los atributos para seguir adelante
y describir esta clase aquí, y luego los objetos que
son las instancias específicas Echemos un vistazo a
otra analogía para
solidificar nuestra comprensión
de clases Digamos que tenemos un auto. Ahora el auto puede verse como
una clase y como un plano. Ahora, un automóvil va a tener varios atributos
como la marca, el color, el modelo, el año del modelo, por ejemplo, y va a tener un conjunto de instancias
únicas en
cuanto a los objetos. Podemos tener un auto único
en particular que es la marca de GMC. El color Sage, es el modelo GMC E dos y
el modelo Y es 2007. Entonces también tenemos otra instancia
específica, que va a ser
la de un BMW, por ejemplo. El color es azul,
es el BMWX tres, y el modelo E es 2011 Todo bien. Entonces así es como quiero que entiendas
el proceso de programación orientada a objetos cuando estamos trabajando con nuestra clase, los atributos asociados de esa clase y los objetos que son instancias específicas que
están correlacionadas entre sí. Ch. Así que trata de verlo
todo junto como Zach Y lo que también recomendaría si también
se está volviendo un
poco confuso, solo repasarlo un
par de veces más a las analogías y con la definición que le di
y tratar de vincularlo entre sí Pero no te preocupes. Una vez
que practiquemos esto en los ejercicios prácticos de laboratorio, verás con qué facilidad vas a recogerlo. Y así es como quiero que lo veas
ya que trabajamos con programación orientada a
objetos
y específicamente con las clases y
los objetos a la mano.
62. Creación de nuestra primera clase y objeto: [Lab]: Hola a todos. Bienvenido al
próximo ejercicio práctico de laboratorio, que va a estar
enfocado en clases y objetos.
Empecemos. Ahora bien, lo primero
que tenemos que hacer es definir nuestra clase. Ahora, recuerden, una clase
es como un plano, vamos a crear una
clase de persona Voy a decir persona de clase. A continuación, podemos pasar a la
siguiente línea y sangrar. Y lo siguiente
que vamos a querer hacer es que vamos a querer definir nuestro método innit Ahora, el método innit es
esencialmente un método especial, también
conocido como
método Dunder, y se llama cuando se crea un
nuevo objeto, y ayuda a inicializar
los atributos de Ahora bien, los atributos
incluyen, por ejemplo, la identificación de la persona,
su nombre, su apellido, su edad, su nacionalidad, etcétera Entonces lo que podemos hacer es que
podemos seguir adelante y decir D doble subrayado init Y dentro de nuestros
parenss necesitamos
pasar , en primer lugar
, yo,
y yo representará
la instancia de nuestra clase, y permite el acceso a atributos de
instancia y mesods si tuviéramos algún mesods por
supuesto Ahora, queremos definir
nuestros parámetros. Ahora bien, esto va a
incluir, por ejemplo, la información de la persona,
así su nombre, apellido,
nacionalidad asiática, etcétera Y primero vamos a
configurarlo como parámetros, ¿de acuerdo? Entonces esto va
a ser temporal, y luego se va
a asignar como una
variable permanente con self, pero llegaremos a
eso en un momento. Entonces podemos seguir adelante y
definir, por ejemplo, ID. Tendremos nombre de primer
subrayado, tendremos apellido subrayado, tendremos edad y nacionalidad Todo bien. Así que déjame
alejarme aquí para mayor claridad. Y luego solo queremos sumar en dos puntos, y continuemos. Bien. Ahora
lo siguiente que vamos a querer
hacer es que queremos
asignar nuestros parámetros a nuestros atributos de instancia. Entonces lo que vamos a hacer es
decir autoidentificación de punto. Es igual a ID. Entonces, lo que estamos haciendo aquí es que esencialmente estamos asignando, por ejemplo, el parámetro ID
al atributo instance
de self dot ID Y esta va a
ser esencialmente la identificación única para la persona, y nosotros hacemos lo mismo para el resto, el mismo tipo de proceso. Diremos self dot,
primer nombre de subrayado. Eso va a igualar el nombre del
primer subrayado. Entonces haremos self dot, apellido subrayado nombre, igual
apellido subrayado Y se puede ver que se está
configurando en consecuencia a medida
que se está utilizando. Entonces podemos ver auto
punto g es igual a la edad. La nacionalidad de punto propio es igual a
la nacionalidad, así como así. Eso lo tenemos todo instanciado. Ahora, solo para dar un
poco más de claridad aquí con la
palabra clave self que estamos usando. Recuerda, es una referencia a la instancia actual
de esta clase, y
nos va a permitir acceder y modificar nuestros atributos que son específicos cada objeto que tenemos. Sólo recuerda eso.
Entonces cuando tenemos aquí, self dot ID, self dot
primer nombre, self, el apellido, self dot
age, y auto nacionalidad. Se pueden ver estos como atributos, y cada atributo es
una variable que almacena datos que son específicos
del objeto. Entonces aquí, claro, va
a ser la D de la persona, su nombre de pila,
su apellido, su edad, y
su nacionalidad. Entonces eso es esencialmente
lo que estamos haciendo ahí. Ahora, lo siguiente que
tenemos que hacer es
crear una instancia de nuestro objeto
de la clase persona. Entonces hagámoslo. Y tenemos que asegurarnos de ajustar
donde estamos haciendo esto. Entonces tiene que estar en la
misma línea que nuestra clase aquí. Así que vamos a crear un objeto
de la clase person. Así podemos darle a esta variable el
nombre lo que queramos. Voy a decir
persona uno es igual, y entonces tenemos que hacer
referencia a la clase persona. Y dentro de esa clase, esencialmente
vamos a seguir adelante y sumar en nuestros valores o argumentos, se podría decir, de los
atributos que tenemos. Bien, para que podamos seguir adelante
y poner el valor. Entonces primero, tendremos identificación, nombre, apellido,
edad y nacionalidad. Voy a pasarlos por encima. Diré uno para la identificación. Entonces tenemos nombre de pila. Diré Ono entonces
tenemos el apellido, diré Pretorius y luego
vamos a tener edad, LLC,
29, y luego
tendremos nacionalidad,
dice de África, así como así Entonces así es como podemos crear un objeto de la clase persona. Entonces queremos imprimir
los atributos de la persona. Así que recuerda, tenemos nuestros
atributos establecidos en consecuencia. Entonces, identificación, nombre,
apellido, edad y nacionalidad. Entonces ahora queremos imprimirlos, así que te voy a mostrar
cómo podemos hacerlo. Podemos entonces, por ejemplo, decir
print entonces queremos referirnos a esa variable que establecemos aquí que está asignada
a lo siguiente, y podemos simplemente decir persona
uno y solo se puede decir punto y luego
seguido del atributo. Entonces podemos decir ID por ahora, imprimir persona un punto
primero, subrayado nombre E imprime persona un punto y
teníamos apellido subrayado. Eso va a
seguir adelante e
imprimir el valor que se
asignó para nuestro atributo. Tenemos uno, tenemos a Arno
y Pretors y eso es lo que se va a imprimir en nuestra
salida Sigamos adelante y sacemos y ejecutemos este código. Hagámoslo. Ahí vamos, así conseguimos uno, obtenemos honor y
obtenemos Pretorius Así es como podemos ir a una cobertura y asegurarnos de que tengamos esa
salida como debería ser Vamos a hacer eso un poco
más claro para que veas, podemos ver la salida de ideales, el nombre y
el apellido Así es como
esencialmente podemos crear nuestra clase, cómo podemos definir
nuestro método innit, configurar nuestros parámetros y cómo podemos ir en una
cobertura y configurar el resto en su lugar y cómo
nuestros parámetros
esencialmente se convierten
en esencialmente se convierten Todo bien. Eso es todo para
este ejercicio práctico de laboratorio, bien hecho en la creación de tu
primera clase y también definiendo tu primer
objeto aquí y también dando salida a todos los datos necesarios haciendo referencia diciendo punto seguido del nombre del
atributo y luego obteniendo todos los datos que se han
vinculado al objeto S. Entonces, eso es todo.
Voy a agregar aquí
un ejercicio de
laboratorio extra práctico, que va a estar más
enfocado en la explicación. Así que sólo voy a
explicar un poco más, y podemos hacer un
poco de práctica, un poco más de
práctica también. Así que puedes estar atento
para ese próximo ejercicio, o puedes pasar
a la siguiente lección. Realmente depende de ti en cuanto
a lo que quieres hacer. Pero eso es todo, voy a decir, para este particular ejercicio de
laboratorio.
63. Profundidad sobre las clases y los objetos - [Laboratorio opcional]: Hola a todos. Y bienvenidos al próximo ejercicio práctico de laboratorio, que esencialmente también va a
ser opcional. Entonces, si quieres saltarte un
seto, eres más que bienvenido a hacerlo y dirígete a
la siguiente lección lo contrario, lo que
vamos a estar haciendo es que simplemente vamos a seguir con clases y
objetos con más detalle. Bien, así que quiero
mencionar un poco más sobre parámetros
y atributos. Así podemos ver los campos
importantes que hemos definido que
queremos utilizar, como ID, nombre, apellido, edad, nacionalidad. Ahora bien, en esto, cómo puedo decir, entre paréntesis aquí
del método int, estos son vistos como
nuestros parámetros, y solo existen dentro de
este método int temporalmente Luego utilizando auto punto. Lo que estamos haciendo aquí
esencialmente es que estamos
configurando nuestros atributos
como ID, nombre, apellido edad y
nacionalidad diciendo self dot y luego refiriéndonos en consecuencia
a la nacionalidad edad, apellido, nombre e identificación, y estos pertenecen al objeto
y se puede acceder posteriormente Nuestros atributos pertenecen a nuestro objeto y
se puede acceder posteriormente. Entonces claro, como sabemos,
estamos creando un objeto, también conocido como crear
nuestra instancia. Y lo que estamos haciendo
aquí después con nuestras declaraciones impresas
aquí es que
estamos accediendo a nuestros
atributos porque ahora
están declarados
en nuestro objeto. Otra cosa también
a mencionar aquí con los parámetros que aquí
hemos definido es que no existen
fuera de nuestro método innit Solo nuestros atributos, que
hemos definido permanecerán y serán exigibles
fuera de nuestra clase Entonces solo algo que
quería mencionar para que estés al tanto de
lo que estamos configurando. Bien, y una cosa final, solo debes saber que nuestros
parámetros aquí, de nuevo, son temporales y
solo existen mientras innit se ejecuta, y nuestros atributos, que
definimos usando self dot, son permanentes y
vivirán dentro de nuestro objeto Todo bien. Entonces
eso es todo lo que quería seguir adelante y
mencionar para
que tengan una
comprensión más profunda de cómo podemos utilizar ambas opciones. Todo bien. Ahora
lo siguiente que vamos a hacer es simplemente hacer otro ejercicio
práctico. Entonces solo voy a mostrarte cómo podemos crear otra clase, así que solo conseguimos más
práctica con ella. Bien, así que sigamos adelante
y pongamos más práctica. Entonces ahora queremos
definir otra clase, configurar nuestros atributos, crear
nuestro objeto, etcétera Entonces voy a eliminar esto
y comencemos. Entonces quiero decir clase, y vamos a trabajar
con un auto, por ejemplo. Entonces queremos seguir adelante y
configurar nuestro mensaje innit. Voy a decir de doble
subrayado init, pasar a través de uno mismo, y luego
con qué
vamos a estar trabajando y lo que queremos en última instancia como nuestros atributos al Entonces tendremos marca, año
modelo y color. En el colon. Entonces hemos definido nuestros parámetros los
cuales son temporales. Ahora queremos
configurar nuestros atributos, los cuales serán almacenados
en nuestro objeto. Entonces, para ayudarnos,
utilizaremos self y digamos self dot brand,
es igual a marca. Entonces tendremos modelo de punto propio,
modelo igual, auto punto aquí es igual a aquí, y el color de punto propio es igual al color. Ahí vamos. Así que lo hemos
definido en consecuencia. Ahora queremos crear nuestro objeto
o nuestra instancia
de nuestra clase de autos, y necesitamos
asegurarnos de hacer esto en línea con nuestra clase, y no dentro de este método init Así que quiero asegurarme de que estoy
en línea con la clase aquí. Entonces lo que voy
a hacer es un auto uno, por ejemplo, establecer una variable. Entonces voy a crear
este objeto de mi clase de autos. Quiero referirme a la clase, entonces puedo
pasar por los valores. Aquí voy a decir,
por ejemplo, Ty Yota. Entonces voy a tener Cola
y luego puedo decir 2021. Y podemos ver azul. Se puede ver que eso coincide. Primero, claro,
podemos ver que tenemos marca, así que esa será Toyota, Corolla, tendremos modelo, año 2021 y color azul.
Eso lo tenemos todo definido. Ahora queremos acceder a los
atributos de nuestro objeto. Voy a desplazarme hacia abajo ahora y dejarme realmente alejar aquí. Y digamos print, y queremos referirnos
a esa variable. Entonces vamos a decir auto un punto, y solo podemos referirnos al atributo,
que será marca. Entonces podemos decir
print car one dot, y luego podemos decir model, print car one dot, y vamos a tener, y
luego imprimir auto un punto, y ese será color. Entonces eventualmente estaremos dando salida a los valores
que tenemos aquí marca Dot será Toyota, modelo
dot será Corla, punto será 2021 y el color del punto será azul Sigamos adelante y
ejecutemos este código. Y aquí podemos ver que
aquí
obtenemos el siguiente resultado como se esperaba. Todo bien. Así es como podemos
seguir adelante y trabajar con nuestras clases, nuestros objetos, parámetros
y nuestros atributos, y cómo podemos juntarlo
todo. Pero en última instancia, esto se
centró principalmente en clases y objetos. Bien, chicos. Entonces eso es todo. Vi que solo voy a ir un poco para que podamos obtener
más práctica y tal, pero eso será todo para este ejercicio de laboratorio
en particular, así que solo podemos mover
eso y eso es todo.
64. Métodos personalizados: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en el método
personalizado.
Echemos un vistazo. El programj ¿qué
es un método personalizado? En pocas palabras, implica métodos que podemos
definirnos dentro una clase para determinar las acciones que sus
objetos pueden realizar. Entonces, si tuviéramos que
tomar una analogía, utilicemos una con la que
estuvimos trabajando antes Por lo que anteriormente creamos una clase que se basaba
en el plano de la persona Los atributos que
tenemos, por supuesto, incluirían ID,
nombre, apellido, edad, nacionalidad, y
con nuestros objetos, por ejemplo, podemos crear
tantos objetos como queramos. Pero, por ejemplo, aquí
tenemos dos objetos, y ellos pertenecen a
cada persona única Lo que también podemos hacer
es a estos objetos, podemos agregar en método. Entonces, en este caso,
los métodos apropiados incluirían, para una clase de persona,
comer, estudiar y dormir. Por ejemplo, si
tuvieras una clase de auto, probablemente tendría
sentido tener métodos como carro de servicio,
coche de manejo, kilometraje o algún tipo de método o
acción, debería decir. En cualquier caso, podrías
tratar el mensaje como una acción que puedes incluir en el caso de uso por la naturaleza de tu clase y sus objetos asociados
que creas. Todo bien. Entonces eso es todo para
el panorama teórico. Ahora vamos a ir a trabajar en los ejercicios de laboratorio y aplicar esta lógica
a una clase determinada.
65. Integración de métodos personalizados (Instancia): [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que se centrará en utilizar métodos personalizados con
nuestras clases y objetos. Comencemos
con lo básico primero definiendo nuestra clase, configurando nuestra estructura y luego creando nuestro objeto. Vamos a elegir un ejemplo más familiar solo para que
podamos facilitar mucho la idea de métodos
personalizados. Entonces, antes que nada,
definamos nuestra clase. Entonces vamos a volver a
usar a la persona. Entonces lo que queremos
hacer es seguir adelante y definir nuestro método init junto con los parámetros
que se requieren Entonces vamos a
decir defunds init, seguido de un doble
subrayado nuevamente Entonces tenemos que
pasar por uno mismo, luego ID. Nombre de primer subrayado, apellido subrayado y luego tendremos edad y nacionalidad Solo alejemos aquí
y en nuestra k al final. Todo bien. Ahora
podemos usar self para almacenar los valores en nuestro objeto. Entonces ahora queremos
configurar nuestros atributos. Así que voy a decir self
dot ID es igual a ID, self dot, primer nombre de subrayado es igual al
primer nombre de subrayado,
luego self dot,
apellido luego self dot, nombre es igual al
apellido de subrayado Entonces la edad del punto del uno mismo es igual a la edad y la nacionalidad del punto propio
es igual a la nacionalidad. Perfecto. Tenemos esa configuración. Ahora, fuera de nuestro método
aquí en línea con nuestra clase, necesitamos crear nuestro objeto. Voy a decir
persona uno es igual, luego referirse a la clase persona. Entonces puedo
pasar por mis valores. Voy a tener uno. John, luego Doe, luego 28 años y nacionalidad, solo
podemos decir USA. Bien, ahí lo tenemos. Entonces
tenemos todo definido. Hay identificación, nombre, apellido, edad y nacionalidad. Ahora, vamos a seguir adelante e imprimir estos valores de acuerdo a los atributos a los
que hacemos referencia. Entonces lo que voy a hacer es desplazarme un poco hacia abajo y
podemos decir imprimir. Refiérase a la persona uno, punto, y luego ese es atributo. Tendremos, por supuesto,
primer nombre de subrayado, y luego podemos decir persona
impresa uno, punto, y podemos decir
nacionalidad, por ejemplo Ahora podemos seguir adelante
y ejecutar este código. Ahí vamos en salidas, como
podemos ver a John y USA. Tenemos nuestra
clase básica definida. hemos creado un
objeto y hemos generado los valores que queremos de acuerdo con el
atributo que se ha definido, y es agarrar los valores del
nombre y de la
nacionalidad en consecuencia. Perfecto. Tiempo de mensaje personalizado. Asegúrate de tener esto en su lugar y de que lo
hayas entendido. Teníamos mucha práctica ahora
con clases y objetos. Ahora vamos a aplicar el mensaje. Por el momento, solo podemos eliminar la declaración impresa y ahora sigamos adelante y
definamos nuestros mesods. Derecha. Vamos a continuar. Ahora, cuando estás configurando tus métodos, necesitan estar en línea
con tu mesod innit Va a estar
dentro de tu clase en línea con el mensaje innit Como puedes ver aquí,
hay una línea con sangría. Yo tendría que
hacer lo siguiente. Esté en línea con
su método de inicio, y luego podrá
definir su método Voy a decir muerte y
voy a llamar a esto introducir. Seré un
mesod de introducción se podría decir. Entonces necesito pasar en auto
aquí como parámetro. Y estamos usando self para que
podamos acceder a nuestros atributos
almacenados. Entonces tenemos, como
puede ver, nombre, apellido, edad y nacionalidad. Y lo que queremos
hacer a continuación es seguir adelante y configurar una sencilla declaración
impresa que sólo va a decir hola. Mi nombre es el espacio de dos puntos, y luego voy a usar la
concatenación de cadenas, porque vamos a estar
tratando con un valor de cadena Entonces voy a decir self
dot primer subrayado nombre. Derecha. Así es como podemos
definir un método sencillo como ese. Ahora self dot Fn
va a buscar el atributo y el valor que se ha configurado para el objeto que está vinculado
a ese atributo En este caso,
va a ser John va a ser
salida al final. Ahora, todo lo que queremos hacer
ahora es llamar a ese método. Ahora ese método se
llama introducir lo
vamos a aplicar a la persona uno, que por supuesto se establece a este particular Esto se establece como un objeto con el valor
de John como nombre de pila. Así es como podremos
decir el primer nombre de Seles, y va a estar vinculado
a este objeto aquí
que estamos creando y ese objeto
que hemos creado atributo de
primer nombre,
que es John Entonces para hacer eso,
necesitamos invocarlo, y para invocar esta función, puedes simplemente seguir adelante
y decir persona uno Jugo de punto e introducción,
parencs de apertura y cierre Y aquí, lo que va
a pasar es que vamos a usar el autoacceso
nuestro nombre, y esto va a imprimir esta afirmación ya que
estamos llamando a este mesod Y lo que podemos hacer ahora es
seguir adelante y ejecutar el código. Y dice: Hola,
mi nombre es John. Bien, entonces es así de simple. Entonces así es como
simplemente podemos seguir adelante y
crear un método. Todo bien. Ahora vamos a seguir adelante
y crear otro método. Quiero crear uno que
diga feliz cumpleaños. Podemos ver que John Doe
tiene actualmente 28, así que necesito crear un nuevo
método. Déjame desplazarme hacia abajo. Voy a decir que este
será DF y será tener subrayado cumpleaños
el desastre un nombre Voy a pasar a través de self para que podamos acceder a los atributos, y luego necesitamos agregar
alguna funcionalidad. Entonces podemos decir self dot
age plus es igual a uno, y eso va a actualizar el atributo age que está almacenado en el objeto
y agregarle uno. John tendrá entonces
29 años técnicamente. Así que ahora vamos a seguir
adelante e
imprimir esto sin embargo.
Voy a decir imprimir. Feliz día de nacimiento, y voy a decir
espacio de coma, concatenación de cadenas Voy a decir yo mismo,
y voy a decir self dot primer
subrayado nombre Entonces dice feliz cumpleaños. Y también voy
a seguir adelante y decir, al final aquí, voy a
decir que estás ahora. Y entonces lo que quiero
hacer es que quiero seguir adelante y lanzar
porque recuerden, la g aquí se trata
como un entero, así que necesito lanzarla
a una cadena aquí, y eso es ya que estamos usando
alguna concatenación de cadenas Quiero decir cadena. Tenemos que decir más aquí. Y va a ser auto punto H. Y eso
va a decir son ahora. Y la razón por la que
agrego en el plus aquí
es porque estamos usando concatenación de cadenas y
vamos a lanzar a una cadena. ¿Bien? Y eso va a funcionar. Si
no agregué el plus, entonces va a obtener un error, así que tenemos que asegurarnos de que
agregamos aquí de la siguiente manera. Ahora solo puedo llamar a ese mensaje
para entonces poder decir persona un punto y es tener
subrayado cumpleaños, y podemos abrir y cerrar los paréneses que va a
decir, feliz cumpleaños, John, ya
estás y
va a ir en un seto y conseguir
la edad y recordar que lo
estamos agregando más uno, así que va a conseguir la
edad y agregarle más uno,
así que va a ser 29, así que va debería imprimir
esa estructura completa. Ahora si ejecuto el código, ya
podemos ver que lo
tenemos de la siguiente manera. Se ve un poco feo porque
no agregué el espacio. Yo sólo puedo agregar el espacio
ahí. Ahí vamos. Ahí vamos mucho más limpios ahora. Ya puedes ver que dice,
Hola, mi nombre es John. Feliz cumpleaños, John, ya
tienes 29 años. Derecha. Entonces así es como
podemos crear y utilizar métodos
dentro de nuestras clases y nuestros objetos y también
cómo podemos llamar mensaje. Así que recuerda,
dependería del caso de uso
que estés usando. Entonces aquí está el
código completo para que puedas ver. Por lo tanto, dependerá del caso de
uso que estés utilizando y el mensaje sería apropiado en
base a eso. Entonces en este caso, aquí, teníamos introducir y tener cumpleaños como nuestro mensaje porque eso es
apropiado a una persona para presentarle a una persona y decirle feliz cumpleaños a
la persona también. Derecha. Eso es todo para este ejercicio de laboratorio
en particular. Voy a añadir en
otro ejercicio de laboratorio que va a estar
enfocado en los métodos, pero un poco más de
detalle y vamos a
entrar en eso en el próximo ejercicio
práctico de laboratorio. Pero esto es lo básico para
utilizar métodos personalizados.
66. Trabajar con métodos estáticos y de clase - [Laboratorio]: Hola a todos. Bienvenido al
próximo ejercicio práctico de laboratorio, que va
a seguir enfocándose en los métodos. Ahora bien, algo que quiero
mencionar es que antes
estábamos aprendiendo a
utilizar métodos personalizados. Estos son también
conocidos en el ámbito de clases y objetos
como métodos de instancia, ya que estamos trabajando con self para trabajar con nuestros atributos de
objetos. Ahora también hay
otros dos métodos que obtenemos. Estos se conocen como
métodos estáticos y también métodos de clase. También vamos a trabajar y
enfatizar en eso también. Bien, así que comencemos
con métodos estáticos. Bien. Entonces un
método estático no usa self porque no interactúa con nuestros atributos de
objetos, y se comporta de manera muy similar
a una función regular, podría decir, pero está dentro nuestra clase solo para estar
mejor organizado Y podemos llamarlo sin
tener que crear un objeto. Así que vamos a seguir adelante y crear
un método estático simple. Derecha. Bien. Entonces aquí tenemos nuestros métodos personalizados introducidos
y tenemos cumpleaños, lo contrario, comúnmente conocidos
como métodos de instancia. Vamos a definir un método estático y va a tener un
decorador sobre él también Tenemos que estar dentro de
nuestra clase, por supuesto, y en línea una vez más
con nuestro método init, y tenemos que asegurarnos de
que estamos establecidos así Necesitamos agregar algo de espacio. Y voy a crear
un mensaje estático que va a comprobar si la
persona es adulta o no. Entonces voy a decir que la muerte
es subrayado adulto. Y lo que podemos hacer
es seguir adelante y pasar por el atributo
directamente mismo, que va a ser la edad. Entonces solo podemos decir la edad tal como está. Y recuerda,
no nos usamos a nosotros mismos, ¿de acuerdo? Y esto va
a asegurar que
tendremos acceso a los
atributos de manera directa. Bien. Ahora, después de haber seguido
adelante y definido eso, necesitamos agregar en nuestro Cerlon y luego queremos
realizar la funcionalidad Entonces vamos a decir que mayor
edad es igual a 18, entonces podemos decir devolver
verdadero, de lo contrario, devolver falso. Y recuerda, para hacer de esto
un mesod estático al final, necesitas agregar
en el decorador, que está en método estático Y ahora ya hemos configurado nuestro primer método
estático. Bien. Ahora bien, otra cosa que
quería mencionar aquí sobre el método estático que
hemos creado es que
pertenece a la clase pero no accede a nuestros atributos instantáneos. ¿Bien? Entonces solo algo
que quiero mencionar. Y lo que simplemente hacemos aquí es que estamos pasando por la edad, y vamos a
comprobar si la persona es adulta en función de su edad. Entonces ahora podemos llamar a este
método es adulto y podemos aplicarlo a una clase en
particular. Y en nuestro caso, nuestra
clase es persona. Así podemos desplazarnos hacia abajo.
Bien, agregando algo de espacio. Ahora lo que queremos
hacer es que queremos decir print y
vamos a llamar
al mesod estático y
vamos a referirnos a
la clase person, y quieres decir punto es subrayado adulto y estamos llamando al mensaje estático
aquí como puedes ver, entonces aquí podemos pasar
en un valor particular Entonces aquí voy a decir 25, por ejemplo, y va a comprobar si la persona
es adulta o no. Para que podamos ejecutar este código. Y aquí podemos ver que dice
verdad aquí en la parte inferior. Si voy aquí arriba, podemos ver que esa ha sido la salida como verdadera. Bien. Y sigamos adelante
y hagamos otra. Digamos que la persona es adulta, y déjenme poner 17. Y podemos ver que nos hacemos falsos
aquí en la parte inferior, ¿verdad? Entonces así es como
podemos ir a una cobertura y llamar a nuestro método estático
y cómo podemos sentarlo Entonces fue solo un
explícito
muy simple que verifico que utilizamos. Bien. Entonces eso es
algo que quería mencionar solo por claridad. Bien. Ahora bien, lo
siguiente que queremos mirar es
un método de clase. Bien, entonces tenemos
nuestro método estático. Ahora bien, un método de clase funciona
con la clase en sí, bien, no con un
objeto individual, se podría decir. Y usa CLS en lugar de
self para referirse a nuestra clase, y podemos usarlo para crear nuestros objetos de una
manera diferente En otras palabras, lo
que realmente podemos hacer es agregar valores predeterminados. Entonces es muy similar
en cierto modo si estás siguiendo los
argumentos por defecto en cierto sentido, y verás a lo que me
refiero en un momento. ¿Bien? Entonces, antes que nada, definamos un método de clase. Voy a crearlo justo
debajo aquí, método estático. Y lo que vamos a hacer es que podemos empezar con el decorador, y voy a seguir adelante
y decir método de clase Bien. Y entonces podemos
decir la muerte. Y yo estoy aquí. Voy a especificar
el nombre del método como WIS, underscore default,
underscore nacionalidad Bien. Y lo que
queremos hacer entonces es pasar por CLS,
como lo primero Y recuerda, CLS se refiere
al objeto de clase a
la propia clase, y estamos creando un nuevo
objeto con él. Bien. Y esencialmente lo que
queremos asegurar es que en lugar de
pedir una nacionalidad, automáticamente la
va a establecer un valor específico el cual
se fijará como desconocido. Bien. Entonces, lo que entonces vamos a pasar
es que vamos a ir en un seto y
pasar por nuestros campos Entonces vamos a tener identificación.
Tendremos primer nombre de subrayado Vamos a tener
apellido subrayado, y vamos a tener edad omitiendo, por
supuesto, la nacionalidad por ahora Entonces lo que queremos
hacer es querer, como mencioné,
crear una persona con desconocido como la nacionalidad. Puedo decir devolver CLS, y luego vamos a devolver ID, primer nombre de subrayado,
apellido de subrayado, edad, y luego para el
bloque de nacionalidad podemos poner en desconocido si no hay un valor en particular que se
haya agregado Ahora lo que podemos hacer es crear un objeto usando
nuestro mensaje de clase. Entonces esto va a
ser muy específico. Entonces por ahora, voy
a quitar esto por ahora, y ya verán aquí, voy a
llamar a esta persona dos iguales, y vamos a
decir persona punto. Y vamos a utilizar
este mensaje de clase. Entonces aquí voy a decir W subrayado
por defecto subrayado nacionalidad Bien. Y dentro de eso, voy a
pasar por mis valores. Aquí voy a poner ideas dos, nombre, voy a decir Jane
Smith, voy a decir 24. Ya van a ver voy a
omitir la nacionalidad. Entonces, permítanme seguir adelante y ejecutar esto en consecuencia
y verificar los resultados. Diré imprimir,
referirme a la persona dos, la variable, decir punto, y luego simplemente voy a
decir primer nombre de subrayado, y digo imprimir persona dos, y es justo lo que es eso aquí, Dot y voy a decir nality Ahora se puede ver que no puse
en una nacionalidad en particular, así que va a
volver a la salida Ahora vamos a ejecutar esto. Y aquí
tenemos a Jane y desconocida. Y como pueden ver,
ese es el caso cuando seguí adelante y me referí
al atributo de nacionalidad, pero aquí no establecí un valor, así que fue y
cambió este mesod Y como pueden ver aquí, estoy devolviendo el
nombre, apellido,
edad, DNI, pero aquí estoy dejando la
nacionalidad como desconocida. ¿Bien? Entonces esto puede ser un mensaje de clase muy
útil, y en este caso,
queríamos otra forma de
crear un objeto. Entonces esta es otra forma en la que
puedes crear un objeto. Y por ejemplo, si quieres
establecer un valor predeterminado, si un usuario no proporciona
un determinado valor por sí mismo, como la nacionalidad, como puedes ver, Bien. Y esto es muy útil
si queremos modificar nuestros atributos de nivel de clase
ellos mismos. Todo bien. Entonces esta es la
forma sencilla en la que puedes usar tus métodos estáticos y también tus propios métodos de clase. Bien. Ahora bien, lo último
que voy a hacer, por supuesto, es que solo quiero tener otro tipo de inmersión profunda en
este ejercicio en particular. Solo voy a pasar
algún tiempo explicando más sobre el método estático y el mensaje de clase solo un
poco más de detalle solo para
solidificar tus conocimientos para que
aprendas correctamente, ¿ debería decir Así que vamos a ir a explorar un
poco más en eso. Derecha. Entonces
lo siguiente que quiero explicar es aquí con nuestro método
estático, tenemos edad. Ahora bien, la edad aquí solo está actuando
como un parámetro normal, y estamos pasando como lo
hacíamos antes de ese valor en particular. Entonces, si tuviera que seguir adelante y
reiterar, si digo imprimir, voy a
seguir adelante y referirme a ello
en consecuencia diciendo persona
punto es subrayado adulto, y vamos a poner, por ejemplo, 19 Para ejecutar el código, y
tenemos aquí cierto. Esencialmente, es muy similar a cómo tendríamos funciones, pero podrías tratar
el método estático como una función dentro de una clase, podrías decir en términos
de su organización. Estamos llamando aquí
al método estático y solo
estamos devolviendo el
argumento o valor que podrías decir, que va a ser pasado aquí y sustituido por edad aquí, que está actuando como el parámetro que de hecho estamos comprobando. Eso es algo que quería mencionar
para mayor claridad aquí. Tratar de ver
métodos estáticos
son funciones que se acaban de definir dentro de una clase. Así es como quiero que lo veas. Bien. Ahora, la
persona punto p aquí. Entonces persona es en realidad ese tipo de toque
que mencioné es porque esto es una
especie de función porque esta es una función
dentro de una clase aquí, y nos estamos refiriendo
a la clase. Así es como tendríamos que
referirnos primero a él. Nos referimos primero a la clase, y luego por supuesto,
al mesodname Bien, ahora, un poco más de claridad
sobre el método de clase aquí. Entonces, esencialmente, lo que está
pasando aquí con nuestro método
de clase, por supuesto, en este caso, estamos usando CLS en lugar de self es lo que
estamos haciendo aquí, y eso se refiere a la clase
persona misma Y luego ID primer nombre, apellido H es esencialmente solo los parámetros que
necesitamos para crear una persona. Como podemos ver, la nacionalidad no
se pasa porque
queremos establecerla desconocida por defecto cuando
estamos realizando la declaración
return. ¿Bien? Derecha. Como podemos ver
después, regresamos CLS, lo que esencialmente estamos
haciendo aquí es vamos adelante y llamando a
la clase constructor, que es def init aquí, y nos va a
ayudar a crear un nuevo objeto persona con
los detalles dados y
esencialmente esos
detalles que podemos ver
agregamos aquí cuando
estamos llamando a la clase mesod y en la
funcionalidad en el default la nacionalidad se va
a establecer como desconocida, así que no tenemos que
preocuparnos por tener establecer un valor extra
que queremos
pasar cuando
estamos configurando los
parámetros aquí en consecuencia. Muy bien chicos. Sólo un
poco más de detalle sobre eso, sólo para explicar un
poco más. Pero en otras palabras, chicos, eso diría, es. Ahora hemos aprendido a usar métodos personalizados,
en otras palabras, métodos de
instancia, métodos
estáticos y también cómo utilizar métodos de
clase también. Eso es todo para esta conferencia
en particular, y luego nos vamos a centrar en la siguiente
lección sobre herencia.
67. ¿Qué es la herencia?: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada a la herencia. Entonces echemos un vistazo. Rico. La herencia nos
permite crear una clase hijo que herede todos
los atributos y métodos de una clase padre Entonces echemos un
vistazo a esto visualmente. Entonces tenemos una clase padre, y luego tenemos dos
clases hijas, por ejemplo, y esas clases hijas esencialmente
van a heredar ambos atributos y métodos de esa clase padre Ahora echemos un
vistazo a una analogía para cimentar nuestro conocimiento
sobre la herencia Entonces digamos que tenemos un padre. Entonces digamos que tenemos una madre
y ella tiene dos hijos. Ahora bien, podríamos decir que
con la genética y con la reproducción y todo lo que
los niños heredarán, por ejemplo, digamos cabello
rubio y ojos verdes Digamos que el niño, el macho hereda
el pelo rubio, y la hembra, la niña
hereda los ojos verdes Entonces esto es herencia. Digamos que el
padre o la madre también les enseña a
hablar y a caminar. Entonces los niños ahora heredan esos métodos
de hablar y caminar Y eso solidificaría todo
el concepto entre
herencia en Python Entonces tendríamos la clase de
padres y
tendríamos las clases hijas.
Muy bien, chicos. Entonces eso es todo sobre la herencia en términos de
la visión teórica. Ahora vamos a sumergirnos en el ejercicio práctico de laboratorio.
68. Uso de la herencia: [Laboratorio]: Todos, y bienvenidos al
próximo ejercicio práctico de laboratorio, que va a estar enfocado en la herencia. Empecemos. Lo primero que
tenemos que hacer es crear nuestra clase padre o
clase base, se podría decir. adelante y utilicemos
un ejemplo
con el que
ya estamos familiarizados solo para
introducirnos en todo el
concepto de herencia. Derecha. En primer lugar, voy a definir mi clase como persona. Entonces queremos definir
nuestro método innit, también
conocido como método constructor, y esto va a ser llamado una
vez que se crea un nuevo
objeto persona, y luego va a atributos
inicializados y variables
de instancia de nuestra Entonces podemos decir De underscore
init, doble subrayado. Entonces vamos a pasar por subrayado
autoIGF,
apellido ,
edad y nacionalidad. Genial. En este momento queremos definir
y asociar nuestro atributo. Entonces DNI, nombre, apellido edad y
nacionalidad con auto. Entonces puedo decir
autopunto ID es igual a ID. Entonces puedo decir self dot
primer subrayado nombre, y ese va a ser
primer subrayado nombre, self dot apellido Bien, y luego auto punto g
y auto punto nacionalidad. Correcto, perfecto. Genial. Ahora bien, lo que
también quiero hacer es crear un mensaje para que sepas cómo
puedes heredar mensajes
también junto con atributos Bien, así que en línea con
tu mensaje de inicio, voy a decir muerte
y otra vez, introduce Va a
pasar por auto corte en. Y recuerda estos métodos
personalizados que estamos creando son mensaje de
instancia. Entonces, cuando estamos tratando con uno mismo, va a ser un método de
instancia. Así que técnicamente se podría
decir método personalizado. Derecha. Entonces esta instancia mesod va a permitir que la persona
se presente, y queremos devolver una cadena
con el nombre de la persona,
con el nombre de la persona
está perfectamente bien Entonces podemos decir retorno.
Y esta vez vamos a usar cuerdas
F solo para cambiarlo un poco,
y voy a saludar. Yo soy, y luego
solo voy a poner en mis marcadores de posición para las cadenas de self first underscore name, y luego vamos a tener self dot apellido subrayado
nombre, así como así Y al final.
Ahí lo tenemos. Ahí está nuestro método también vinculado a esta clase en particular Yo sólo quiero. Ahí vamos. Hagámoslo un poco más limpio. Bien, entonces
tenemos ese set. Ahora, lo siguiente
que queremos hacer es definir nuestra clase infantil. Entonces aquí tenemos
nuestra clase de persona, y esa clase infantil va
a ser la clase
derivada de esencialmente la clase de
persona, bien. Y va a heredar todos
los atributos existentes y
todos los métodos existentes Entonces podemos ver nuestros
atributos aquí, y podemos ver este
método introducido. Bien, entonces cuando estés
trabajando con herencia, vas a heredar
de tu clase de padres, y tiene que ser
algo que tenga sentido Entonces no puedes tener, por ejemplo, una clase infantil que sea auto, y tienes una clase de padres
en su lugar que es persona. No tiene sentido.
Persona y auto. Es un poco confuso. Entonces un ejemplo adecuado en
este caso sería empleado. Entonces empleado se
deriva de la clase persona. Eso tiene sentido. Entonces sigamos
adelante y hagamos eso. Ahora, vamos a tener que
definir otra clase ahora. Entonces, en línea con
la clase de persona, queremos crear otra clase. Entonces me desplazaré hacia abajo
y diré clase. Y esto se va a
llamar empleado, que va a heredar persona
todos los atributos y todos
los métodos Y podemos simplemente referirnos a
la clase persona
aquí mismo entre paréntesis para
realizar herencia Y luego queremos seguir
adelante y cerrar tal, y luego necesitamos
definir nuestro método init, esto va a extender
la clase persona, y también vamos a agregar
nuevos atributos también Va a retener
todos los atributos y mesods de la clase persona, y también vamos a
agregar atributos adicionales Déjame mostrarte a lo que me refiero. Podemos decir Def, y podemos
decir doble subrayado init,
doble subrayado, y vamos Para que esto sea más fácil, solo
podemos seguir adelante y copiar todo lo
que ya existe aquí. Y quieres pegar eso en. Entonces puedes agregar atributos
adicionales. Por ejemplo, lo que
voy a hacer es decir puesto subrayado título y salario, recuerda agregar en
dos puntos al final ahí Aquí van a estar los
atributos extra que añadimos. Bien. Genial. Ahora podemos
entrar y continuar. Y ahora lo que tenemos que
hacer es querer utilizar algo conocido
como la súper función. Bien. Ahora, la súper función se utiliza para llamar al constructor de nuestra persona de clase padre. Entonces este va a ser, por
supuesto, nuestro constructor aquí. Y lo que vamos a hacer es que nos vamos
a asegurar que lo hagamos, así que no necesitamos redefinir los atributos que
ya existen en persona No queremos redefinir
esto vamos a
llamar a nuestro constructor
de nuestra clase padre, que por supuesto será persona Y entonces lo que podemos hacer aquí
es que podemos ir a un seto y asegurarnos de que digamos príncipes súper de
apertura y cierre, y quieres decir
punto doble subrayado
en KIT, doble subrayado en KIT, Y entonces lo que
vas a hacer aquí es que vas a
pasar por la identificación, primer subrayado,
el apellido del subrayado, la
edad y la nacionalidad Entonces estos van a ser los
atributos heredados de la persona. Aquí es donde estás
heredando los atributos. Y luego queremos definir nuestros nuevos atributos que son específicos de la clase de
empleado. Y eso va a
seguir lo que hicimos aquí antes con self dot, self dot, etcétera Y eso va a
ser, como pueden ver, por título de puesto y salario. Para que veas que no
han sido resaltados. Entonces, lo que puedes
hacer está por debajo de eso, puedes decir auto,
y nosotros podemos decir punto, y vas a decir título de subrayado de
trabajo,
igual a título de subrayado de trabajo, y luego auto punto, salario igual a salario,
así como así Así que ahora hemos seguido adelante
y definimos nuestros atributos que son exclusivos de
esta clase de empleados. este momento podemos seguir
adelante y definir una función que es sólo
para la clase de empleado. Aquí en línea con
tu método de inicio, lo que puedes hacer es un
trabajo de profundidad subrayado info, y quieres
pasar por uno mismo, y vamos a seguir adelante
y proporcionar este método que
nos pueda dar información relacionada con el trabajo
sobre el empleado, y vamos a
devolver una cadena indicando su título de trabajo Así que solo voy a decir regreso, y vamos a seguir adelante y utilizar una
cadena F, diré F,
y voy a
decir que trabajo como A, y luego para que se pase el
parámetro, trabajo de
self dot, título de subrayado, y punto ahí Bien, así que ahí lo tenemos. Entonces está el mensaje que sólo le pertenece
al empleado Derecha. Así que tenemos que
ahora podemos seguir adelante y crear una instancia
u objeto de empleado. Entonces hagámoslo. Nuevamente,
esto va a estar en la línea de la clase
aquí en la primera línea. Así que así así podemos ver que está en
línea como debería estar. Yo sólo quiero agregar
en algún espacio. Bien. Ahora podemos simplemente crear una variable y llamar a
este empleado uno igual. Queremos llamar y utilizar
la clase de empleados. Que persona heredada y
todos los atributos. Entonces ahora podemos
pasar por los valores, bien, que pertenecen al
nombre de identificación, apellido, edad
y nacionalidad, junto con identificación, título de
trabajo y salario también Entonces lo que voy a
hacer es que voy a abrir mis prenses y
voy a decir que la identificación será una Nombre John Joe, y
entonces tendremos edad. Diré 28 y
diré nacionalidad, será USA, y entonces
tendríamos el título del puesto. Diré ingeniero de software, y después voy
a fijar el salario. Diré 80 mil. Ahí vamos. Tenemos todo
eso en su lugar. Entonces, puedes ver los
valores extra que se
establecerán a los
atributos asociados y luego todos los valores
que se van a establecer para los atributos que
se han definido en
la persona de clase. Bien. Entonces aquí tenemos ese objeto y podemos ver que
heredamos los primeros y tenemos los últimos
que son nativos para heredar nuestra clase que va a heredar
de persona, entonces empleado Ahora lo que podemos hacer es
decir imprimir y podemos decir empleado uno y
podemos decir nombre de pila, eso será de
la clase de padres esencialmente y luego
podemos decir print, empleado un punto, y aquí podemos decir
trabajo subrayado título Eso va a ser nativo de
la clase de empleados. Bien, así que sigamos adelante
y ejecutemos este código. Entonces conseguimos a John, y por supuesto, conseguimos ingeniero de software.
Entonces ahí vamos. Tan bien hecho si
llegaste a este punto, configuraste con éxito herencia y la
configuraste muy bien. Ahora queremos llamar a los
métodos que definimos. Entonces el primer método,
que va a ser introducido desde
la persona de clase, y luego el método de info de trabajo
de la clase de empleado. Entonces, lo que podemos hacer aquí abajo, es que podemos decir simplemente imprimir, y tú vas a
decir empleado uno, punto, y puedes decir introducir, y luego imprimir empleado un punto, y puedes decir
trabajo, subrayado,
información, apertura, cierre parencs Bien, entonces ahí tenemos eso, y yo sólo voy a comentar
los dos primeros por ahora. Y podemos ejecutar el código. Aquí, dice: Hola, soy John Doe. Trabajo como ingeniero de software. El primer método
ha sido llamado. Hola, soy John Doe, y luego trabajo como ingeniero de
software, que viene del método de
info de trabajo que definimos Podemos ver haciendo referencia
a la variable ahí que esencialmente está
creando ese objeto. Podemos referirnos a él y
luego llamar a esos métodos que son únicos para
cada clase y podemos ver que hemos heredado
el método de la clase person que es porque podemos acceder a él y hacer uso de esta
función en consecuencia. Bien, chicos, así
que ahí van. Entonces, como puedes ver, esto muestra cómo puedes
utilizar la herencia, y también es muy
útil, como puedes ver, no necesitas
reconstruir la voluntad y definir
clases separadas y todo. Realmente puedes
ahorrarte mucho tiempo
utilizando esta súper función
que tenemos aquí configurar
automáticamente los atributos para nosotros de la clase anterior que
tenemos y luego ir
a una cabeza y esencialmente
permitirnos asignar nuestros propios atributos que
dependen de la clase más nueva, que es nativa de
esa clase solamente. Bien. Perfecto. Muy bien chicos. Eso es. Sigamos
adelante y eliminemos esto. Eso es todo por este particular
ejercicio práctico de laboratorio sobre herencia.
69. Abstracción: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en la abstracción. Echemos un vistazo.
Probablemente te estés preguntando qué es
la abstracción en la tierra. abstracción es simplemente
el proceso de ocultar detalles
innecesarios y mostrar
solo las partes importantes. Esto ayuda a simplificar sistemas
complejos al enfocarse en lo que hace
algo más que en cómo funciona. Ahora bien, si tuviéramos que utilizar esto en OOP, programación
orientada a objetos, abstracción simplemente
va a significar crear interfaces
simples y fáciles de usar mientras ocultamos todos los detalles complejos de
implementación Ahora bien, si tuviera que darle una analogía simple para ayudar a ilustrar mi punto
sobre la abstracción, sería uno tan
simple como este Digamos que tenemos un control remoto de TV
y queremos ver la televisión. Ahora bien, para poder
cambiar de canal, necesitaríamos hacer
clic en el control remoto, y entonces eso va a enviar
una señal a la televisión para decir:
Bien, quiero que
vayas a este canal. Quiero que vayas
a ese canal. Y así es como
quiero que intentes racionalizar todo el
punto de la abstracción Entonces, para resumir eso, básicamente, no
necesitamos
entender ni
saber cómo el control remoto
cambia el canal o por qué. Sólo queremos ver la televisión. Ahora bien, si tuviéramos que aplicar
esto a
la abstracción, la idea es
que no necesitamos
entender cómo funciona algo internamente, al
igual que una abstracción. Solo lo usamos para obtener
el resultado que queremos. Bien. Bien, chicos. Entonces eso es todo sobre la lección de abstracción en términos de
una visión teórica. Vamos a profundizar en aplicarlo a los ejercicios
prácticos de laboratorio. Así que sigamos adelante y
pongámonos directamente en eso.
70. Trabajar con la abstracción - [Lab]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar enfocado en la abstracción. Empecemos. Ahora, lo primero que
tenemos que hacer es llamar
al módulo ABC. Y desde el módulo ABC, vamos a
importar ABC y caps, que significa la clase base
abstracta. Entonces vamos a usar una clase base
abstracta y también el método
abstracto asociado. Ahora, para importar un método
abstracto, solo
necesitas agregar
una coma y decir mesodo
Appstrct así como así.
Bien, perfecto. Ahora queremos crear
una clase abstracta. Ahora, voy a decir clase y me referiré a
esto como persona. Entonces dentro de los paréntesis, se
quiere pasar por ABC, que significa clase base
abstracta Ahora bien, lo clave aquí
con la abstracción es
que si consideras que una clase es una clase abstracta, no puede
ser instanciada En otras palabras, no se puede
crear una instancia aquí. No se puede crear ningún objeto. Eso es lo clave aquí
que también voy a probar cerca del final de
este ejercicio de laboratorio para demostrarte lo que
quiero decir con esto. Derecha. Ahora, ya que estamos
creando una clase, vamos a hacer lo
mismo que antes. Vamos a definir
nuestro método init con nuestros parámetros y luego configurar y almacenar nuestras variables más
permanentes que, por
supuesto, van a ser atributos Entonces voy a decir
Deere puntaje interno, pasaremos por
uno mismo, nombre y edad. Entonces queremos decir el nombre de punto
propio es igual al
nombre y la edad de uno mismo es igual a
la edad. Muy sencillo. Entonces en la misma línea, queremos definir
nuestro método abstracto. Ahora me pregunto ¿qué
es un método abstracto? El método abstracto es esencialmente un método que
va a ser utilizado como decorador y se va
a unir a un método en particular y
va a hacer cumplir que todas las
subclases o clases secundarias, debería decir, deben
implementar dicho Es un
método obligatorio que estableces para todas tus clases de
sub o hijos. Lo que voy a hacer es decir
DF y voy a decir trabajo subrayado
descripción va a ser mi mesod abstracto y vamos a
pasar por Lo que tienes que hacer
está justo encima de él, necesitas agregar en
tu decorador y decir método abstracto de app Eso se basa en lo
que importamos aquí
del módulo ABC. Correcto, perfecto. Ahora bien, este método,
como mencioné, debe ser implementado por
todas nuestras clases, y no vamos a
definir cómo se usa. Sólo vamos a
hacerlo obligatorio. En cada clase que ahora
creamos, las subclases que
creamos, ¿bien? Esencialmente, lo que
va a pasar es que podemos agregarle nuestra propia
funcionalidad,
pero el método en sí, necesita ser utilizado. Eso es realmente lo clave
aquí con los métodos abstractos. Ahora, como pueden ver aquí, tengo una línea roja y esto significa, claro, vamos
a obtener un error. No podemos simplemente dejar vacío
este método. Lo que vas a
querer hacer es
pasar por la
palabra clave pass, bastante irónica, en realidad, solo para que no
haya error y esto significa que
no hay implementación en nuestra clase abstracta Ahora mismo lo siguiente que
queremos hacer es que queremos
definir aquí un mensaje regular. Entonces uno que podamos llamar y
utilizar, que lo haremos, pero no va
a tener ningún tipo de noción
estricta en
términos de mensaje abstracto. Entonces va a ser muy
sencillo y sólo
voy a decir de y voy a decir introducir como
nombre del mesod Queremos pasar a través de uno mismo, y vamos a poner en
una especie de declaración fija. Voy a decir retorno F, y voy a decir
aquí está mi cadena, mi nombre es y paréntesis zen, voy a decir nombre de punto propio Y yo soy y podemos decir
auto edad podemos
pasar por años.
Déjame un poco por aquí. Este va a ser un método
estandarizado que vamos
a utilizar cuando invocamos nuestros
objetos creados en nuestras subclases Bien. Ahora mismo en la misma
línea aquí que persona de clase, queremos definir a nuestro
primer hijo o subclase Entonces lo que voy a hacer es seguir
adelante y decir clase, y voy a
llamar a este maestro, y esto va a heredar la clase abstracta
conocida como persona ahora Entonces estamos realizando
algo de herencia ahora y voy a
seguir adelante y decir persona. Vamos. Y luego como antes, necesitamos definir
nuestro mensaje innit, pasar por uno mismo, nombrar edad, y luego podemos poner
algo único a esta clase, que
será sujeto Entonces el nombre y la edad van a ser heredados de la clase de persona. Bien, ahora lo que queremos
hacer es que queremos seguir adelante y llamar a la
persona constructor. Entonces queremos asegurarnos de
que a esto lo llamamos. Y lo que vamos
a hacer para hacer eso es utilizar Super, y luego podemos decir puntaje
rubio súper punto, puntaje rubio D. Y entonces vamos a
pasar por aquí entre paréntesis lo que
vamos a heredar Entonces heredaremos nombre y edad. ¿Bien? Y
vas a ver aquí que la asignatura es nativa de
la clase de profesores. Derecha. Ahora solo podemos
decir auto punto sujeto es igual a sujeto. Entonces solo desafío regular aquí, definiendo
regularmente, debería
decir el atributo que es
nativo de esta clase A. Lo siguiente que quieres
hacer es ahora seguir adelante y llamar a
ese método abstracto que aquí definimos
que necesitamos utilizar, y también vamos a seguir adelante y definirlo nosotros mismos
en este caso. Entonces lo que voy a
hacer aquí es decir def, trabajo subrayado
descripción a través Ahora podemos seguir adelante y agregar en nuestra propia descripción específica del
trabajo, por ejemplo, para un maestro. Voy a seguir adelante y
decir regreso, usar cuerdas S, voy a decir que enseño materia de
autopunto en una escuela. Muy sencillo. Bien, ahí vamos. Entonces conseguimos ese set.
Ahora podemos seguir adelante y crear nuestra
segunda clase aquí. Entonces tenemos
profesor de clase y vamos a crear otra una clase, y podemos seguir adelante y llamar a
este doctor, por ejemplo. Entonces puedes ver el patrón aquí, tenemos personas o personas, y luego tenemos roles laborales que estamos analizando
con subclases Ahora, queremos pasar y heredar todos los
atributos de la persona,
es decir, nombre y edad Para que podamos
pasar eso así. Y luego queremos
definir nuestro método innit. Vamos a ver la estructura.
Sí, ahí agregamos espacio. Digamos, Def, doble subrayado,
liendre, doble subrayado, y vamos a tener todavía el nombre
propio y la edad, pero lo que será exclusivo de
esta
clase en particular será esta
clase en particular Ahí vamos. Y luego
haremos una pausa en Superterscore,
Ntblescore. Así podemos agarrar y
heredar el nombre y la
edad en consecuencia que hemos
establecido en nuestra clase de persona, igual que hicimos con
la clase de maestro Bien. Derecha. Ahora queremos almacenar la
especialidad médica como un atributo,
así podemos decir auto punto, espacialidad es igual a espacialidad Bien, ahí vamos. Entonces ya tenemos ese conjunto
en la misma línea. Tenemos que referirnos al
método descripción del trabajo. Entonces puedo decir def trabajo
subrayado descripción. Todo a través de ti mismo.
¿Y qué queremos hacer aquí? Podemos decir retorno F.
voy a decir, soy médico especializado en y podemos decir aquí en nuestros marcadores de posición
auto especialidad punto Así como así, y vamos
a ponerle punto al final. Entonces así es como podemos
llamar a esta descripción. Bien, entonces ahí lo tenemos. Así que asegúrate de haber agregado
en todo de la siguiente manera. Así que ahora hemos seguido adelante y
agregamos todo amablemente. También sólo voy
a ordenar el código, hacerlo un poco más limpio. Bien, así que eso es
lo que necesitamos para que
todo empiece . Todo bien. Entonces continuemos y hagamos algunas pruebas
para que
podamos entender
realmente el valor de las clases
abstractas y cómo
todo está funcionando en conjunto. Así que sigamos adelante
y voy a sumergirme bastante profundo en esto.
Así que vamos a llegar a ello. Bien. Entonces en la parte inferior ahora, solo
podemos referirnos
a nuestras dos clases. Entonces tenemos profesor
y tenemos doctor, entonces nuestras subclases, ¿debo decir? Voy a crear instancias
y voy a probarlas. Voy a decir maestro
uno igual, maestro, ese es el nombre de la clase
y quiero pasar por los valores que voy
a establecer como mis atributos. Aquí tomaré Ale, y luego tendré 28, y luego voy
a decir Msmatics Entonces voy a tener doctor uno que vincule a la subclase de
doctor Aquí voy a
poner en Bob y él tiene 31 y él es sólo un médico de cabecera,
un médico general. Bien. Entonces ahora lo que quiero
hacer es seguir adelante e imprimir de
acuerdo con ese método de introducción
que antes definí. Y lo que quiero hacer es
ver cómo se aplica al profesor
y al médico. Entonces lo que puedo hacer es decir
imprimir y podemos referirnos al maestro ese profesor
instancia punto intro DoS Entonces puedo hacer lo
mismo y decir imprimir, doctor uno introducir Sigamos adelante y ejecutemos esto obtienes Mi nombre es Alis
y tengo 28 años Mi nombre es Bob y
tengo 31 años. Entonces, esencialmente lo que
pasó aquí es llamamos a este método de introducción, que va a
esperar que agarres
el nombre y la edad donde quiera que sigas
adelante y lo definas. Ahora, seguimos adelante y configuramos nuestros valores aquí en esta
instancia que configuramos. Después enseñamos a uno
y al doctor uno. Luego aplicó este método
particular a cada uno de esos
objetos y luego ejecutó esa función para
recopilar de acuerdo a los valores que se fijaron
en este objeto en particular,
es decir, el nombre y
la edad de los mismos. Esa es una manera muy útil
en la que puedes agarrar tu método introducido. ¿Bien? Correcto, perfecto. Ahora lo siguiente que
quiero mostrarles es la parte de descripción del trabajo. Entonces
sigamos adelante y veamos eso. Entonces ahora quiero llamar a
mi método abstracto, que he utilizado
tanto en mi clase de médico como de
profesor. Entonces solo podemos decir print. Y nuevamente, queremos
referirnos a nuestras instancias. Así maestro uno, punto, trabajo subrayado descripción, apertura y ropa parenses Entonces quiero decir imprimir, doctor
un punto, descripción del subrayado del trabajo Y podemos comentarlos solo
por el ínterin. Y corre. Enseño
matemáticas en una escuela. Soy médico especializado en GP, por lo que la práctica general,
etcétera. Bien, así que ahí lo tenemos. Entonces ahora podemos ver
que está dando salida a lo que necesitamos, como pueden
ver ahora Derecha. Así es como
podemos utilizar la abstracción. Ahora, voy a entrar un
poco más de detalle para que
podamos entender todo
el punto de
lo que estamos haciendo aquí. Vamos a ponerla
en marcha en la parte superior aquí. La clase persona es
una clase abstracta, por lo que eso significa que no podemos instanciarla
directamente Lo que quiero decir con eso
es que no se puede crear un objeto de persona. Te voy a
mostrar a lo que me refiero. Aquí estamos creando objetos del maestro y del médico. Si yo fuera a decir persona
uno igual y digo persona y yo fuera a poner en qué valores que tenemos aquí,
teníamos nombre y edad. Diré John y 24. Te vas a dar cuenta si
tuviera que seguir adelante y decir persona
impresa un nombre de punto, verás que vamos a
obtener un error ahora. Solo quiero comentar
esto por ahora. Y ejecuta el código. Puedes ver aquí obtenemos
un rastro de vuelta donde
dice que no puedes instanciar persona de clase
abstracta sin una implementación para
el método abstracto, que es la descripción del trabajo Esto es lo que
utilizamos antes utilizar nuestra
descripción de trabajo aquí, un método abstracto, por lo que esencialmente
podríamos seguir adelante y
utilizarlo en nuestras subclases No se puede crear una instancia, como se puede ver de
un método abstracto. Si tuviera que eliminar este método abstracto y simplemente
mantenerlo como una clase regular, o si fuera una subclase, estaría perfectamente bien Esta es una de las
cosas clave aquí que quiero mencionar aquí con
abstracción aquí. No se puede seguir adelante y
simplemente hacer tal cosa. Ahora, otra cosa que
quiero mencionar aquí es
que como pueden ver, obligatoriamente
necesitamos usar la descripción del
trabajo aquí.
Estos dos métodos. Ahora bien, lo bueno aquí tener descripción del trabajo
en ambos métodos y utilizar el
método abstracto aquí es que hace cumplir la estructura con nuestras subclases de
barras secundarias Nos está diciendo que
deben implementar estos métodos. Como se puede ver. Ahora bien, si tuvieras que omitir, por ejemplo, los métodos
en tus clases, te vas a encontrar
con un error Así que solo tenlo en mente. Tienes que asegurarte de
tener estas clases abstractas a las que te referías dentro de
tus subclases Bien, entonces eso es muy importante
tener eso en mente. Ahora bien, otra cosa que probablemente
te estés preguntando es, ¿por qué todo este
proceso es abstracción? ¿Dónde lo ves realmente? Aparte del hecho de que
con la persona de clase aquí, solo yendo en un seto y lanzando una flecha si
intentas instanciar una clase, ¿por qué es esta abstracción? Ahora bien, una cosa a tener
en cuenta aquí es que el usuario
no necesita saber cómo
funciona internamente la descripción del trabajo. ¿Bien? Entonces aquí es donde el
punto que estaba tratando de hacer en las lecciones teóricas es que tu usuario no necesita saber cómo
funciona internamente la descripción del trabajo. ¿Bien? Entonces como puedes ver aquí, estamos pasando no estamos pasando ninguna información
o funcionalidad. Sólo estamos diciendo,
quiero una descripción del trabajo, clase de
profesor, clase de doctor
, hágalo ustedes mismos. ¿Bien? Y este es el punto en el
que estaba tratando de hacer la analogía con el
control remoto de TV y el televisor de aquí, ¿de acuerdo? No necesitas conocer los detalles
extra y todo. Para que puedas ver una
clase abstracta intenta que
todo sea mucho más
fácil de manejar sin todos
los detalles extra. Para que lo veas
simplificándolo para nosotros mediante la utilización de un
método abstracto. Todo bien. Ahora bien, otra cosa que también
quiero mencionar que es importante son nuestros usuarios, claro, cuando estamos
definiendo nuestros objetos aquí y creando las
instancias, ¿debo decir? Solo van a interactuar con nuestro método de introducción,
y nuestro método de descripción del
trabajo aquí sin tener que preocuparse por todos esos detalles de
implementación. Se puede ver incluso aquí para
el método introducir. Nosotros hemos seguido adelante y ya lo
configuramos aquí. No es usar un método
abstracto, pero ya
lo hemos agregado a una clase abstracta, que podría verse como
un código de inicio o código que está formateado para
prepararlo sin
tener que hacerlo usted mismo. Puedes ver aquí, no
tuvimos que poner esto manualmente en cada una
de estas clases. Ya estaban hechos por nosotros. Nuevamente, para resumir la abstracción. Ocultar la complejidad al tiempo que se
aplica una estructura muy limpia. Bien. Derecha. Bien, chicos, así que eso es todo en términos de cómo se puede utilizar la
abstracción en PySon Bien, entonces lo que
podemos hacer ahora es que podemos
seguir adelante y copiar esto
y quitárnoslo. Y ahí lo tenemos.
71. Colecciones: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en las colecciones. Entonces echemos un vistazo. Probablemente te estés preguntando,
¿qué rayos son las colecciones? El módulo proporciona acceso a
tipos de datos especializados en PySon Podrías ver las colecciones
como un módulo en particular, y eso te va a permitir
acceder a estos tipos de datos
especializados. Ahora, a diferencia de los tipos de datos integrados con los que
ya estamos familiarizados, como SDR para cadena, It bull list set
y dit, estos deben
importarse antes de su uso,
y van a, a su vez, ofrecer una
funcionalidad de mejora más allá nuestras estructuras de datos estándar Ahora, algunos de los tipos de datos
especializados clave incluyen contador llamado
Tuple order dit, default dit y DQ Entonces echemos un
vistazo a esto gráficamente para que tenga más sentido, básicamente. Entonces, ¿qué tipos de datos obtenemos? Ahora, obtenemos, como mencioné
antes, SDR para string, Tuple, int, set, float range, bull, dict y list Ahora, estos se conocen como los tipos de datos
incorporados
dentro de PySon Estos son los
tipos de datos comunes que usamos día a día
y todo el tiempo Luego obtenemos tupla de nombre de contador, dict de
orden, dict predeterminado y DQ, estos son vistos como nuestros
tipos de datos especializados que deben
importarse para que
puedan ser utilizados Estas son las
diferencias. visualizar la diferencia entre los dos y agruparlos juntos. Cuando estamos trabajando
con colecciones, vamos
a poder importar estos tipos de datos
especializados. Ahora, profundicemos en los tipos de datos que obtenemos. Contador. Ningún contador es esencialmente
una herramienta que va a contar la frecuencia con la que cada elemento
aparece en una lista determinada. Entonces hemos nombrado tupla. Ahora bien, este es un
tipo especial de tupla donde los elementos tendrán
nombres para facilitar el acceso Entonces hemos ordenado dict. Ahora, el dict ordenado es esencialmente un
diccionario que va
a mantener el orden en el
que se agregaron los artículos. Entonces tenemos un dit predeterminado. Ahora, dict predeterminado es esencialmente un diccionario que va a proporcionar un valor predeterminado para cualquier clave faltante
que esté ahí fuera. Y por último, tenemos a DQ. Entonces esto es algo como una lista como
estructura, se podría decir, eso va a permitir adiciones y
eliminaciones
rápidas de ambos extremos, derecho Así que solo un
poco de conocimiento de
los conceptos teóricos de
los siguientes tipos de datos
especializados.
72. Explora el módulo de colecciones - [Lab]: Hola a todos. Y bienvenidos al siguiente ejercicio práctico de
laboratorio, que se
centrará en utilizar los
tipos de datos especializados que
provienen del módulo de la colección. Todo bien. Ahora, también
quiero mencionar de antemano aquí que estos tipos de datos
especializados se utilizan típicamente en forma
de una clase
o una función. Entonces eso es
algo que quería
mencionar para que estés
consciente antes de que empecemos. Bien. Ahora, vamos
a primero que nada, utilizar la clase de contador. En este ejemplo en particular, voy a mostrar cómo
puedes usar la
clase de contador, por ejemplo,
para contar cuántas veces aparece cada
ítem en una lista. Tenemos que decir desde el módulo de
colecciones, quiero importar
la clase de contador. Quiero definir una
lista y voy
a definir una lista de
frutas por ejemplo. Diré que las frutas son iguales. En una lista aquí, voy
a agregar algunos elementos. Voy a tomar Apple voy a tomar pera. Y también voy a agregar en lo
mismo debería decir artículos? Voy a añadir en dos manzanas o dos peras o dos
naranjas, etcétera. Voy a repetir algunas
cosas para que podamos contar el número de ocurrencias
con todos los ítems aquí. Entonces voy a agregar también otra
manzana, naranja, y par. Ahí vamos. Entonces eso
es bueno por ahora. Lo siguiente que quiero
hacer es crear un objeto contador para contar las
ocurrencias de cada fruto. Así que sólo voy a
definir una variable que diga fruta subrayado
cuenta, es igual, y voy a utilizar
una clase de contador, y esta será anexada
a la lista de frutas Ahora lo que voy a hacer es
imprimir el diccionario de contador, que va a mostrar
el conteo de cada fruta. Entonces, si tuviera que decir print, frutal subrayado cuenta
y ejecute el código, vayamos un poco más bajo Vamos a ver aquí
dice contador manzana dos, par dos, naranja uno. Se puede ver que cuenta
las ocurrencias. Puedo ver tener dos manzanas, una, dos pares, y una naranja, y eso fue contado para mí en la salida como pueden
ver aquí. Podemos ver que es salida como un diccionario de contador como
podemos ver aquí mismo. Ahora, digamos, por ejemplo, quiero acceder a recuentos
individuales, ¿verdad? Y para hacerlo, lo que puedo hacer
es seguir adelante y decir print,
y podemos decir que el
subrayado de frutas cuenta Y luego aquí, sólo podemos añadir los corchetes y
referirnos al ítem específico. Entonces aquí quiero decir Apple. Entonces ahora si ejecutamos esto
puedes ver aquí obtenemos
el resultado anterior, y luego podemos ver a Apple aquí. Bien, podemos ver que
la salida aquí es dos porque Apple
apareció dos veces. Bien, así es como puedes
obtener el valor directo de
cuántas repeticiones
estuvieron ahí o
cuántas veces se
llamó en la lista Entonces para par, claro, son
dos también, pero naranja, sólo
hay una
ocurrencia, así que veamos si va a ser uno,
cual debería ser. Y podemos ver que es uno.
Perfecto. Todo bien. Ahí vamos. Entonces así es como puedes
utilizar la clase de contador. Ahora lo siguiente que
queremos hacer es que
queremos utilizar la tupla nombrada Ahora, la tupla nombrada es
esencialmente una función, y podemos usarla para crear una clase muy ligera
con atributos nombrados Entonces es por eso que ahora estamos
haciendo colecciones, así que ya te sientes
cómodo con las clases. Esto debería ayudarte a entenderlo
mejor. Bien, entonces nuevamente, desde
el módulo de colecciones, quiero importar la función tupla
nombrada Quiero crear una persona tupla
nombrada con campos o
atributos con nombre, se podría decir Voy a decir persona igual, llamada tupla pasará por
persona, en tu coma Entonces aquí vamos
a tener, por ejemplo, nombre, edad y ciudad. Ahora bien, esto es muy similar a
los atributos que se podría decir, pero
aquí nos referimos a ellos como campos, pero es muy similar a
los atributos que definimos en nuestra clase. Bien, ahí vamos. Ahora queremos crear
una instancia de persona. Entonces voy a decir persona
uno es igual a persona. Entonces podemos simplemente seguir adelante
y decir nombre es igual a Juan. La edad es igual a 24 y la ciudad es igual a
Ciudad del Cabo, así como así. Así es como entonces
asociarías los valores y crearías
esa instancia. Ahora, digamos que queremos acceder a los valores usando los nombres. Lo que podemos hacer es decir,
por ejemplo, imprimir, y voy a
decir persona, punto, nombre, y también voy a decir imprimir persona un punto ciudad. Yo sólo voy a mover eso hacia arriba entonces. Sigamos adelante y
veamos la salida. Entonces tenemos a John y Cape abajo. Entonces eso se refiere al
valor asociado para el nombre y al valor asociado para la
ciudad. Todo bien. Entonces puedes ver, es
muy, como mencioné, una manera muy fácil de crear
una clase liviana, se podría decir con atributos
nombrados. Bien. Perfecto. Derecha.
Ahora, lo que también puedes hacer es ir a un seto y
salir de una manera diferente Entonces las tuplas de nombre también se comportan
como una tupla normal, también. Entonces puedo cambiar esto y
decir persona impresa uno. Y dentro de las huellas, puedo poner
en cero y luego a la persona uno, y puedo poner en una. Y si ejecuto eso,
va a decir John y 24. Entonces va a
actuar muy similar en cierto sentido al comportamiento
de un tupur o una lista, podría decir, imprimiendo el primer valor de como
podemos ver la instancia Entonces tenemos a John aquí, y luego tenemos 24. Si quiero obtener el último valor aquí que está cubierto
en los parentinos, sólo
puedo cambiarlo a dos Y luego sale
capa hacia abajo para mí. Chicos. Así es como se puede
utilizar una tupla con nombre Genial. Ya tenemos esa configuración. Lo siguiente que
vamos a querer seguir adelante y hacer es que vamos a querer seguir adelante
y utilizar dict ordenado. Ahora podemos simplemente quitar
esto y podemos simplemente decir importación o podemos decir, creo que es EnCapsiao Ahí vamos. Entonces
queremos crear un dict ordenado, sigamos
adelante y hagamos eso. Quiero decir
datos unsca ordenados, solo una variable. Vamos a
asignarlo a la clase aquí de dicto ordenado. Entonces lo que voy a
hacer es que voy a establecer los valores asociados aquí y este
diccionario ordenado, se podría decir. Ordenó los datos nscoed, y diremos que A
será igual a uno, y podemos simplemente brújula
eso y simplemente configurarlo
para B es igual a Y ver es. Ahora queremos imprimir la orden dict las claves van a estar
en el orden de inserción. Primero, A era uno, B es dos y C es tres. No va a imprimirse
en un orden diferente. Entonces ahora puedo decir imprimir. Datos de subrayado ordenados. Entonces ahora si ejecuto esto, va a decir
orden dict A uno, B dos, C, y tres. Bien. Entonces así es como puedes seguir adelante y utilizar la clase dict
ordenada. Ahora, digamos, por ejemplo, quieres agregar una nueva clave, aquí
tenemos las tres claves, pero quieres
agregar una nueva, entonces quieres decir D es igual a cuatro. Lo que puedes hacer, es bastante sencillo es que puedes simplemente seguir adelante y decir, o subrayar los datos G equivale a cuatro, y
vamos a decir que la impresión ordenó los datos de la
escuela. Bien. Quiero también para mejores propósitos de
aprendizaje, también
voy a dejar esto. Vamos a establecer eso como. Ahí vamos. Bien, entonces ahora verás
la diferencia ahora. Bien, así que podemos ver aquí
antes teníamos A uno, b2c3, y luego agregamos en consecuencia,
agregamos una nueva clave
que D es igual a cuatro, y se puede ver ahora
que se anexa D D es equivalente a Bien. Entonces así es como podemos seguir
adelante y utilizar
un dict ordenado. Entonces esta sería
una clase específica. Derecha. Lo siguiente que queremos hacer es que
queremos echar un
vistazo al dict predeterminado. Ahora, esto proporciona un
valor predeterminado para las claves faltantes y por defecto automáticamente
proporcionará un valor predeterminado para cualquier clave faltante en lugar
de generar un error, que pueda ver dónde estaría
el uso. Desde el módulo de colecciones, quiero importar dict predeterminado. Simplemente se definió así. Todo bien. Y entonces
lo que podemos hacer es crear un dict por defecto donde los valores
faltantes serán enteros, y por supuesto, el valor predeterminado
va a ser cero Entonces podemos decir fruit, underscore counter
equals, default dict, y solo podemos decir int ahora Entonces queremos agregar algunas frutas. Entonces voy a decir contador de
subrayado de frutas, y eso va a ser manzana Y podemos decir más es igual a uno. Entonces podemos decir contador de
subrayado de frutas, y luego vamos a
decir par más es igual a uno Ahora queremos imprimir
nuestras claves existentes, por lo que debería ir en un seto y sacar una y
una para los dos. Entonces si digo print, fruit
underscore counter, y yo tuviera que referirme a
Apple podemos ejecutar esto, y podemos ver que da salida a uno,
y lo mismo debería
ocurrir si sigo
adelante y digo par.
Lo mismo debería pasar. Guarda el código, corre, obtenemos uno. Pero sigamos adelante
y diferenciémoslo. S tres y dos, y vamos a
mantenerlo a la par. Obtenemos dos por par, y con
appn deberíamos conseguir tres. Obtenemos tres, tal
como debería ser. Perfecto. Ahora, digamos,
esta es la parte importante. Digamos, por ejemplo,
quiero acceder a una clave que falta, y quiero acceder a naranja, por ejemplo, que puedes
ver aquí no existe. Si yo fuera a decir print,
fruta underscore counter, y digo naranja, pueden
ver,
solo va a tener el default aquí de cero Si falta algún
entero y lo metemos en tier para asegurarnos de que estamos, por
supuesto, vamos
a estar trabajando con nuestros enteros y
podemos ver que tiene cero No va a generar
un error, así que puedes ver lo útil que puede ser la excavación
predeterminada. Si estás trabajando con un
programa y no necesariamente tienes un
manejo de errores implementado y solo
quieres una solución más corta
o más simple, puedes utilizar
dickie predeterminado como puedes ver para permitirte proporcionar un valor predeterminado en caso de que te
falte una clave Como puede ver, antes
había asignación, pero el naranja no existe
en absoluto para una clave. Derecha. Genial. Ahora, la clase
final que quiero
mostrarles va a ser DQ Diríamos Import D
Q, sobre así. Bien. Esencialmente, esto nos
va a permitir agregar y eliminar rápidamente
de ambos extremos de una Q,
DQ es la abreviatura de Q de doble terminación, nos
va a permitir
agregar y eliminar rápidamente tanto de
la izquierda como de la derecha
de nuestra Q. Muy bien Así que vamos a crear un DQ
con algunos números. Voy a decir que D es igual a DQ, y entre paréntesis
vamos a agregar en un lister, así que voy a tener uno,
dos Entonces quiero
anexar a la derecha, lo
mismo que lista
anexar, se podría decir Quiero decir D
append add en eso, y digamos que pongo en cuatro, y digamos que imprimo D. Sigamos adelante
y veamos la salida Va a tener uno,
dos, tres y cuatro. Entonces podemos ver que esto
un método de pluma agregará el número a la lista que aquí
hemos designado, digamos que también queremos anexar
a la izquierda Bien. Ahora, esencialmente,
DQ aquí, como podemos ver, es que hemos asignado una forma especial de tratar las
listas como podemos ver aquí Ahora bien, lo que no es
posible con las listas, claro, por su cuenta, es que no se puede añadir a la izquierda Entonces déjenme demostrarlo. Si yo
fuera a decir Dt, apéntate a la izquierda ,
y digo cero, y digo print D, solo
puedes ver
que ahora tenemos cero, uno, dos, tres, y cuatro Bien. Y eso es muy útil para seguir adelante y
ajustar en consecuencia. Digamos que ahora queremos
eliminar de la derecha. ¿Bien? Entonces hagámoslo.
Entonces puedo decir Dt Pop, Ar y luego podemos decir print G. Así que
veamos dónde estamos. Entonces ahora tenemos cero, uno, dos y tres de ese último pop, para que eliminemos
del lado derecho. Ahora, digamos que
queremos quitar de la izquierda simplemente puedo
decir D no pop a la izquierda, y luego imprimir D.
Bien, ahí vamos. Ya podemos ver que ya no
tenemos cero. Tenemos uno, dos y tres. Bien, entonces ahí lo tenemos. Así es como también puedes
utilizar DQ. Bien, chicos, eso
es todo en términos de utilizar estos tipos de datos especializados
del módulo de colecciones. Entonces, como puedes ver,
son muy útiles y son muy útiles. Pero sí, chicos, eso es todo por este ejercicio práctico de laboratorio.
73. Itertools: Hola a todos. Bienvenido
a la siguiente lección, que va a estar
enfocada en las herramientas de IR. Entonces echemos un vistazo.
Entonces, ¿qué son las herramientas IR? Ahora, el modelo Iter tools ofrece funciones para
trabajar con iteradores Ahora, puedo poner esto de una
manera sencilla, y es que los iteradores son tipos de datos que se pueden usar en un seguimiento siendo
la lista el ejemplo más común Ahora, estas son algunas de las funciones
clave que
puedes importar desde el
módulo de herramientas IR e incluyen. Permutaciones de productos,
combinaciones, acumulan,
agrupan e infinitos iteradores Ahora, vamos a profundizar en
estas funciones clave. Derecha. Así que tenemos producto. Ahora, producto calcula el producto cartesiano de iterables
de entrada,
generando todas las
combinaciones posibles, permutaciones generando todas las
combinaciones posibles Esto crea todos los ordenamientos
posibles de elementos en un iterable Entonces tenemos combinaciones. Esto genera
conjuntos únicos de elementos a partir de un iterable sin
ninguna repetición Entonces hemos acumulado, y esto calcula sumas
acumuladas o aplica otras
funciones binarias a un iterable Entonces tenemos el grupo i, y este agrupa elementos
consecutivos en un iterable basado en
una función clave Derecha. Entonces eso es todo para
la visión teórica. Profundizemos en el ejercicio
práctico de laboratorio.
74. Trabajar con itertools - [Laboratorio]: Uno, y bienvenidos al siguiente ejercicio
práctico de laboratorio, que va a estar
enfocado en trabajar con herramientas de
IR y las funciones
asociadas que se pueden utilizar a partir de él. Derecha. Ahora, lo primero
que queremos hacer es que queremos seguir adelante y utilizar la
función de producto de Iter tools. Entonces solo podemos decir
desde iter tools, podemos decir importar
producto, así como así. Sólo para elaborar un poco
más que yo herramientas es esencialmente un módulo con herramientas para trabajar
con iteradores Y vamos a hacer uso específicamente ahora de
la función del producto. Ahora, en nuestro caso, lo que queremos hacer es que queremos
generar todos los
pares posibles de elementos a partir de dos listas en este
caso de uso para la función del producto. Entonces voy a definir
dos pequeñas listas. Voy a decir A
es igual a uno y dos, B es igual a tres y cuatro. Ahora mismo, en nuestro caso aquí, lo que vamos a hacer es definir una variable y llamar a
esta prod igual. Entonces vamos a decir lista porque queremos sacar una lista
al final y
podemos envolverlo alrededor
de la función product,
que va a
tomar en A y B.
Ahora, product A y B
generarán un iterador que cree todas las combinaciones de
pares y lo estamos envolviendo alrededor de
una lista que la va a convertir en una lista para que podamos ver todos los valores a la vez Ahora bien, si tuviera que decir
print prod, y ejecute esto. Ahora puedo ver que tengo
lo que pretendía, uno, tres, uno, cuatro,
dos, tres, dos, cuatro. Echa un vistazo aquí, uno a tres, uno a cuatro, dos a
tres, dos a cuatro. Así es como podemos utilizar
la función del producto. Derecha. Ahora, todavía queremos asegurarnos de que estamos
utilizando herramientas iter, pero esta vez lo que
queremos hacer es que
queremos utilizar la permutación Queremos crear todos los
ordenamientos posibles de elementos. Voy a decir permutaciones de
importación. Bien. Y definamos una lista. Diré nums es igual, y voy a tener de uno a tres, por ejemplo. Todo bien. Ahora voy a definir una variable. Yo
sólo voy a llamar a esto permanente Nuevamente, quiero
tener lista y poner en permutaciones y aplicar
esto a mi lista llamada nums Nuevamente, nums de permutación. Vamos a agregar en la
lista aquí y vamos a generar un iterador
que producirá todos los
pedidos posibles de nuestros artículos Como puedes ver, nuevamente, lo estamos envolviendo en una lista, y eso va a convertir,
por supuesto , la salida en una lista. Así que vamos a seguir adelante
y la salida permanente. Y ahora podemos ver toda una
lista de permutaciones. Podemos ver uno, dos, tres,
uno, tres, dos, dos, uno, tres, dos, tres, uno, tres, uno, dos,
tres, dos, uno. Podemos ver que aquí tenemos
todas las variaciones. Ahora bien, esto está, supongo, un poco fuera de alcance, pero es útil, especialmente en áreas de estadística o si estás
trabajando con muchos
datos y necesitas
trabajar con la
función de datos y necesitas
trabajar permutaciones, y tal Derecha. Lo siguiente que
quiero mostrar es cómo se puede hacer uso del módulo de
combinaciones, la
función de combinaciones, disculpe. Esto se utiliza para seleccionar grupos únicos
de elementos o artículos, debería decir, y el orden no importa en
que haga esto. Sólo podemos decir combinaciones. Desde el modelo itertools, queremos importar el módulo de
combinaciones Nuevamente, quiero definir una lista
y pondré esto como uno, dos y tres, por ejemplo. Nuevamente, voy a definir una variable. Diré C y queremos
convertir la salida en una lista. Vamos a envolverlo con
la función de combinaciones, y vamos a
enyesar en nums y dos Combinación nums y dos. Esto nos permitirá generar un iterador y este iterador
va a recoger todas las
dos combinaciones numéricas Podemos volver a ver que está
envuelto en nuestra lista, así que podemos obtener esa
salida de lista como lo hicimos antes. Podemos decir imprimir C.
Vamos a ejecutar el código. Y aquí podemos ver que obtenemos las combinaciones designadas
que hemos establecido. Entonces tenemos dos aquí en cada set. Si tuviéramos que hacer
uno, solo
obtendríamos uno en sets separados. Y si dijéramos tres, vamos a poner
todo el set en uno. Derecha. Entonces así es como podemos
utilizar combinaciones aquí. Bien. Ahora bien, si
tuviéramos que ejecutar esto, podemos ver que obtuvimos
los mismos resultados, así que estamos generando correctamente. Genial. Todo bien. Ahora lo siguiente que vamos
a ver es acumular. Ahora bien, esta es una interesante. Podemos, por ejemplo, realizar una suma
acumulativa. Esto es algo
que hemos visto en algún momento antes
del curso, pero déjame
mostrarte cómo puedes
hacerlo con la función de acumular. Esta es una muy útil
, por lo que puedes importar la función de acumular. Entonces lo que quieres hacer es
definir una lista de números. Diré uno, dos,
tres y cuatro. Entonces lo que quieres hacer es,
nuevamente, solo definir una variable, agregar tu lista para que
puedas convertirla y puedes convertir
la salida de
la
función de acumular y yeso en nums aquí para tu función de
acumular, y la salida estará en
una lista asociada a AC Entonces voy a decir
imprime A y vete. Ahora podemos ver que
tenemos uno, tres, seis y diez. Ahora
lo que se acumulan. Te explicaré lo que
pasa. Comenzamos con el primer ítem o
elemento de nuestra lista, luego decimos uno más
dos es igual a tres. Esa es la siguiente parte
de esta lista dada. Entonces tenemos tres más
tres, eso nos da seis. Entonces tenemos seis más
cuatro, eso nos da diez. Este es el proceso
de acumulación, cómo podemos acumular en
consecuencia. Si tuviera que cambiar
esto ahora a dos, tres, cuatro, 25, cuatro, ocho, por ejemplo, código,
vamos a obtener lo siguiente. Entonces comienzas a las dos. Dos
más tres te da cinco. Cinco más cinco te da diez, diez más ocho te da 18. Bien, así sucesivamente y
así sucesivamente y así sucesivamente. Se puede ver que es una función
muy útil. A mí me gusta esta de la mayoría de las herramientas Iter porque es extremadamente simple
y muy útil. Derecha. Ahora, lo que
vamos a hacer ahora es enfocarnos en el
grupo por función. Entonces voy a mover lo
siguiente y podemos comenzar con el Grupo B. Bien. Ahora con el grupo
B, esencialmente, lo que vamos a
hacer de nuevo es de nuevo, crear un iterador, y
va a generar
grupos uno por uno Bien, así que sigamos adelante y
comencemos con el proceso. Derecha. Y otra cosa que
también quiero mencionar es mediante la utilización de la función
group B, vamos a agrupar esencialmente
elementos basados en una clave. Pero esto se va a ordenar antes de que
realmente hagamos eso. En primer lugar, necesitamos establecer una lista de tuplas
con categorías, agrupando la clave y
los valores asociados Podemos decir datos, y
vamos a poner esto en una lista. Voy a tener, por ejemplo, A será uno. Entonces el siguiente,
podemos tener A, y eso serán dos. Entonces podemos tener
otro que sea B, y tres. Entonces podemos tener, por
ejemplo, B y cuatro, y luego podemos tener a y seis. Ahí vamos. Perfecto. Así que ahora tenemos esa configuración. Ahora queremos ordenar
por el primer valor, esto va a
asegurar que el grupo por función funcione correctamente. Entonces voy a
decir dato punto SOT, con este método dentro de él, voy a decir K, va a ser igual a Lambda. Vamos a usar Lambda aquí
con un parámetro de X, y luego va a
tener X y cero aquí. Bien. Bien, entonces ahí lo tenemos. Ahora lo siguiente
que queremos hacer
es que vamos a definir una variable y podemos llamar a este grupo
y establecerlo en el grupo B. Esa es la función del grupo B. Aquí vamos a pasar por esos datos
que han sido ordenados, y vamos a
decir que K es igual a Lambda. X, X y cero. Entonces, lo que estamos haciendo ahora es esencialmente dentro de
lo que estamos haciendo es que vamos a
asegurarnos de poder agrupar nuestros elementos en
consecuencia. De acuerdo con la función Lambda que hemos estipulado de
acuerdo a la clave. Ahora podemos ir en una cabeza
y poner un bucle. Entonces vamos a ver cuatro grupos
clave agrupados Bien. Y luego podemos decir print, key, y después queremos
convertir la lista a grupo. Bien. Derecha. Así que dentro de
este bucle, esencialmente, vamos a convertir
dentro del bucle, vamos a convertir
cada grupo en una lista para
ver todos los elementos a la vez. Entonces, sigamos adelante
y ejecutemos este código. Y aquí podemos ver
por las categorías. Podemos ver para A,
tenemos A uno, A dos, A seis, para B, tenemos B tres y B cuatro. Bien, así es
como podemos seguir adelante y agrupar nuestras categorías,
como pueden ver. Bien. Entonces ahí
lo tenemos esencialmente en su lugar. Ahora, también quiero
mencionar aquí con nosotros definiendo y clasificando de
acuerdo con Lambda aquí. Básicamente
vamos a agregar
los valores en consecuencia a través nuestra función
Lambda para ordenarla, y luego vamos a
agruparla, y luego luego, vamos a imprimir
cada iteración, y va a aparecer de la
siguiente manera en el grupo por Bien. Entonces ese es el grupo por función que
hemos utilizado. ¿Bien? Ahora, sí quiero mencionar un poco más
y más detalle, sobre todo con la función
Lambda. Así que vamos a hablar un
poco más sobre eso y luego vamos a ver el conjunto final de iteradores en términos
de las funciones de conteo, ciclo y repetición Entonces llegaremos a eso pronto, pero
acabemos con el grupo B. Bien, así que vamos a seguir adelante y
entrar en más detalles aquí. W ordenación de datos. Ahora ya sabemos que
los datos son una lista de tuplas, y por supuesto lo
rodeaste dentro de un formato de lista Entonces queremos ordenar
los datos aquí esencialmente
que hemos establecido,
esencialmente, el
método de clasificación de puntos va a ordenar la lista en su lugar en función
de nuestra función clave. Bien. Tenemos K es igual a Lambda X, colon y luego X y cero aquí. Lo que vamos a hacer
es que vamos a tomar cada tupla y claro, eso va a ser sustituido,
como puedes ver por X. Cada tupla,
claro, por ejemplo,
puede ser A uno, A dos, P tres Vamos a seguir adelante
y sustituirlo. Entonces vamos a extraer
el primer elemento aquí mismo, que va a ser
una A o una B y luego vamos a ordenar la lista en función
del primer elemento. Bien. Luego a continuación, lo que
vamos a hacer, como puedes ver aquí que
tenemos agrupados iguales al grupo B. Sólo
estamos definiendo
una variable para asignar aquí
el resultado de la función del
grupo B, y group es
esencialmente va a agrupar los números consecutivos
que tienen la misma clave. ¿Bien? Entonces tenemos, por supuesto, la función clave aquí mismo, que va a extraer
el primer elemento. Entonces A o B. No va a ordenar los
datos en este caso aquí, ¿de acuerdo? Sólo va a asumir
se podría decir que los elementos o elementos similares
están uno al lado del otro, razón por la
cual lo ordenamos primero. A continuación, tenemos
aquí los cuatro bucles con los que estamos trabajando, y como sabemos que el grupo por función que
tenemos aquí va a devolver pares de clave y grupo donde la clave
es la clave del grupo. A o B en este caso, tenemos grupo, ¿verdad? Y ese es un iterador de los ítems que
pertenecen al grupo Bien. Todo bien. Entonces lo que vamos a hacer
esencialmente es seguir adelante y asegurarnos de que convertimos
grupo a nuestra lista. Así podemos imprimir todos los artículos a
la vez, bien. Así que esa fue la exposición más profunda de cómo podemos utilizar
este grupo por función. Ahora bien, este es un poco complicado, así que en realidad no te preocupes
demasiado por esto. Es un poco descabellado, pero es bueno al menos tener contexto en lo que estás
haciendo y con lo que trabajas Todo bien. Ese es el grupo B. Bien, así que sigamos adelante y continuemos con el resto de funciones con las que
hemos estado trabajando. Entonces ahora lo que podemos hacer
es seguir adelante y trabajar con los iteradores
infinitos Entonces estos iteradores siguen
generando valores para siempre, y necesitan ser,
por supuesto, detenidos manualmente Bien. Entonces tenemos
ciclo de conteo, y repetimos. Entonces vamos a seguir adelante
e importar los moles,
contar, ciclo y repetir Cuenta va a seguir contando para siempre como un bucle de
cuatro que nunca termina. Por ejemplo, podemos
decir cuatro yo en recuento, y aquí podemos decir cinco. Ahora, lo que te recomiendo que hagas
es que me veas hacer esto. No quiero que estés en
una situación en la que
vayas a tener un programa que siga en bucle y nunca termine
y si te metes
en ese problema,
así que por favor te aconsejo solo mires lo que estoy
haciendo por esta parte Vamos a empezar a
contar desde cinco. Entonces podemos decir imprimir I. Entonces lo que queremos
hacer es que queremos decir I I es igual a diez, entonces quiero
detener manualmente el bucle. Voy a decir
break. Vamos a ejecutar esto. Entonces podemos ver aquí
vamos todo el camino 5-10, y luego dijimos break, y eso detiene el
loop de correr. Si no sigo adelante
y tengo irrumpir, o, lo que puede pasar es que podemos tener una situación interesante con el bucle pasando
por siempre y para siempre. Entonces así es como puedes
usar la función count. Bien, así que sigue
contando para siempre y
sigue adelante y no
va a
parar a menos que tengamos
un rastrillo en su lugar También tenemos la función ciclo, así que eso es repetir una lista
infinitamente como se podría decir adelante y
pongamos el conteo a cero, y podemos decir cuatro
ítem en ciclo, y vamos a pasar en una lista de ítems o
elementos, se podría decir. Y queremos sumar en el colon. Entonces queremos imprimir cada artículo. Entonces vamos a decir
más es igual a uno, y va a seguir dando
vueltas y dando vueltas Y si llegamos a
la cuenta de seis, se va a romper. Adelante y ejecuta el ciclo. Aquí tenemos A, B, C, A, B, C. Así es como podemos seguir adelante y utilizar la función de ciclo. Bien. El último por el que
vamos a pasar va a ser repetido. ¿Bien? Entonces queremos
repetir un valor, un número específico de veces. Bien, entonces podemos decir REP,
por ejemplo, como variable. Queremos decir list porque queremos convertir
la salida en una lista. Queremos envolver dentro de
la función repeat. Y aquí quiero
saludar, y tres. Entonces quiero decir print, ap. Bien. Entonces si tuviera que ejecutar esto, dice hola, hola, hola. Estamos optando por repetir el primer valor que ponemos
aquí en los análisis sintácticos y la derecha es donde definimos
cuántas veces queremos repetir lo que aquí hemos definido
en el lado izquierdo El primer parámetro
que podrías decir es, por
supuesto, lo que
quieres repetir. El segundo parámetro
que técnicamente podrías decir es cuántas veces
quieres que se repita. Si fuera a decir, me gusta la misa, y quiero
repetirlo cinco veces. Se va a repetir me
gusta la misa cinco veces. Y como
lo convertimos en una lista esa salida que
obtenemos aquí de esta función de repetición aquí, la
va a poner
en una lista y los datos dentro la lista y
acabamos de imprimirla. Entonces así es como podemos
usar una función de repetición. Ahora obviamente, yo diría que
contar y ciclo están bien, pero yo diría que repetir es más útil como una de las herramientas iter. Muy bien chicos. Eso es. Entramos en detalle de las funciones que puede
utilizar con las herramientas de Iter.
75. Administradores de contexto: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada a los gestores de contexto. Entonces echemos un vistazo. Entonces probablemente te estés preguntando qué rayos de la
Tierra es un gestor de contexto. Entonces, un administrador de contexto en Python
maneja la configuración y
limpieza de recursos automáticamente, como abrir y cerrar archivos
usando la instrucción WI Ahora, la declaración WI
simplifica la gestión de recursos, haciendo que nuestro código sea más seguro
y más legible Entonces déjame mostrarte una
diferencia aquí en cuanto a administrar
archivos manualmente, como hemos aprendido anteriormente en el curso y cómo puedes
hacerlo más cómo puedo decir de manera más
simple, más eficiente, debería
más bien decir que era un gestor de
contexto. Aquí está el archivo básico
IO que se está realizando. Estamos abriendo un archivo conocido como car dot TXT y
queremos escribirle. De ahí que el modo W esté en su lugar. Entonces nos referiremos a ese objeto de archivo en
particular, y vamos a decir car
file dot right y luego diremos que mis tarjetas favoritas
son Forward y un Tesla, y luego tenemos
que cerrar nuestro archivo. Sin embargo, podemos simplificar
esto un Gestor de Contexto, que va a abrir
y escribir en nuestro archivo. Como puedes ver, es mucho
más simple, menos líneas de código. Así que tenemos WIS
Open, car dot txt, el mismo modo, y
vamos a configurarlo como archivo car. Eso sería lo que lo
pondríamos como en términos de
configurar la variable. Y luego diremos archivo de auto,
correcto, y escribiremos como de normal. Ahora bien, una buena cosa que
puedes ver aquí es que
no necesitas cerrar tu
archivo después de escribir, y esto puede resolver
un gran punto de dolor. También un poco más suave en cuanto a cómo se escribe. No tienes que ser tan
simplificado y definir una variable y decir
punto escribir punto cerrar. Es un poco más limpio
y más eficiente. Además, lo que puedes hacer es seguir adelante
y aplicar esto en este siguiente ejemplo
donde estamos abriendo nuevo
un archivo para anexarlo Entonces aquí tenemos archivo car
es igual a abrir CartXT luego A, y podemos ver que estamos escribiendo
y cerrando el archivo, podemos seguir adelante y
con nuestro Gestor de Contexto, solo
podemos simplificar esto
para reemplazarlo con W abierto y luego decir como archivo car,
sería la definición Muy bien, chicos. Entonces esto es solo un poco de
conocimiento para usted, que pueda ver cómo los administradores de
contexto nos
ahorrarían
al menos la molestia de tener que cerrar el archivo, y es mucho más suave y limpio utilizar administradores de
contexto, especialmente
cuando está realizando ILO de
archivos con
entrada y salida de archivos.
76. Trabajar con administradores de contexto: [Laboratorio]: Hola a todos, y bienvenidos
al próximo ejercicio práctico de laboratorio, que se centrará en
utilizar el administrador de contexto.
Empecemos. Ahora bien, lo primero
que quiero hacer es que solo quiero hacer alguna revisión con
todos ustedes y simplemente pasar por archivo
básico IO nuevamente, peso
manual sin
usar un gestor de contexto. Correcto, al seguirlo de esta manera, aprenderás a ver
las diferencias y aprenderás a
aplicar ambos casos. Queremos definir una variable
y puedo llamar a este archivo car, y vamos a asignarlo
a nuestro objeto file, esencialmente, que se crea
utilizando nuestra función open y pasaremos en carritos el archivo que queremos abrir o crear si no existe, y queremos escribir
en ese archivo de ahí que el modo sea W. A continuación, queremos hacer referencia a llamado archivo y agregar
en el mensaje de escritura, queremos escribir en el archivo. Aquí quiero decir que
me gustan las tarjetas rojas. Entonces queremos cerrar el
archivo y decir carflet close. Vamos a ejecutar el código. Vamos a nuestro directorio. Y aquí puedes ver
que el punto TxDFLE ha sido creado en el directorio de nuestro
proyecto. Si puedo dar click en eso,
puedo ver que da salida a mí me gustan
los autos rojos como debería. Muy bien, perfecto.
Ahora, lo que voy a hacer a continuación es que voy
a comentar este código, que puedan ver y
aprender las diferencias
entre el manejo regular de archivos y cómo hacerlo con
un gestor de contexto. Entonces voy a hacer click derecho
sobre car dot TXT y eliminarlo. Y muévelo a
la papelera de reciclaje. Genial. Así que ahora el gestor de
contexto, diríamos Wi open, y utilizamos la función open y queremos crear un archivo car dot txt con la intención de
escribir en el archivo, y este va a
ser almacenado como archivo car. Y esa es la variable a la que
asignamos este objeto archivo. Entonces podemos decir carfle
dot justo debajo de él, y ese va a ser exactamente el mismo mensaje que
usamos antes Y aquí quiero decir que me gustan los autos
azules y es
ejecutar este código. Vamos a nuestro directorio. Aquí podemos ver que tenemos Tarjeta en TXT que ahora dice,
me gustan los autos azules. Perfecto. Ojalá ahora se pueda ver la distinción
entre los dos. Ahora antes de seguir
adelante y
probar esto con el modo append, lo que quiero hacer es pasar por
otro ejemplo
contigo con la escritura de archivos que
puedas empezar a aprender la distinción
entre ambos métodos Podemos eliminar esto
sigamos adelante y hagamos el siguiente ejemplo y
luego anexemos. Todo bien. Ahora lo que voy a hacer
es basar esto en una persona. Diré archivo de persona
igual, y voy a decir abierto. Esto va a
crear un archivo llamado persona punto GXT y quiero
escribir en este archivo Ahora voy a decir
persona archivo punto R, y quiero escribir Hola. Yo soy Auto. Entonces necesito cerrar
el archivo diciendo persona archivo punto cerrar. Sigamos adelante y ejecutemos el
código. Ir al directorio. Y aquí podemos ver que
tenemos persona punto TXT. Si damos click en eso,
podemos ver, Hola, Amano. Genial. Así que ahora todavía puedo ver
que tenemos el carrito archivos TXT. Entonces lo que voy
a hacer es que voy
a seguir adelante y borrar
ambos archivos a partir de ahora. Entonces podemos comentar este
código por el momento. Y vamos a hacer
exactamente lo mismo para un archivo de persona. Entonces voy a usar el gestor de
contexto ahora
y voy a decir Wi voy a decir abierto. Y aquí, lo que voy a
hacer es crear un archivo
TXT punto persona con la
intención de
escribirle como archivo de persona. Voy a decir
persona archivo punto derecho, y voy a escribir Hola iMou Vamos a ejecutar código ahora. Se puede ver a una persona en archivos TXT creados que dice hola soy no. Sencillo. Ahí lo tenemos. Ahora tenemos esa
práctica fundamental en su lugar ahora. Ahora lo siguiente que
queremos hacer es
ahora que tenemos a esa
persona en el archivo TXT, realidad
sigamos adelante y lo
abramos y agregemos a ella
usando el archivo básico IO Sabemos que esto existe, así podemos seguir adelante y
eliminar todo. Guarde ese archivo.
Ahora vamos a abrirlo. A partir de este momento, solo dice, Hola soy Ro. Lo que podemos hacer es que podamos volver a
abrir ese archivo
y añadirlo. Yo lo llamaré archivo de persona. Ver abierto, y esto se llama person dot TxD y nuestra intención es
agregarle . Ese es el
modo que estableceremos. Entonces queremos seguir adelante y
decir persona archivo punto derecho, y quiero agregar un espacio y quiero decir
hola Ana fue lo que decía, y me gustan las películas. Muy sencillo. Y podemos
decir archivo persona punto cerrar. Sigamos adelante y
ejecutemos este código. Vamos al directorio,
prisión f Dice,
Hola, no soy, y me gustan las películas. Perfecto. Entonces podemos
ver así es como podemos utilizar un método pen
con archivo básico IO. Sigamos adelante y configuremos esto
con un Gestor de Contexto. Entonces dice, y me gustan las películas, sigamos adelante y ajustemos esto. Entonces voy a
comentar esto. Vamos a añadir de
nuevo a ese archivo. Queremos ver WIS abierto aquí dentro de Parenss me voy
a referir a ese archivo,
que se llama persona punto Mi intención es
anexar a ese expediente como
expediente personal. Entonces
podemos escribirle. Diré persona archivo punto, bien. Veamos qué
tenemos en este momento. Hola, soy y me gustan las películas. Entonces voy a decir
algo afuera que diga, soy de Sudáfrica. Eso debería anexar después, y quiero poner en un
espacio aquí. Ahí vamos. Entonces sigamos adelante y
veamos si se le agrega. Entonces si ejecuto el código, vaya a persona punto TXT,
y ahí vamos. Podemos ver Hola, soy
Ano y me gustan las películas. Soy de
Sudáfrica. Ahí vamos. Sencillo. Así es como podemos utilizar los gestores de contexto cuando estamos trabajando con nuestros archivos. Entonces puedes ver que es muy efectivo si queremos
simplificar y omitir cualquier miedo
a cerrar
nuestros archivos después de reescribirlos porque puede ser un poco tedioso y puedes olvidar
y puedes encontrarte Pero con los gestores de contexto, se encarga de todo
por ti. Muy bien chicos Entonces eso es todo en este ejercicio
práctico de laboratorio sobre gestores de contexto.
77. Gestores de contexto integrados vs. personalizados: Hola a todos, y bienvenidos
a la siguiente lección, que se centrará en
comparar el gestor de contexto integrado versus el
personalizado. Entonces echemos un vistazo. Todo bien. Ahora, con el gestor
de contexto incorporado, normalmente
usarías con open, y usaríamos
la instrucción Wi con la función open
para abrir un archivo. Bien. Ahora bien, este es un gestor de
contexto integrado que gestiona
automáticamente nuestros recursos como archivos para abrirlos
y cerrarlos, y esto es
con lo
que hemos estado trabajando como en la lección
anterior. También contamos con un gestor de
contexto personalizado. Un ejemplo de cómo se
utilizaría esto es que un
gestor de contexto personalizado es básicamente una clase que creas
que definirá métodos
enter y exit
dentro de la clase para ejecutar y
administrar recursos o acciones cuando entramos o salimos de
un determinado bloque de código. Ahora lo que vamos a
hacer es
seguir adelante y trabajar con un gestor de contexto
personalizado. Ya tenemos experiencia con un gestor de contexto incorporado, con el
que hemos estado trabajando en el anterior ejercicio
práctico de laboratorio, pero ahora vamos a crear nuestro propio gestor de contexto personalizado. Te voy a mostrar cómo
puedes gestionar todo
con tus archivos, por ejemplo, si vas
a trabajar con una clase determinada. Así que vayamos directo a ello.
78. Crea un gestor de contextos personalizado: [Lab]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que se
centrará en crear un gestor de contexto personalizado
para el manejo de archivos. Sigamos adelante y comencemos. Ahora, ya tenemos
experiencia con clases, así que vamos a
hacer uso de una clase. Lo primero que
queremos hacer es definir nuestros nombres de clase. Voy a decir clase y
lo llamaré administrador de archivos. Entonces necesito seguir adelante
y definir mi mensaje de inicio. Diré Derescore entonces tenemos que pasar por
nuestros parámetros, así que tendremos self, nombre de
archivo y Ahora queremos inicializar nuestra
clase de gestor de archivos y lo que
vamos a hacer es vamos
a especificar los atributos Vamos a decir que el nombre del archivo self
dot es igual, y ese va
a ser el nombre del archivo. Entonces vamos
a tener auto modo, y eso va a
ser igual al modo. Vamos a almacenar
el nombre del archivo aquí con nombre de archivo self dot
y también vamos a almacenar el modo como
modo y que puede ser R para lectura, puede
ser W para, por
supuesto, escritura y puede
ser A para append Bien. A continuación, lo que queremos hacer es
querer definir nuestros métodos. Recuerda con
los mensajes, necesitan estar en línea con
tu método de inicio Voy a primero que nada,
decir Defunderce entrar,
doble subrayado, y aquí
vamos Esencialmente, lo que queremos
hacer es que queremos ingresar
al contexto de tiempo de ejecución
relacionado con nuestro objeto, y este método va a
ser llamado cuando la ejecución ingrese al Wispblock que
definiremos más adelante, y abre el archivo y
devuelve el objeto file Bien. Entonces, lo
que queremos hacer es decir archivo de punto propio es igual a abierto. Vamos a decir nombre de
archivo self dot y modo self dot. Entonces queremos abrir el archivo
en el modo designado que se le da. Entonces queremos decir
return, self dot file. Bien. Ahora, el archivo self
aquí, por supuesto, va a ser nuestro objeto file, y ese será el archivo abierto que se puede usar
en el bloque WIS. Entonces eso es lo que
vamos a hacer aquí. Y como podemos ver, a
esto se
le asigna como variable en ingenio. ¿Bien? A continuación, lo que tenemos que hacer es seguir adelante y
especificar nuestro método de salida, y eso va a salir
del contexto de tiempo de ejecución y limpiar los recursos. Este método se llama cuando la ejecución sale
del bloque With. Sólo voy a decir Jeff, salida de
doble guión bajo, y doble subrayado Va a pasar por
bastantes parámetros. Primero, vamos a tener auto. Entonces vamos a tener el tipo de subrayado
EX. Ese es el tipo de excepción
si se produjo una excepción. De lo contrario, sólo
va a devolver ninguno. Entonces tenemos valor de
subrayado EXC. Esta es la instancia de excepción
si ocurrió un error, y por supuesto, si
no ocurre nada, simplemente va a ser ninguno. Entonces vamos a
tener rastro atrás. Ese es el objeto de rastreo
que contiene detalles de error. Podemos seguir adelante y
cerrar lo siguiente. este momento, lo que queremos hacer
es querer primero que nada, verificar si el archivo está abierto. Diré que yo mismo punto archivo. Entonces, si se abre ese archivo, y en ese caso, si lo ha sido, entonces
lo que quiero hacer es cerrar el archivo para
liberar recursos. Entonces esto está al salir. Así que vamos a verificar si
el archivo está abierto inicialmente, y cuando esta salida si se ejecuta
este método de salida, entonces podemos cerrar
ese archivo en particular. ¿Bien? Porque no se puede cerrar algo que
no está ya abierto. Bien. Entonces se va a
llamar al método exit cuando
queramos seguir adelante y salir de
nuestro archivo y cerrarlo. Entonces el método va a verificar si ese archivo está
realmente abierto en este momento, si hay algo demasiado cerca, y luego lo va a cerrar. Entonces diríamos archivo self
dot, dot close. Entonces vamos a
cerrar el archivo, y eso va a ayudar
a liberar recursos. Bien. Perfecto. Ahora lo que
queremos hacer es que queremos seguir adelante y justo aquí fuera
de nuestro administrador de archivos de clase, lo que queremos hacer es
querer usar nuestro gestor de
contexto personalizado. Eso va a ser
lo que hemos usado antes con la lógica que hemos estado
utilizando antes. Vamos a
seguir adelante y decir, Whiz, vamos a llamar a
nuestra clase aquí, que es el encargado de archivos Y entonces nos va
a gustar antes, definir lo que queremos
abrir o crear. Entonces aquí, voy
a decir coche punto TXT, y luego quiero escribirle,
así voy a poner en el modo W, y voy a decir como
CarFle. Vamos. Bien. Entonces como podemos ver aquí, tenemos esta es declaración aquí, y eso va a
ir una bruja y llamar a nuestro método de administrador de archivos, que es Enter, que va a abrir el
archivo y devolverlo,
y se le asignará el
objeto de archivo de retorno Para archivo de auto y se
usa dentro de la cuadra. Entonces lo que queremos
seguir adelante y hacer es asegurarnos de que estamos
escribiendo a nuestro expediente. Hasta aquí, voy
a decir carfle dot. Aquí voy a
decir, me gusta Honda. Bien, así que escribimos
en el expediente. Entonces el archivo ahora que está abierto, también
va a
escribir en el archivo. Y automáticamente cuando
hayamos realizado la acción
necesaria, cuando termine el bloque,
es decir, con la declaración WIS
que hemos configurado aquí, va a llamar al administrador de
archivos en términos de su método de salida que se designa aquí mismo
y va a llamarlo
automáticamente
para cerrar el archivo. Bien. Ese es el proceso aquí y la ejecución con lo
que estamos configurando aquí. Yo sólo voy a alejar
aquí. Para que veas, definimos nuestra clase, agregamos en los
parámetros y declaraciones necesarias. Y luego justo aquí
al final afuera, solo
estamos llamando a nuestra
clase y luego a ir a un seto y crear un archivo
y luego toparnos con él De hecho, podemos seguir adelante
y probar esto. Entonces lo que voy a hacer ahora
es que voy a probarlo. Entonces si ejecuto mi código, no va a
haber una salida, pero si voy aquí mismo, puedo ver que tengo
esta tarjeta punto archivo TXT que dice, me gusta Honda. Y se puede ver que todo se
gestionó automáticamente para nosotros y como debería
ser. Muy bien, bien. Así es como puede seguir
adelante y esencialmente crear un administrador de
contexto personalizado para el manejo de archivos, y lo más importante, lo
estamos usando a través de Visa a través de clase aquí, como puede ver,
llamado administrador de archivos. Bien, entonces todo el
proceso, como pueden ver, funciona muy similar a la forma habitual en la que
seguimos adelante y trabajamos
con nuestras clases. Bien. Eso es
para la parte principal. Lo que voy a hacer
ahora es simplemente seguir adelante y analizar más y
mostrarte qué más puedes hacer. Todo bien. Vamos a continuar. Ahora lo siguiente que
vamos a querer hacer es que vamos
a querer seguir adelante y personalizar más dentro de nuestros métodos enter
y except. Ahora antes de continuar, lo que quiero hacer es simplemente
hacer un poco de limpieza. Voy a ir a Explorer
y quiero eliminar estos archivos que tengo
excepto el archivo principal punto pi. La persona dotXT y el
auto dotXT. Ahí vamos. Solo asegúrate de no eliminar el archivo punto principal. Eso es con
lo que estamos trabajando. Lo que podemos hacer ahora es
que podemos seguir adelante y hacer un
poco de personalización dentro de nuestro método interino. Lo que quiero hacer es
una vez que se abra un archivo, quiero sacar algún texto para
decir el nombre del archivo que se abrió y también para seguir
adelante y sacar el
modo en que se abrió En este caso aquí,
quiero imprimir
que CDTxt fue abierto o creado y el
modo de escritura estaba habilitado para ello Así que aquí estaba en
mi Entrar mensaje. Vamos a mover eso ahí.
Puedo decir imprimir. Voy a usar cadenas S
para decir el archivo. Y aquí voy a poner en mi
orden de lugar en sí nombre de archivo. Entonces va a
llamar al nombre del archivo, que se llamará en
txt, y luego al modo, que será W. Quiero decir que
el nombre del archivo es el archivo, así y así está abierto,
y el modo es, y entonces puedo decir modo de
auto punto. Vamos. Ahora, digamos que quiero agregar en una declaración justo
antes de que se cierre el archivo, así puedo utilizar el método de
salida para eso y ajustarlo. Puedo decir imprimir. El expediente está a punto de
ser cerrado. Tenerlo. Ahora voy a recrear ese archivo TXT que tenía antes
y aparecerá aquí adelante y ejecutemos el código, pero ahora deberíamos ver salida en nuestra consola la
salida que se está mostrando. Sigamos adelante y guardemos
y ejecutemos este código. Ahí vamos. Como podemos
ver aquí, dice, la tarjeta de archivo TXT está a
punto de abrirse y el modo es W y el archivo
está a punto de cerrarse. Podemos ver nuestro método enter corrió e imprimió la
siguiente declaración, que fue la primera aquí, con nuestro método de salida
imprimió el archivo está a
punto cerrarse y siguiente como
podemos ver aquí mismo. Perfecto. Bien hecho. Así es como puedes
seguir adelante y agregar funcionalidad extra
a tus métodos. Derecha. Ahora, sigamos adelante
y realicemos el manejo de errores. Ahora, digamos que tenemos un
error al salir de nuestro archivo. Por ejemplo, aquí,
quiero seguir adelante y anular este archivo
que tenemos actualmente, y sólo voy a
cambiar algún texto para decir me gusta por ello como ejemplo. Entonces sólo voy a,
por ejemplo, llamar a Afle. Voy a decir aquí
carfle punto aleatorio. Bien, y eso va a ser un mensaje
aleatorio,
algo aleatorio aquí. Entonces digamos que queremos
llamar a un método aleatorio, algo que no existe, va a tener un error al cerrar el archivo
porque recuerden, cuando estemos abriendo
el archivo, bien, vamos a asegurarnos de que
seamos capaces de acceder a él, que podemos hacer, y
podemos escribirle, lo que podemos hacer aquí mismo. Y vamos a escribir
al expediente al abrirlo, y va a ser escrito. Y entonces sólo se va a cerrar cuando estemos
ejecutando el mensaje de salida. Entonces después de haber
escrito en el archivo, vamos a cerrar el archivo, pero
antes de que se pueda cerrar, luego
seguimos adelante y agregamos
en este método no válido, que va a
desencadenar un error en este método de salida porque
ahí es donde estamos en la
etapa actual del programa. Esencialmente, lo que quiero
hacer es ir a un seto e
imprimir una excepción Entonces lo que voy a hacer, lo
voy a mantener muy simple, y voy a ir
a decir que si tuviera
una excepción, voy a decir aquí, si mi excepción guión bajo
chip no es ninguno Entonces, si tengo una excepción, entonces
quiero imprimir
temporalmente excepción siendo manejada
Bien, así como así. Y lo siguiente
que quiero hacer es simplemente decir salir aquí afuera, y quiero volver verdad. Bien. Ahora, déjenme elaborar
lo que estoy haciendo aquí. Entonces esta declaración impresa
aquí dice que la excepción que se maneja significa que quiero imprimir un mensaje si ocurrió una
excepción. Entonces este tipo de excepción dice, I tipo de excepción no es ninguno, lo que significa que si hay
una excepción, quiero imprimir
excepción siendo manejada. ¿Bien? Todo lo que estoy haciendo aquí fuera de eso declaro es que estoy diciendo salida de impresión. Eso va a
imprimir este mensaje independientemente de si
hubo una excepción o no. Devolver verdad aquí, es muy importante porque
eso va a suprimir cualquier excepción
que haya ocurrido dentro del bloque WIS aquí. Se va a asegurar que
no hay más errores de salida. Te voy a mostrar
lo que va a quedar cuando me ocupe primero de
la excepción. Lo estoy haciendo al
revés. Entonces, si tuviera que ejecutar este código, podemos ver, Bien, está abierto. Podemos ver que se está cerrando. Entonces podemos ver la excepción
siendo manejada y salida. Ahora, digamos que iba a quitar
ese manejo de excepción, y dejarme ir a
un seto y solo comentar para sonar
y quitar eso Y ahora lo que voy a
hacer es que voy a ejecutar exactamente lo mismo
y decir run code. Bien. Y podemos ver aquí el archivo está a punto de
cerrarse y salir. Ahora bien, lo que
verás aquí es que todavía no está
lanzando flechas, y eso es porque
he vuelto verdad aquí, y eso suprime tus
excepciones dentro del wispblock Entonces lo que vas
a querer hacer es agregar tu hashtag aquí y
solo agregarlo en el comentario, y podemos seguir adelante
y ejecutar el código. Ahora puedes ver que se produce un error de
rastreo. Podemos ver ahora
tenemos este error, por lo que es un
error de atributo y el objeto tiene un atributo mesod aleatorio
podemos ver donde
ocurrió ese error de
acuerdo con el traceback Podemos ver el mensaje aleatorio de carfle
dot, y aquí es donde ocurrió
ese error Eso es algo que
quería mencionar. Ese es el error
que obtendrás si
no tienes el
manejo de errores en su lugar. Ahora bien, si quieres que
sea un poco más conciso y quieres
que sea específico, lo que esencialmente puedes
hacer es lo siguiente. Vamos a decir retorno verdadero. Queremos obtener ese tipo de
excepción. Pero dentro de esta declaración aquí, queremos ver los
detalles más concisos. No queremos el manejador de
excepciones predeterminado. Queremos darle estilo nosotros mismos. Quiero ver el
tipo de excepción y el valor de excepción, y quiero ver el traceback todo aquí en esta declaración
impresa Lo que voy a hacer es que
voy a seguir adelante
y agregarlos. Voy a decir, tipo de
excepción. Lo que voy a hacer es
que creo que voy a usar cuerdas F, así que simplemente puedo
volver a ello Voy a decir tipo de excepción. Entonces vamos a tener valor y
quiero ver el rastro de vuelta. También voy a cambiar el texto. Esto es para tener mis propios mensajes
de error personalizados. Trazback. Ahora, vamos a ejecutar esto. Entonces recibo mis propios mensajes
de error personalizados, y esto es realmente útil. Tipo de excepción, podemos ver error de
atributo, valor de
excepción, podemos ver que no tiene ningún atributo mesod
aleatorio que sea perteneciente a esto
y podemos ver también un traceback en términos del objeto
traceback ahí Ese es el error
ahí. Ahí vamos. Siento que es una forma más útil si quieres manejar también el manejo de
errores, solo
seguirías
adelante y
verificarías tranquilamente si el
tipo de excepción no es ninguno, y luego volverás true
para que puedas suprimir cualquier excepción que ocurra, claro,
como mencioné,
dentro del Wistblock
también se asegurará de que no desencadene el error predeterminado
dentro del consola, y al manejarlo usted mismo
mirando manualmente el tipo, el valor del traceback también puede
ser muy efectivo, porque como puede ver,
también está en una especie
de salida muy limpia de salida Bien, así es como
también puedes manejar el manejo de errores cuando estás tratando con tu gestor de contexto
personalizado Entonces otro
punto muy útil para mencionar aquí es cuando estás trabajando
con gestores de contexto, tienes más opciones
para cambiar cómo quieres, por
ejemplo, el proceso de
manejo de archivos para ir. Muy bien, chicos. Así que eso
es todo para este ejercicio de laboratorio sobre la utilización de administradores de
contexto personalizados con manejo de archivos en
este caso particular.
79. Generadores: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada los generadores, comencemos. Bien, entonces
probablemente te estés preguntando qué demonios es un generador. Un generador es esencialmente
una función única que conserva su estado y produce una secuencia de
valores uno a la vez, lugar de
devolverlos todos a la vez. Ahora, probablemente te estés preguntando,
es bueno saberlo, pero ¿cómo funcionan realmente? En lugar de retorno, los generadores
utilizan la palabra clave yield. Ahora bien, esto significa que
no corren todos a la vez, sino que hacen una pausa en el rendimiento. Y esto hace que los generadores sean eficientes en la
memoria, ya que no almacenan
toda la salida en la memoria. Ahora bien, los efectos
que ves no es algo que
verás enseguida. Realmente no lo
verás en el código, pero es en términos del procesamiento del
backend. ¿Bien? Así es como
medirías la eficiencia, pero sí tengo una lección sobre
que estamos como donde lo
explicaré para que
tenga más sentido sobre la eficiencia de la memoria. En fin, continuemos
y enfoquemos en los generadores. Pero ahora lo que quiero
hacer es
explicar una analogía simple para explicar una analogía simple que
puedas
entender mejor a los generadores, y esta analogía va a estar enfocada en ver Netflix Entonces en el concepto de
rendimiento en generadores, podemos compararlo en Netflix
con el botón Pausa. Entonces yield es el botón de pausa. Después de terminar un episodio,
Netflix hace una pausa en lugar de
reproducirlo todo a la vez Netflix también tiene la opción hacer clic en el
botón Siguiente para ir a continuación. Y cuando estamos trabajando
con generadores, tendemos a
usar a veces la siguiente función. Entonces el siguiente es un botón de reproducción. Entonces, cuando estés listo, presionas Reproducir para ver el siguiente episodio, y eso también puede
ocurrir con los generadores. Podemos utilizar la
siguiente función para pasar
al siguiente resultado que
se está rindiendo Ahora, otra cosa importante es que ahorra
donde quiera que lo dejaste. No tienes que empezar desde el principio cada vez que se
produce un episodio en Netflix. Siempre recuerda
dónde te fuiste por última vez. Lo mismo con la utilización de
generadores y la utilización del rendimiento. Va a recordar
dónde estuviste por última vez. Bien. Ahora, apliquemos
esto a un programa. Entonces creo una función, que es un programa de Netflix, y luego voy a ceder, por ejemplo, tres episodios. Así que cede el episodio uno, episodio dos y el episodio tres. Entonces voy a seguir
adelante y almacenar esta
función de programa de Netflix en una variable, y esta variable finalmente
será un objeto generador que se está
almacenando porque estamos
utilizando la palabra clave yield. Entonces lo que podemos hacer
es imprimir cada episodio en orden
utilizando la siguiente función. Podemos decir imprimir a continuación y
luego encapsular el episodio. Eso va a
imprimir el Episodio uno. Entonces utilizamos la
siguiente función siguiente, y ponemos en el episodio y eso va a dar
salida al episodio dos. Va a
recordar el estado. No va a imprimir los
episodios uno, dos y tres. Si solo sigues adelante
y muestras el episodio, tendríamos que
decir lo siguiente y lo
va a hacer en iteración Bien. Ahora bien, ese va a ser el caso si
estamos haciendo saltos manuales, igual que en Netflix, si nos estamos saltando
manualmente un episodio ¿Bien? Seguiríamos usando la siguiente función
cada vez para hacerlo. Ahora, lo que también podemos hacer es que
podemos automatizar esto para
que vaya un poco más rápido. Podemos usar un bucle de cuatro. ¿Bien? Así que inicia el programa de televisión
y recorre los episodios. Por lo que usamos un bucle de cuatro al decir cuatro episodios en el programa de Netflix , episodio
impreso, y
esto va a imprimir todo en el orden
designado. Bien. Y eso sería saltarse
automáticamente. Derecha. Así es como podemos aplicar
y utilizar generadores. Vamos a practicar y
vamos a seguir adelante y hacer algunos ejercicios prácticos de laboratorio para trabajar en generadores. Estén atentos.
80. Trabajar con generadores - [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado a los generadores. Ahora bien, como mencioné en las lecciones teóricas
que mencioné, un generador es una función
única que conserva su estado y produce una secuencia de
valores uno a la vez, lugar de
devolverlos todos a la vez. Ahora, solo quiero
mostrarte y demostrarte que un generador no es solo una
función regular y que es una función única. Así que sigamos adelante y definamos una función normal para empezar. Voy a decir
la muerte y todavía
vamos a tener la misma
llamada que teníamos antes. Voy a decir Netflix underscore show como
el nombre de la función, a
cada lado, paréntesis vacíos Yo sólo voy a, por ejemplo, ir a un seto y decir Imprimir
episodio uno, y eso es todo Entonces voy a conseguir una
variable y voy a
decir episodio es igual al programa de subrayado de
Netflix Entonces si digo episodio impreso, vamos a ver aquí
que no devuelve ninguno. Eso es sólo una prueba muy
simple para ver si estamos tratando
con una función. Pero si tuviera que quitar
print y decir yield, use la palabra clave yield y
quiero decir episodio uno, y hago lo mismo y corro, va a dar salida a
un objeto generador. Entonces esto es una indicación para
mostrar que al agregar en yield, le
estamos diciendo a Pison
que queremos transformar esta función
como un generador, en otras palabras, una función
única Entonces solo algo que
quería mencionar ahí solo para que podamos tener algo de claridad sobre la diferencia.
Así que vamos a la cabeza hacia atrás. De todos modos necesitamos
definir una función. Va a ser programa de Netflix, y luego queremos
dar algunos resultados. Entonces voy a
ceder, en primer lugar, episodio uno, y va a ser que va a decir
algo al azar, el molino. Rendimiento. Ahora voy a decir episodio dos. La prohibición y el rendimiento
Episodio tres villa. Ahora, puedes agregar algo de
espacio aquí si quieres, o puedes mantenerlo apretado. Realmente depende de usted en cuanto
a lo que quiere hacer, pero asegúrese de tener
tres declaraciones de rendimiento. A continuación, queremos asociar la función aquí, Netflix show, que ahora es un generador
a una variable para
que nuestra variable luego contenga este objeto
generador. Entonces voy a decir
episodio igual, y va a ser programa de subrayado de
Netflix Y hemos asignado
ese objeto generador. Perfecto. Ahora podemos seguir adelante e imprimir los
episodios uno por uno. Entonces si digo print, puedo
usar la siguiente función, y solo puedo decir episodio. Y sigamos adelante y ejecutemos esto. Y puedes ver aquí
dice Episodio uno el Molino. Déjame ejecutar el código aquí.
Episodio uno el ML. Entonces no va a continuar y sacar cada
episodio que tengamos. Lo va a hacer en segmentos. Entonces, para que vea
el siguiente episodio, voy a tener que utilizar de nuevo
la siguiente función, así que voy al episodio dos, luego al episodio tres, y
así sucesivamente. Entonces déjame hacer eso. Simplemente puede seguir adelante y emitir el
estado de impresión tres veces. Por lo que el episodio uno
se imprimirá primero. Episodio dos siguiente, y
episodio tres compartido. Entonces, sigamos adelante y ejecutemos esto. Y como puedes ver ahora,
ahora está dando salida al Episodio uno. Para responder en orden. No se trata sólo de ir y
sacarlos a todos de manera tan repentina ¿Bien? Entonces así es como podemos seguir adelante y configurar un generador
simple. Ahora, digamos que queremos
automatizar esto. No queremos tener que
usar constantemente la siguiente función cada vez. Entonces lo que podemos hacer es
que podemos seguir adelante y eliminar esto. Todo bien. Y queremos quitar
eso también y podemos decir cuatro episodios en Netflix. Subrayar Mostrar Colón, y
queremos decir episodio impreso. Y si ejecutamos esto,
vamos a conseguir el episodio uno,
el Molino, el Episodio dos, el
granero y el Episodio
tres, la Vella. Ahora, probablemente te estés
preguntando, Bien, qué es lo único de todo
el proceso, eso tiene que ver con la eficiencia
detrás de escena de los generadores, y esto no es algo que
verás inherentemente en tu código, sino algo que
sucederá en segundo plano Y como mencioné, esa es
una lección que voy a cubrir en la siguiente lección, debería decir, de
seguir adelante con ese proceso. Pero en cualquier caso, sigamos
adelante y solo hagamos otro ejemplo sencillo
de un generador, y hagamos eso. Todo bien. A continuación, voy a decir D
y después voy a decir, vamos con
digamos DF y quiero decir rosario subrayado elementos
serían mi función Ahora bien, para
convertir esto en un generador, voy a necesitar decir yield, al
menos tener una declaración. Aquí voy a decir manzana. Producción de leche. Rendimiento, y podemos decir
carne. Ahí vamos. Ahora queremos seguir adelante y asignar nuestro generador a una
variable, nuestro objeto generador. Voy a seguir adelante y
puedo decir que el producto es igual, y vamos a decir artículos de subrayado de
comestibles Ahora producto ahora es ahora
un objeto generador. Entonces ahora sigamos adelante
y probemos el proceso. Entonces, si yo fuera a decir print, puedo decir siguiente, usar la siguiente función,
y luego quiero agregar en ese
objeto generador, así producto. Entonces ahora si ejecuto esto,
va a dar salida a Apple. Y si sigo
ejecutándolo, no va a ir más allá, solo
va a hacer el siguiente valor particular
que se establezca aquí. Tendría que hacer eso por
la cantidad de veces que
tengo esos artículos en particular si
corro manzana, leche y carne. Perfecto. Automatizemos esto. Entonces, eliminemos lo siguiente. Simplemente podemos ir
aheage y sumar un flop. Entonces voy a decir para producto en abarrotes subrayan los artículos Y podemos simplemente
imprimir el producto. Entonces cada declaración en particular que tenemos aquí,
y es correr eso. Y aquí tenemos
manzana, leche y carne. Bien, así que ahí
vamos. Así es como simplemente podemos seguir adelante y utilizar un
generador en Bison Voy a pasar por
la siguiente lección ahora, la
parte de eficiencia de memoria para que puedas entender el
beneficio real de los generadores. Bien, chicos. Entonces eso es todo para particular este ejercicio de laboratorio
en particular.
81. Eficiencia de la memoria del generador: Hola a todos. Y bienvenidos a la siguiente lección
que se va a centrar en entender la eficiencia de la
memoria en términos de géneros. Muy bien, así que entender la eficiencia
de la memoria. Una función regular almacena todos los
valores en la memoria a la vez, lo que puede ser ineficiente
para grandes conjuntos Por otro lado, un
generador va a producir un valor a vez sin retener los
anteriores, y esto lo hace mucho
más eficiente en la memoria. Entonces digamos, por ejemplo, estamos trabajando con
una función regular. Y en esta función regular, definimos una función
conocida como programa de Netflix. Estamos regresando una
lista de episodios, y entonces lo que estamos haciendo
esencialmente es que
vamos a
seguir adelante y asignar esos episodios a esa
función en particular aquí, y esa lista entera se va
a crear en la memoria, y luego podremos
seguir adelante y hacer un bucle de estos episodios, muy similar a lo que
hicimos con los géneros. No obstante, aquí es donde entra en juego el
tema. El problema es que
la función crea instala toda la lista
en la memoria antes de hacer un bucle Por ejemplo, si hubiera
millones de episodios, tomaría
mucha memoria. Ahora una función regular, si va a estar
devolviendo, por ejemplo, listas compuestas por
muchos valores, va a cargar todo
en la memoria a la vez. Ese es el tema que tenemos aquí con una función regular. Sin embargo, un generador
puede resolver este problema. Si miramos a un generador
en este ejemplo, solo
estamos cediendo, como pueden ver, nuestros valores. Rendimiento episodio uno, rendimientos
dos, rendimiento episodio tres. Probablemente te estés preguntando
¿por qué es esto mejor? Como puedes ver,
solo un episodio, como puedes ver, se guarda
en la memoria a la vez. Tan pronto como se imprime un
episodio, se descarta, y eso
ayuda a liberar memoria. Entonces la
función generadora, tenemos yield, a diferencia de una función regular tendremos retorno
al utilizar yield, va a cargar
un valor a la vez, y esto ayuda a mantener bajo
su uso de memoria. Todo bien. Entonces, ojalá
ahora eso te brinde una mejor
comprensión con la comprensión de
la eficiencia de memoria con generadores, y así es como
puedes ver el valor de usar generadores
con la palabra clave yield. Entonces como dije, lo sé en la primera lección y con
el impuesto especial práctico de laboratorio, no
parecía que
hubiera mucho
porque esto es
esencialmente algo que ocurre detrás de escena y ayuda con tu memoria Aquí es donde va a ser útil si estás tratando
con aplicaciones más adelante o actualmente ahora y quieres
ver el uso de tu memoria, generadores realmente pueden
ayudar en este sentido.
82. Copias superficiales y profundas: Hola, Ron. Bienvenidos a
la siguiente lección, que va a estar enfocada
en la copia superficial y profunda. Echemos un vistazo a la
diferencia entre ambos. Una copia superficial, esencialmente, crea un nuevo objeto, pero conserva referencias a
los elementos originales, lo que significa que los cambios en los objetos
anidados
afectan a ambas copias También tenemos una
copia profunda, y en este caso, una copia profunda hace un duplicado totalmente
independiente, incluyendo todos los objetos
anidados, asegurando que los cambios en una
copia no afecten a la otra Entonces aquí están las diferencias entre copia superficial y profunda, y vamos a hacer un ejercicio
práctico de laboratorio
sobre ellos para que puedas ver cómo se va a
aplicar este seri a los ejercicios de laboratorio Así que eso es todo en las definiciones
de copia superficial y profunda, profundicemos en
los ejercicios de laboratorio.
83. Usa textos superficiales y profundos: [Lab]: Hola a todos. Y bienvenidos
al próximo ejercicio de laboratorio, que se centrará en la copia
superficial y profunda. Entonces vamos a trabajar con
algunos ejemplos para que podamos cimentar
mejor nuestros
conocimientos sobre copiado. Así que sigamos adelante
y comencemos. Ahora en este primer ejemplo, vamos a aprender cómo
podemos asignar sin copiar. Así que todavía no estamos haciendo
una copia, solo para profundizar en toda
la idea de ello. Entonces primero, quiero
definir una lista. Voy a decir lista de
subrayados originales. Va a decir uno, tres, y cinco está en la lista. Quiero asignarlo
a otra variable. Diré que nueva lista de subrayados es igual a
lista original. Y con esto todo lo que estoy
haciendo, como mencioné, es asignar la lista original aquí a una nueva variable
llamada nueva lista, y en realidad no estoy haciendo una copia. Sólo lo estoy asignando. Ahora, digamos que quería
modificar la nueva lista y decir nueva lista, y voy a decir a cero, quiero ponerla en 99. Ahora lo que quiero hacer
es imprimir lista de publicaciones. Voy a decir imprimir,
y voy a decir aquí lista original. Y es que en y luego
quiero decir imprimir nueva lista, y luego podemos
pasar por la nueva lista. Vamos a ejecutar esto. Podemos ver
aquí en la lista original, tenemos 99 y tenemos
tres y tenemos cinco. Entonces en la nueva
lista, tenemos 99, tenemos tres y
tenemos cinco aquí. Ahora, sigamos adelante y entendamos el
proceso aquí en cuestión. Ahora aquí podemos ver que la nueva lista no es una
copia de la lista original. Ambas variables apuntan a
la misma lista en la memoria. Cuando cambiamos nueva lista,
como podemos ver aquí, cero, la lista original también cambia porque
son el mismo objeto. Como puedes ver
aquí, 993-59-0935. Así es como podemos simplemente asignar una lista que
no cree una copia. Derecha. Eso es
lo primero que quiero mencionar. Ahora lo que vamos a hacer
es profundizar en la copia superficial. Eso es copiar sólo
la lista externa. Con una copia superficial,
creará un nuevo objeto, pero no copia objetos
anidados, nos sumergiremos en
eso en el momento Entonces sigamos adelante
y hagamos precisamente eso. Asegúrate de que
te sientes cómodo con lo que acabamos de pasar. Todo bien. Así que sigamos adelante y centrémonos en la copia superficial. Recuerde, una copia superficial
crea una nueva lista externa, pero las listas internas
siguen siendo las mismas. No se copian, solo
referencia, comencemos. Para ello necesitamos
importar el módulo copy. Bien. Entonces queremos antes
que nada, crear una lista original
con listas anidadas Entonces podemos decir que
las listas originales son variables, y aquí vamos
a tener una lista, y luego vamos
a tener una lista en una lista que va
a tener uno, dos, tres, agregar en coma, y luego queremos tener
cuatro, cinco y seis Bien. Entonces ahora tenemos una
lista con listas anidadas Entonces una lista en a está bien. Ahora queremos crear
una copia superficial. Voy a asignar esto
a mi variable llamada copia
superficial para crear
esa copia superficial, necesitarías llamar
al módulo copy y
el módulo copy tiene una
función llamada copy, y podemos simplemente colocar en la lista
original dentro de eso. Eso va a crear
una copia superficial para nosotros. Ahora queremos modificar la lista interna que comparten
ambas listas. Para ello, diríamos copia de subrayado
superficial. Diríamos cero, cero, y podemos establecer eso en 99. Lo que eso va
a
hacer esencialmente es que va
a ir a una cobertura y cambiar el valor del primer elemento de la lista
interna Aquí, podrías tratar esto como la lista que
tenemos afuera, y esa va a
ser esta lista aquí, y entonces denotaríamos
esta lista aquí como cero, y esta lista aquí como una. Entonces estamos diciendo cero, eso significa que queremos
trabajar con éste. Y luego dentro de esa lista, viene en segundo lugar viene
el segundo argumento aquí. Queremos seguir adelante
y hacer referencia al primer elemento de esa
lista, este de aquí mismo. Eso va a
cambiar e ir al 99, y eso va a
reflejarse tanto en nuestra lista original como en
nuestra copia superficial también. Entonces, sigamos adelante e imprimimos el comunicado para que podamos
ver esto. Diré imprimir. Voy a decir original ist. Y luego copia superficial. Copia superficial. Ahí vamos. Entonces ahora sigamos adelante y
queremos imprimir nuestra lista. Ahí lo tenemos. Tenemos 99, dos, tres, cuatro, cinco, seis, y podemos ver que aquí
tuvimos un cambio en la
lista original y por supuesto, la lista superficial por defecto, claro, habría tomado 99. Pero se puede ver que
la lista original también cambió junto con ella, y eso es porque la lista
original aquí por cero, y por supuesto en
nuestra copia superficial a cero en términos de
la posición del elemento, se refiere a la misma
lista en la memoria. Esto demuestra que las copias superficiales solo copian la lista externa y no los
objetos anidados en su interior Esa es la razón por la que estamos
obteniendo el siguiente resultado. Derecha. Ahora sigamos adelante
y centrémonos en la copia profunda, y eso va a
asegurar que Deep Copy tenga una
copia totalmente independiente que no altere la lista original en sí. Entonces lo que queremos hacer es
ir a una cobertura y eliminar lo que tenemos aquí y
vamos a cambiar esto por copia profunda, y vamos a
llamar al módulo de copia, y vamos a decir
copia profunda, utilizar esa función Entonces queremos
pasar por la lista original. Y eso va a
crear una copia profunda. Entonces queremos modificar la lista
interna en la copia profunda, así podemos decir copia de
subrayado profundo, y 00 es
lo mismo que hicimos antes Y podemos decir print,
y vamos
a decir lista original. Seguido de copia profunda, profunda. Ahí vamos. Así que
ahora tenemos eso en su lugar, y vamos a ejecutar esto.
Y ahí vamos. Entonces ahora se puede ver que
la lista original aquí, se mantuvo intacta, así que todavía
tenemos uno, dos, tres, cuatro, cinco, seis. Y en ese
posicionamiento, el efecto no se dio en
el primer elemento aquí. Yo me quedé igual.
No obstante, en copia profunda, ese cambio se ajustó. Aquí se puede ver que 99 está ahora en el lugar de donde solía estar
uno. Entonces probablemente te estés
preguntando, Bien, ¿por qué lista
original esta
vez se mantuvo sin cambios? Porque la copia profunda
era cero, ¿de acuerdo? Y lista original en cero, también, bien, ya no son
la misma lista. copia profunda
duplica todo por completo, por lo que los cambios en la copia profunda no
afectan a la lista original Bien. Entonces eso es simplemente algo muy
importante para recordar. Así que recuerda, estás
usando asignación, como te mostré anteriormente, y si estás usando
la función de copia, los cambios afectarán al
original en términos de la lista. Pero si estás usando deep copy, se va a
copiar completamente a la otra lista, por ejemplo. Muy bien, chicos. Eso es copia superficial, copia profunda y la asignación general en términos de cómo
asumiría que funcionaría la copia. Muy bien, chicos. Eso es todo para este ejercicio práctico de
laboratorio.
84. Registro: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en la tala. Entonces echemos un vistazo.
Entonces, ¿qué es la tala? registro es la práctica
de capturar eventos, mensajes o errores
dentro de una aplicación. Ahora, ayuda a los desarrolladores a depurar, rastrear problemas y también a
monitorear el comportamiento del sistema. Ahora, los registros también se pueden
almacenar en archivos, bases o servicios externos,
y
también se categorizan
por niveles de registro. Entonces echemos un vistazo a estos niveles de
inicio de sesión que obtenemos. Entonces obtenemos los siguientes niveles. Incluyen TBug que proporciona
información de diagnóstico detallada para la resolución de problemas Entonces tenemos info,
que proporciona mensajes operativos
generales confirmando información normal. Advertencia. Esto
va a ser bajo cualquier indicio de
posibles problemas que puedan requerir atención. Entonces obtenemos error, que por
supuesto está enfocado en dar salida a información sobre
cualquier problema significativo que afecte a la funcionalidad de la
aplicación, y nos volvemos críticos, y
críticos, por supuesto, va a dar salida a información
que indica que
hay errores severos que conducen a fallas
del sistema o inestabilidad Entonces estos son los niveles
que obtenemos en login. Depuración, info, advertencia,
Eror y crítico. Todo bien. Entonces ahora
que eso está hecho, sigamos adelante y
adentrémonos en lo práctico.
85. Implementar mensajes de registro: [Laboratorio]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en la tala de árboles. Entonces, el primer ejemplo
que vamos a ver es cómo podemos
implementar el registro básico, y esto es útil para
reemplazar la función print. Ahora, probablemente te estés preguntando, Bien, la
función de impresión es genial. Realmente nos puede ayudar a generar ciertas declaraciones dependiendo dónde las coloquemos en nuestro código. Si bien eso es cierto,
podemos usar el registro, que puede rastrear los eventos de nuestro
programa de
manera más eficiente con sus funciones
y estructuras y todo. Así que sigamos adelante
y comencemos. Primero, queremos importar
el módulo de registro. Ahora queremos configurar el registro
básico. Entonces vamos a
definir nuestra función. Entonces necesitamos referirnos a nuestro
módulo, digamos logging dot. Entonces vamos a referirnos
a la función que se llama basic config. Ahora bien, esta es una función
que configura el registro. Configura cómo se comportan
los registros. Y dentro de eso,
queremos decir que el nivel
es igual al registro de información de punto, ¿verdad? Entonces level es esencialmente un parámetro que establece el nivel de registro
más bajo para grabar, y eso va a ser,
por supuesto, info y superior. Entonces lo tenemos
asignado al registro de información de puntos, y este es un atributo o constante que representa
el nivel de información. Bien. Ahora lo que queremos hacer es que queremos registrar un mensaje
informativo Entonces voy a decir
logging dot info. Y entonces aquí
estaba entre paréntesis. Bien. Quiero seguir adelante y
decir que el programa ha comenzado. Bien, entonces esto registra un mensaje
con el nivel de información. Bien. Entonces eso es solo algo
importante que siento que es importante para que te des
la cabeza. Todo bien. Ahora bien, esta es la
función particular que estamos usando la función info
para que podamos seguir adelante y ejecutar la
siguiente declaración. Entonces si ejecuto esto, yendo
a la ruta info, el programa ha comenzado. Así que bien, hecho, esta es la forma más básica en la que
podemos integrar la tala. Bien, así es como
podemos seguir adelante y
empezar con eso. Derecha. Ahora que nos sentimos
cómodos con la información, ahora
queremos aprender cómo podemos registrar errores
con traceback Así que esto puede ayudar a depurar errores sin
detener nuestro programa. Entonces vamos a
ajustar lo siguiente. Nuevamente, vamos a hacer
uso del módulo de registro. Pero esta vez
queremos configurar el registro para mostrar
errores y superiores. En otras palabras,
error y crítico. Entonces voy a seguir adelante y
llamar al módulo de registro. Entonces quiero ejecutar la configuración básica. Quiero agregar eso en, así que esa es la función que
quiero usar. Voy a establecer el nivel
para registrar error de punto. Bien, entonces es exactamente el mismo
proceso que hicimos antes. Todo lo que estamos haciendo ahora es que
vamos a querer dar salida y mostrar el error de
error, ¿debería decir? Sin información ni nada por el estilo. Ahora sólo podemos crear
un programa sencillo. Voy a decir try y
voy a decir resultado es igual a 10/0. Esto va a provocar
un error de división cero. Lo que quiero hacer entonces es decir excepto y lo que
voy a decir es registrar punto E. Y
aquí voy a decir que intentaste dividir por cero. Entonces al final, quiero
decir excepción E XC, subrayado info
va a ser cierto Bien. Así que sigamos adelante
y echemos un vistazo aquí. Entonces estamos definiendo
el módulo de inicio de sesión, y vamos a usar
la función de error para generar un mensaje que dice que
intentas dividir por cero, y queremos proporcionar una información de excepción
aquí sobre ese error. Entonces registrando error de punto, por supuesto, es
decir, esta es esencialmente la función
que registra un mensaje de error. Y luego cuando tenemos EXC
subrayado info es igual a true, ese es el parámetro que agrega nuestros
detalles de rastreo Bien. Entonces, sigamos adelante
y ejecutemos este código. Y aquí vamos.
Podemos ver raíz de error. Se intenta dividir por cero, así podemos ver que viene
como podemos ver como sigue,
y podemos ver que estamos
obteniendo un rastro aquí atrás para que podamos ver la
pantalla EXC en focales true Entonces este es el rastro
que mencioné, y aquí nos da todos
estos detalles. Dice cero división
error división por cero. Entonces así es como también puedes habilitar
el traceback. Derecha. Entonces eso es lo que
necesitamos para asegurarnos de que tenemos, y esto puede ser muy
útil para la depuración Todo bien. Bien, perfecto. Entonces así es como
podemos seguir adelante y enfocarnos en registrar mensajes de
error. Llave. Ahora lo siguiente en lo
que vamos a querer centrarnos es en cómo podemos registrar
las advertencias para posibles problemas. Esto puede ser muy útil
porque, por supuesto, los desarrolladores quieren ser alertados sobre posibles problemas
antes de romper el código Entonces no va
a romper un código, sino que es sólo una especie de
advertencia para hacérnoslo saber. Bien. Entonces lo que
vamos a querer hacer es decir registro, punto, y vamos a
decir config básica, y ahora queremos
establecer el nivel, y eso va a
ser advertencia de registro. Bien. Ahora vamos
a crear un programa. Voy a decir que la edad es igual
y voy a decir menos cinco. Eso va a ser una edad
inválida, claro. Entonces quiero verificar
la entrada no válida. Voy a decir que
envejezco menos de cero. Quiero entonces seguir adelante y
decir advertencia de punto de registro usa la función de advertencia aquí
y va a decir que la edad no puede ser negativa. Entonces quiero decir recibido. Voy a agregar en
símbolo de porcentaje y D aquí, y luego voy a agregar solo estoy
agregando en algún formato para que la edad
se agregue aquí a
la propia cadena. Tenemos advertencia de registro
aquí, esencialmente, lo que va a pasar
aquí es que va
a registrar mensajes de advertencia. Entonces aquí este
símbolo porcentual y la G aquí está el
especificador de formato que
va a insertar el valor
entero de edad, que por supuesto, en este
caso, enviamos a menos cinco Lo que podemos hacer es seguir
adelante y ejecutar este código. Aquí nos llega una advertencia
diciendo advertencia, edad no puede ser negativa
recibida menos cinco. Así es como podemos registrar las advertencias de posibles
problemas que podamos recibir. Derecha. Genial. Ahora lo siguiente que creo que
te va a gustar, es realmente bastante interesante, debería decir, así es como
podemos guardar los registros en un archivo. Podemos mantener un
registro permanente de los registros en lugar de simplemente
imprimirlos como puede ver aquí. Ahora bien, esto será
muy beneficioso, sobre todo si trabajas
para una empresa a la que le gusta hacer un seguimiento
de los registros y hacer auditorías o cualquier cosa por el estilo. Podemos seguir adelante y quitar
todo tal como está. Ahora vamos a
aprender a guardar registros un archivo. Todo bien. Entonces, como queremos
hacer antes, queremos configurar
login para escribir en un archivo. Entonces lo que vamos a
hacer es que vamos a decir registro y tenemos
que decir config básica, antes que nada, luego
vamos a especificar un nombre de archivo, y ese va a
ser esencialmente el parámetro que
establece el nombre del archivo. Entonces voy a decir
nombre de archivo. Ese es el parámetro. Y entonces aquí lo
llamaré app dot log. Bien. Y entonces lo siguiente que quiero hacer es poner a nivel. Entonces voy a decir que el
nivel es igual y voy a decir
registro de información de punto. Voy a añadir en coma y
después sólo quiero decir
Enter para ir a una nueva línea aquí Yo sólo voy a decir formato, y voy a especificar el formato que
quiero configurarlo como. Este formato aquí esencialmente
va a ser el parámetro
que define el formato de registro. En otras palabras, la marca de tiempo, nivel y el mensaje, y así es como
vamos a querer hacerlo Vamos
a querer agregar en nuestras cotizaciones, símbolo
presentado y luego aquí, solo
podemos agregar en nuestros
parenses y decir pedir tiempo Y eso va a ser S, y
luego cuando digas Dasher, y luego símbolo centid, inferencias queremos
agregar en el nombre del nivel Y podemos decir S y luego
podemos agregar en
el símbolo de porcentaje y podemos tener el mensaje también se ponga
aquí con S también. Déjame alejar el zoom para que
veas y solo podamos
volver a poner esto y eso es ahora todo en
una línea para ti. Todo bien. Genial. Ya tenemos
eso configurado. Queremos registrar un mensaje
informativo. Voy a decir registrando información de
puntos aquí quiero pasar por el programa
iniciado con éxito. Oh. Ahí vamos. Ahora queremos verificar
el registro de la aplicación de archivos para los registros y luego
veremos la entrada de registro de ejemplo. Entonces sigamos adelante y hagamos eso. Ahora, antes de hacer
eso, solo quiero
mencionar aquí tenemos nombre de
archivo app log. De nuevo, solo quiero explicarte
para que estés al tanto. Este es un parámetro
que va a configurar el archivo para guardar nuestros registros. Entonces tenemos el nivel
es igual al registro de información de punto. Entonces solo estamos definiendo el nivel que
vamos a utilizar aquí. Va a ser
a nivel info. Entonces nuevamente, solo
reiterar nivel es el parámetro que
establece, por supuesto, en este caso, el nivel
más bajo para grabar, que va a ser info. Bien. Y recuerda, el
registro de información de puntos va a ser el
atributo que representa el nivel de información
que estamos definiendo. Derecha. Bien, así que sigamos
adelante y ejecutemos nuestro código. Entonces lo ejecutamos, y ahora
quieres ir a tu directorio. Y aquí tenemos un archivo de
registro de puntos de aplicación que fue creado. Va a mostrar
la fecha, la hora, y también va
a mostrar la información que
dice que el programa
comenzó con éxito. Entonces así es como podemos seguir
adelante y asegurarnos guardar nuestros registros en un archivo. Bien. Entonces así es como podemos hacer eso. Perfecto. Así que
tenemos esa configuración. Ahora podemos simplemente mover todo aquí y continuar. Bien hecho. Ahora lo último que
queremos mirar es cómo podemos agregar niveles de tiempo y
registro para la depuración Tenemos que
asegurarnos de que tenemos el módulo de registro importado y vamos a
configurar el registro con marcas de tiempo y niveles de gravedad También tenemos, como
puedo decir debug. Eso es muy útil
para cuando
queremos como dirías
depurar nuestro código. Sigamos adelante y comencemos. Ahora bien, lo primero que
queremos hacer es decir tala. Y queremos definir
la configuración básica. El nivel aquí, vamos
a decir que el nivel es igual al registro, y vamos a
establecer esto en T bug. Bien. Entonces ese es un parámetro que permite todos los
mensajes de registro, debug y superiores. Bien. Derecha. Entonces ahora lo que
podemos seguir adelante y hacer es que solo podemos agregar en nuestra coma y ahora necesitamos
agregar en nuestro formato Así que aquí sólo
voy a decir formato, añadir en mi símbolo de
porcentaje de cotizaciones, y queremos encapsular
el formato de mensaje de registro Entonces queremos que primero muestre SKT. Podría agregar en la S. Entonces queremos agregar en nuestro símbolo de
porcentaje, y queremos también
generar nombre de nivel. Entonces esto es lo que normalmente
verías en el archivo, por ejemplo, y luego s, ir al siguiente símbolo
de porcentaje, mensaje de
inferencias, y
luego S ahí vamos Entonces ahora tenemos ese
formato en su lugar. Déjame mover eso aquí. Entonces ahora ya sabes
cómo definir eso. Derecha. Perfecto. Ese es el formato de mensaje de
registro que ahora queremos registrar mensajes con diferentes
niveles de gravedad. Hagámoslo. Bien, entonces voy a decir logging dot y primero
tendremos a Dbug Voy a decir que este
es un mensaje de D Bug. Entonces diré registrando
información de puntos entonces voy a decir que todo está
funcionando sin problemas. Voy a decir registro de punto, y voy a decir advertencia. Esto va a decir
cuidado con posibles problemas. Entonces podemos decir
registrando error de punto aquí voy a decir que
algo salió mal. Entonces podemos decir
tala, crítica. Quiero decir
fracaso crítico. Ahí vamos. Entonces ahora sigamos adelante
y obtengamos nuestra salida, guardemos ese archivo, ejecutemos el
código, y aquí lo tenemos. Podemos ver aquí que
hemos configurado el tiempo. Hemos configurado
el nombre del nivel, y también hemos
configurado el mensaje, y eso es todo en una,
dos y tres secciones. Entonces eso va a encapsular. Se puede tratar esto como
los símbolos centurd parenss con el formato
que estamos Podemos tratarlos
como nuestros marcadores para cada segmento al que
nos referimos Ahora, el nombre del nivel va
a estar viniendo de debug, si la función que
hemos aclarado aquí, como puedes ver, y el
mensaje va a venir de lo que
declaras en esa función. Y así fue como
todo salió. Y podemos ver que el
formato está en tiempo ASC, así que eso va
a mostrar el año, los meses, el día, y luego la hora en que
se adelantó y registró, acuerdo a debug info error de
advertencia y crítico Bien, así que ahí lo tenemos. Así es como podemos
implementar la tala. Vamos. Eso es todo para
esta lección sobre el uso de registros y cómo podemos generar varios registros
dependiendo de nuestras situaciones.
86. JSON: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar
enfocada en JSO. Echemos un vistazo. JSON significa JavaScript
Object Notación, y es un formato ligero para almacenar e intercambiar datos. Ahora, también utiliza pares de valores
clave de
una manera estructurada
legible por humanos y
también se usa ampliamente en
API y aplicaciones web. Y otra
cosa importante a tener en cuenta aquí es que JSON soporta
varios tipos de datos, como cadenas, números, matrices, objetos,
y también booleanos Entonces nos vamos a centrar en JSON y cómo podemos
aplicarlo en Hisen. Así que comencemos.
87. Trabajar con JSON - [Laboratorio]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a
estar enfocado en JSO Entonces te voy a mostrar
tres ejemplos de cómo puedes implementar
mejor
JSON dentro de PySon Ahora, el primero
va a estar enfocado en convertir un diccionario
a una cadena JSON. Después vamos a
aprender a convertir una cadena JSON a un diccionario
PySon Y lo último que vamos a
hacer es que vamos a guardar JSON en un archivo y
leer JSON de un archivo. Y esa va a ser
la realmente importante, ya que aquí también vamos a utilizar gestores de
contexto para
llevar a cabo ese proceso. Bien, así que sigamos
adelante y comencemos. Así que vamos a
empezar de manera muy sencilla y convertir un diccionario
a una cadena JSON. Primero, necesitamos
importar el módulo JSON, y luego necesitamos
crear nuestros diccionarios. Voy a decir datos, y mi diccionario va a tener los siguientes pares de valores
clave. Primero, vamos a decir nombre
como la primera clave, y eso va a
ser puesto en honor. El segundo
par
de valores clave consistirá en el Él es la clave, y el valor 29, entonces tendremos la ciudad, y voy
a poner eso en ape um, correcto. Entonces ahí lo tenemos. Ahí
tenemos nuestro diccionario. Ahora, lo que podemos hacer es seguir adelante y convertir este diccionario en una cadena JSON. Y para ello,
primero necesitamos definir una
variable para poder asignar el resultado que obtendremos al final
de la conversión. Voy a decir cadena
JSON igual. Entonces voy a referirme
al módulo JSON, digamos punto y luego voy
a usar el método volcados, y eso va a convertir
mi diccionario a una cadena JSON Así que solo necesito
pasar por los datos, los va a convertir por mí,
y todo lo que necesito
hacer es decir imprimir y luego voy a decir cadena de subrayado
JSON Y eso va a
generar
en consecuencia en una cadena JSON para mí. Entonces ahora puedo hacer
es que puedo seguir adelante y ejecutar mi código, y
ahí lo tenemos. Entonces ahora está en un formato JSON
adecuado. Derecha. Perfecto. Así que solo
recuerda que JSON siempre
está entre comillas dobles y no en comillas
tradicionalmente simples. Y esto puede ser muy útil si quieres enviar
tus datos JSON a una API web o
almacenar JSON como texto. Bien, así es como podemos
seguir adelante y configurarlo. Puedes ver aquí el
código completo que se utilizó. Puedes ver cómo
puedes seguir adelante y convertir tu diccionario
a una cadena JSON. Lo siguiente que
vamos a hacer es seguir adelante y convertir tu cadena JSON a
un diccionario Python. Bien, sigamos
adelante y hagamos eso. Entonces lo que voy a hacer
es poder eliminar este código. Queremos utilizar el módulo
JSON todavía. Pero lo que vamos a hacer
ahora es que queremos especificar nuestros datos JSON como una cadena
formateada como JSON. Voy a decir JSON bajo cadena de
susto en iguales, y lo que vamos a
querer hacer es ante todo, agregar entre comillas simples. Necesitamos agregar
comillas simples y luego dentro de eso, podemos definir nuestro diccionario
con nuestros datos JSON. Así es como debe
ser
la cadena si quieres
convertirla en un diccionario. Voy a definir
el
par de valores clave así tendremos nombre. Y eso va a ser RNO, entonces vamos a tener edad, colon y eso va a ser 29, y luego vamos a tener ciudad, y entonces eso va a ser Ciudad del
Capetown. Ahí lo tenemos. Ahí está nuestra cadena JSON. Solo recuerda que
las citas al final son muy importantes y asegúrate de tener todo configurado.
Ahí vamos. Estamos bien. Bien, ahora queremos convertir el JsoString en un diccionario Y lo que vamos a hacer es simplemente almacenar todo esto
en la variable de datos. Vamos a referirnos
al módulo JSON y luego al mensaje de cargas
que viene de él, y vamos a
pasar por cadena JSON. Bien, entonces JSON que carga, nos
va a permitir convertir ese JSomString ahora
en un diccionario Entonces eso es lo que
va a pasar ahora. Hemos pasado por
esa cadena JSON, y va a ser
convertida en un diccionario. Entonces todo lo que queremos hacer ahora
es imprimir los datos, antes que nada, voy
a decir imprimir datos. Y ejecuta este código. Aquí podemos ver que tenemos un diccionario regular en
PySon como puedes ver Ahora, detalle clave para
esto es que ahora se puede ver que está en comillas simples. Mientras que en PySon técnicamente, podrías seguir adelante y configurar tu diccionario en
términos de comillas dobles Puedes hacer eso, pero generalmente el valor predeterminado con PySon es
entre comillas simples y esa es una buena prueba para ver que ahora está en PySon y se ha
configurado correctamente Lo podemos hacer ahora es que podemos acceder a valores
individuales
desde el diccionario, por lo que no es necesario que sigas
adelante y digas datos tal cual. Simplemente puede agregar entre corchetes y
puede elegir de él. Serían tus claves a las
que te referirías, y luego
recuperarás el valor. Si quiero obtener el valor de mi nombre
real de no, tendría que poner un
nombre aquí y ejecutar el código. Las salidas directamente
para mi nombre. Si quiero conseguir ciudad,
que es Capetown, y dirijo esto, saldrá
Capetown . Justo ahí vamos. Así es como puedes
convertir una cadena JSON a un diccionario Python. Ahora bien, el importante del
lote y el más divertido, diría
yo, eso es guardar JSON un archivo y leer
JSON de un archivo. Empecemos y creamos
un diccionario, antes que nada. Voy a decir que los datos son iguales, y voy a abrir esto,
sumar mi par de valores clave, nombre. Con no. Entonces tendremos
edad, colon, 29. Entonces vamos a
tener ciudad colon. Vamos a tener Ciudad del Capetown, y hay todos nuestros datos
dentro de este diccionario Ahora, lo siguiente que
queremos hacer ascie. Queremos guardar nuestros datos
en un archivo, por supuesto, y vamos a decir Wi open, luego el archivo que
queremos crear. Voy a decir en
bastante datos punto JSON. Y quiero escribir
a este archivo. Entonces el modo va
a ser W. Y
voy a decir como archivo,
voy a llamar a esto como. Por lo que también va a abrir
el archivo en modo escritura. Y luego queremos
referirnos a JSON y queremos usar el método
dump aquí. El volcado JSON es un
mensaje que va a escribir los
datos JSON en un archivo. Y para ello, necesitamos
pasar por los datos y luego el archivo porque
queremos tomar estos datos y queremos
escribirlos en nuestro archivo. Y eso va
a escribir los
datos JSON en el propio archivo. Bien. Así que sigamos adelante y
escribamos primero en el archivo, revisemos nuestro directorio, luego
podemos leerlo después. Así que ahora podemos ejecutar el código. Vayamos a nuestro Explorer. Y aquí puedes ver que
tenemos datos JSON, y podemos ver que se ha guardado
en nuestro archivo JSON de punto de datos. Entonces podemos ver nombre a los 29 años, estudiar Ciudad del Capetown, y ahí lo
tenemos todo guardado Ahora, digamos que queremos volver a leer estos datos del archivo
y leerlos en el terminal, por
ejemplo, así que aquí mismo
en el terminal de salida. Cierre esto, vaya a
nuestra siguiente declaración, y podemos seguir adelante
y decir, Wiz, abrir Queremos abrir ese
archivo. El archivo que queremos abrir se llama
data dot JS on, y queremos leerlo. En nuestra curtesía, diremos R, diremos como archivo, y luego podemos definir una variable llamada datos de subrayado
cargado, y vamos a establecer
eso en carga de puntos JS Estamos usando el método dot load, y eso nos
va a permitir leer los datos JSON del archivo, y también se va a
convertir a un diccionario. Voy a decir archivo. Bien. Entonces todo lo que queremos hacer al final es imprimir
que cargaron datos. Voy a decir imprimir datos de subrayado
cargados. Sigamos adelante y ejecutemos
este código. Ahí vamos. Podemos ver que tenemos los
datos y también de vuelta en la versión predeterminada para
diccionarios en PySon Como dije antes,
va a ser entre comillas
simples y eso es
una buena indicación de que se ha convertido en un diccionario para nosotros para equivalentes de
Python. Cierto chicos, eso
es esencialmente todo. Así es como podemos utilizar JSO. Todo bien. Ahí lo tenemos. Yo sólo voy a seguir adelante
y eliminar este código. Todo bien. Ahí vamos.
88. Colas: Hola a todos. Bienvenidos
a la siguiente lección, que va a
estar enfocada en es. Así que comencemos.
Entonces, ¿qué es una Q? Una Q es esencialmente
una estructura de datos que sigue el principio primero
en entrar primero en salir. Es posible que hayas escuchado antes de
un principio conocido como FIFO, así que eso es el primero en entrar
primero en salir, y eso es lo que sigue una Q Ahora, puede ser muy
útil si te estás
enfocando en la programación de char, el
buffering, el manejo, los datos
de secuenciacion, y también se
puede implementar usando qt iss o
collections dot Ahora las operaciones clave
incluyen NQ. Esto es para sumar y
DQ, que está quitando, y esto va a pertenecer
a ciertos elementos adelante y echemos
un vistazo al ejemplo aquí, así que una analogía y luego veamos el
PysonPgram asociado para Sigamos adelante y echemos
un vistazo al ejemplo aquí,
así que una analogía y luego veamos
el
PysonPgram asociado para una Q. Derecha.
Entonces digamos que tenemos a mucha gente haciendo
cola para votar. Entonces todo el mundo está parado en la cola y podrías
verlo como un sistema FIFO Entonces primero en entrar, primero en salir. Entonces la persona que
primero se quedó ahí a las 3:00 de la mañana frente a
la caseta de votación
fue la primera en salir. La segunda persona, por supuesto, finalmente se convirtió en
la primera persona, y
también salieron. Entonces una cola. Si tuviéramos que crear
un programa Python, crearíamos
algo que llevara lo siguiente donde
seguiríamos adelante y tomaríamos el módulo Q. Entonces podemos importar la clase Q. Entonces podemos crear una Q, así creamos una instancia de una Q. Votar Q va
a ser igual a Q. Entonces si la gente se une a
la Q, que es NQ, solo
podemos referirnos a nuestra
instancia y decir punto put, podemos utilizar el método dot, que esencialmente
va a realizar NQ Y agregar gente a la cola. Y eso va a
estar en el orden. Entonces Alice, Bob y Charlie. Y entonces digamos que esa gente
ha hecho sus votos. Ellos van a
dejar la cola, eso va a ser un acto de DQ que entonces podamos imprimir
el orden en el que están Entonces podemos referirnos a
la instancia que
creamos de Q y utilizar
el método dot get. Y eso va a
salir entonces en orden quién entró primero
y quién salió primero, y va a ir
en orden de Alice,
Bob Charlie, quien sea el primero en entrar, y va a sacar
exactamente lo mismo ahí cuando lo
decimos y así emitimos su voto. Derecha. Entonces esa es una
analogía muy simple que podemos utilizar para entender
el concepto de señales Entonces eso está en la visión general
teórica.
89. Consulta de colas: [Lab]: Hola a todos. Bienvenido al
próximo laboratorio de ejercicios prácticos, que va a estar
enfocado en Qs. Empecemos. El primer programa
que vamos a
hacer va a cimentar nuestro conocimiento sobre
cómo podemos crear una Q básica y lo más importante, cómo podemos utilizar el
put y el mensaje a NQ para agregar a una Q y
DQ para eliminar de una Q. Lo primero que quiero
hacer es que quiero
obtener los módulos Voy a decir desde Q, y quiero importar la clase
Q de ese módulo, y tiene que ser una Q mayúscula aquí que indique que
es la clase. Entonces lo que quiero hacer
es crear una instancia de mi Q.
Voy a definir una variable llamada
voto subrayado Q. Voy a poner
eso a la clase Q con paréntesis de apertura y
cierre A continuación, quiero agregar a mi P. voy a decir voto
subrayado Q punto PUT Entonces aquí dentro de los paréneses voy a agregar a
la Q voy a decir encendido y votando
subrayado Q punto p, voy a poner a
John y después votando subrayado Q punto
p. voy a poner a Sarah. Ahí vamos. Ahora lo que
quiero hacer es seguir adelante y deque. Entonces quiero sacar
de la cola y ver qué estoy obteniendo
cada vez que estoy en la cola, a
quién se le está quitando. Entonces agregaría en
una declaración impresa, y solo puedo decir, votando understore Q.
quiero referirme a esa variable en particular
aquí que tenemos que creamos una instancia
de la clase Q. Entonces lo que quiero
hacer es decir punto G. Estoy usando el método G. Después de haber establecido el método G, puedo añadir en coma
y después quiero
decir que emitan su voto Esencialmente, lo que va
a pasar es que va a llegar a cualquier valor
de la persona que primero
se puso en el Que
que es Ro va a conseguir no va a
decir ningún caso voto. Si tuviera que
seguir adelante y ejecutar esto, va a decir un voto de cuidado. Pero aunque tuviera que ejecutarlo
repetidamente, va a seguir diciendo
ono car di voto porque hay
que seguir
imprimiendo explícitamente y ejecutando
el punto get message aquí tres veces o la
cantidad total de veces que
has puesto en la cola. De ahí que se pueda ver el primero
en entrar primero en salir tipo de lógica. Entonces ahora si sigo adelante y copio la primera
declaración por segunda vez, iba a decir que no vota a Cars, luego a votar John Cars. Y tendría que hacerlo un
SRT para conseguir a la última persona, así que esa será Sarah Y podemos ver a Ana Cars votar, John Carsey votar y
Sarah Cars votar Ahí lo tenemos, y
eso está realizando DQ. Bien, entonces ahí vamos. Entonces así es como puedes realizar los conceptos básicos de hacer cola
con putting y getting Derecha. Bien, ahora vamos a seguir adelante y explorar los otros
métodos que vienen con una Q. Entonces lo que voy
a hacer es quitar siguiente y
aquí votando Q, solo
voy a
ajustar esto para que tenga Q. Y puedes establecer un
parámetro en tu Q aquí. Bien. Y voy a
establecer esto como tamaño máximo, y aquí es donde determinas el tamaño máximo que puede ser tu Q. Ahora queremos agregar
elementos a los Ques, voy a decir
tarea subrayado Q, y voy a decir punto put, y
voy a poner aquí la tarea uno Voy a copiar
eso dos veces más. Y podemos decir dos,
y podemos tener tres. Tenemos tres ítems en
nuestra Q o tres tareas. Digamos que aquí quiero obtener
el tamaño de mi tarea. Lo que puedo hacer es decir
print y puedo decir Q size colon space aquí, entonces quiero referirme
a la tarea Q y usar el método dot Q size que va a dar salida a
cuántas tareas tengo. Voy a decir código de ejecución. Puedo ver las tallas Q ahora mismo. Esto no va a
imprimir el tamaño máximo. Va a ser del tamaño de tu que
instalaste aquí. Si tuviera que quitar
una tarea y
ejecutarla, va a decir que tamanos también. Analizo cuántos
artículos se han puesto en la cola usando el
método PUT. Bien, ahí vamos. Ahora, digamos que quiero
comprobar si la Q está llena. Yo sólo puedo seguir adelante
y decir print, y voy a decir que es la Q completa. Puedo decir tarea subrayado, Q, y quiero seguir adelante
y decir punto completo Bien. Y es correr. Y aquí, el tamaño de la cola
es tres y la Q está llena porque se
ha alcanzado el tamaño máximo de tres. Pero si tuviera que quitar
un artículo y ejecutarlo, talla
Q es dos y
la Q no está llena, es falsa, entonces no lo es. Bien. Entonces, cuando
estás llamando tarea, Q aquí, cuando la estás llamando, va a recordar
automáticamente lo que tienes en tu y cuántos
elementos tienes en tu u
Entonces esta variable va
a hacer un seguimiento de eso,
y todo lo que estamos haciendo
es queering ella
mirando y aplicando
estos métodos hacia ella. Entonces esta variable va
a hacer un seguimiento de eso, y todo lo que estamos haciendo
es queering ella mirando y aplicando
estos métodos hacia ella Ch, eso está perfectamente bien, y solo quiero
volver a poner el final que. Ahora, lo que quiero hacer es eliminar y procesar tareas. Voy a decir imprimir.
Tarea subrayado q punto Obtener Estamos usando el
mensaje Get y voy a decir que está terminado,
justo al lado de eso. Básicamente va
a conseguir lo que pongamos como primer elemento aquí en el mensaje put,
esa es la tarea uno Entonces va a ser la
Tarea uno está terminada. Entonces si conseguimos la
siguiente, va
a decir que la Tarea dos está terminada. Voy a hacer eso para
los dos primeros. Bien. Y entonces lo que quiero
hacer es seguir adelante y comprobar
si la cola está vacía. Entonces puedo decir imprimir
y podemos decir, es la Q vacía. Voy a agregar la coma, y voy a referirme a la tarea q punto Y sigamos
adelante y ejecutemos esto Y aquí podemos ver que la
Tarea uno está terminada. La tarea dos está terminada, y ¿el Qu vacío es falso? Debido a que tiene todos
los artículos no se han
completado en la cola. Sólo los dos primeros,
tarea uno y dos. No hemos hecho
tres. Por eso no está vacío y
está volviendo falso. Bien, entonces lo que podemos
hacer es entonces simplemente usar la siguiente declaración para que se complete la
tarea tres. Y ahora si ejecutamos esto,
podemos ver que la tarea tres está terminada. Así que ahora podemos seguir adelante y
volver a verificar usando el método vacío. Guarda esto y corre. Ahora podemos ver que la tarea
tres se completa antes de que fuera falsa
porque no se completó. Ahora la cola está vacía porque
todas las tareas se han completado y está vacía y está disponible.
Ahí lo tenemos. Solo algunos métodos más
para que los utilice. Recuerda que encima de
do y punto g
obtienes punto vacío para verificar
si una cola está vacía. También obtienes el punto cuatro para
verificar si una Q está llena, tamaño de la
cola para generar
el tamaño actual de la cola. También puedes establecer aquí el
parámetro
del tamaño máximo de tu
cola que quieras establecer. Bien. Entonces eso es un
poco más en Qs. Entonces sigamos adelante y
eliminemos eso siguiente. Bien, chicos. Entonces
eso es todo en Qs.
90. Recursión: Hola a todos, y bienvenidos
a la siguiente lección que va a estar enfocada en la recursión. Echemos un vistazo. Recursión. La recursión es
esencialmente una técnica en la que una función se llama a sí misma para
resolver subproblemas más pequeños Ahora se repite hasta llegar a un caso
base, y esto ayuda a evitar que ocurran llamadas
infinitas. Ahora bien, lo importante
a tener en cuenta aquí es que la recursión se puede
aplicar en muchos contextos. Es decir, se puede utilizar
en la inversión de árboles, factoriales, y también en diversos Derecha. Así que eso es en la visión general
teórica, profundizemos en
los ejercicios de laboratorio.
91. Realización de llamadas recursivas - [Laboratorio]: Todo el mundo. Y bienvenidos al
próximo ejercicio práctico de laboratorio, que va a estar
enfocado en la recursión Así que comencemos. Bien, entonces con recursión, normalmente
tendremos un caso base, y eso es lo que
vamos a estar evaluando dentro de una función, y luego tendremos
nuestro caso recursivo,
o nuestra llamada recursiva Y esto es lo que vamos a seguir
adelante y
evaluar en contra de ello. Así que vamos a utilizar el caso base y
equipararlo con el núcleo recursivo Bien, así que sigamos
adelante y comencemos. Vamos a crear un
programa simple para empezar, y vamos a llamar a
esta función cuenta regresiva. Vamos a tener
N como parámetro. Y voy a poner esto en comentarios para que
empieces a aprender. Entonces vamos a tener un caso base, y eso va
a ser en este caso, si N es igual a cero. Voy a imprimir
digamos explosión. Entonces una vez que imprime blast off, quiero detener las funciones, voy a decir return
y eso va a ejecutar y evitar que la
función continúe. Entonces quiero definir
mi llamada recursiva. Esencialmente aquí quiero
imprimir mi número actual. También quiero
volver a llamar a la función con N menos uno. Para ello sólo puedo referirme a la función aquí
y decir N menos uno. Entonces necesito pasar un argumento afuera
llamando a la función, así puedo decir cuenta atrás y
puedo pasar por cinco, y esto es lo que
va a pasar. Voy a tomar
cinco como argumento, pasar como parámetro
por N. Comprobar el caso base, que es si N es igual a cero, imprimir blast off, y luego
devolver y detener la función. Sin embargo, no es el caso, así que
no va a ejecutar esta sentencia
if y
en su lugar imprimir N, sea cual sea el
argumento asociado, que es cinco, entonces va a llamar nuevamente a
la función, cuenta atrás y decir cinco menos uno, que
va a ser cuatro Entonces vuelve a repetir todo el
proceso y va cuatro, cuatro no es igual a cero. Entonces va a
imprimir cuatro, cuenta regresiva, cuatro menos uno, eso va
a ser tres, ahora es tres Si tres es igual a cero, que no lo es, imprima N, que es tres, cuente atrás
tres menos uno, dos, retroceda. N es, por supuesto,
va a ser dos, entonces lo que va a
hacer es decir I N es igual a dos, no va a luego imprimir N, no va a luego imprimir N,
que va a
ser dos, cuenta regresiva ,
dos menos uno, eso
va a ser uno, y luego vamos a
ir hasta
llegar a cero y una vez que sea cero, va a decir print blast off y luego terminar la función Así funciona un programa
recursivo básico. Tienes tu caso base y
tienes tu llamada recursiva. Ahora sigamos adelante y
guardemos esto y corramos. Entonces pueden ver
aquí tenemos cinco,
cuatro, tres, dos, uno,
y luego volamos. Entonces puedes ver aquí
cuando dice print N, eso va a ser
cada vez que sea un número después de que se le
haya restado Entonces primero, serán cinco, cinco menos uno
va a ser cuatro. Comience la evaluación con cuatro, cuatro y luego
cuatro, imprímela y simplemente continúe con ese
mismo proceso hasta que lleguemos a explosión y volvamos
a la función de configuración de salida. Entonces así es esencialmente
como funciona este programa. Borde. Entonces eso es lo esencial
de la recursión. Todo bien. Ahora vamos a hacer algunos ejemplos
más para que podamos construir nuestro conocimiento
de la recursión. Todo bien. Ahora el siguiente programa aquí, lo que voy a hacer es
configurar una función de conteo. Entonces sigamos adelante
y hagamos precisamente eso. Voy a decir Def cuenta hacia arriba, y
en realidad podemos poner subrayado aquí, y va a tomar en Bueno, va a tener un
parámetro que está tomando adentro, pero también vamos a tener
un argumento predeterminado establecido aquí, y voy a establecer eso
como actual igual a Bien. Entonces mi caso base, quiero decir si la
corriente es mayor que N, quiero decir print done. Entonces cuando lleguemos a N,
quiero imprimir hecho, y luego quiero volver, lo que va a
detener la función. Entonces ahora voy a
decir print current, y voy a llamar a la
función, que es contar para arriba, y voy a pasar por N, y voy a decir
actual más uno. Bien. Entonces aquí lo estamos haciendo es que estamos llamando de nuevo a
la función con actual más uno
y necesitamos
pasar por un argumento para
comenzar con contar arriba,
voy a decir cinco. Vamos a tener
cinco y recordar que esta es nuestra llamada recursiva Estoy pasando cinco es un argumento. Tenemos cinco aquí y
tenemos corriente que se establece uno si corriente
mayor que N, tenemos cinco. No es el caso, vamos a ir a
la llamada recursiva Vamos a imprimir
actual actual por supuesto, va a ser uno. Entonces lo que vamos
a hacer es que
todavía vamos a pasar por cinco aquí. Entonces vamos a
decir actual más uno, lo
que significa que esencialmente va
a ser dos. Ahora bien, no le pasa nada
al valor N aquí porque esencialmente el valor N va a seguir siendo cinco. Pero actuales, claro, ahora van a ser dos. Entonces corriente va
a ser dos y el valor aquí de
corriente ahora será dos. Entonces si dos mayores que
N, imprime, no lo es. Entonces vamos a imprimir actual, y va a
ser dos cuentas arriba. Todavía vamos a tener
cinco y actual más uno, ahora
va a
seguir adelante y repetir, y actual
va a ser tres, y va a ser tres aquí, y va a ser siempre cinco y luego actual más uno, ahora
vamos a tener cuatro, y hasta que sean seis, bien, va a entonces imprimir hecho todo el camino cuando
sea hasta seis. También quiero imprimir N para ti para que veas que
esto queda a las cinco. Entonces, si yo fuera a decir print N, verás ese resultado también. Entonces tal vez debería poner algo de
textura para que sea más fácil. Así que permítanme poner esto en
una cadena F, en realidad. Y voy a decir actual es. Y voy a seguir adelante
y justo eso y NN es y ahí vamos Entonces, sigamos adelante y ejecutemos esto. Bien, para que podamos ver aquí. Actual es uno porque
eso es lo que dijimos en el defecto N es cinco.
Va a ser agregado a uno. La corriente es dos y es cinco, corriente es tres y es cinco, corriente es cuatro y
es cinco y se hace. Bien. Entonces, cuando tengamos seis, ¿de acuerdo? Entonces, si la corriente es de seis, que es mayor que N,
se va a imprimir hecha. Entonces no va a tener oportunidad
de imprimir
aquí abajo para mostrar actual es cinco. Entonces técnicamente hablando,
en realidad podemos llamar a esto y decir aquí, la corriente final fue. Y si ejecutamos esto,
se puede ver aquí dice que la corriente
final fue de seis. A eso llegó
al final ya que era
mayor a cinco. Si fuera mayor que igual a, esa habría
sido otra historia. Pero así es como
también podemos usar un caso base, configurar nuestra llamada recursiva, y cómo podemos seguir adelante y crear un programa
que cuente hasta Esa es otra forma en la que podemos hacerlo. Ahora, sigamos adelante y hagamos
otro ejemplo y
es repetir un mensaje
con recursión Vamos a definir nuestra función, que es repetir mensaje de subrayado, y vamos a
pasar por dos parámetros, message y N, y
nuestro caso base Si N es igual a cero, quiero regresar. Voy a parar cuando N llegue a cero. Eso es
todo lo que voy a hacer. Entonces mi llamada recursiva
es imprimir el mensaje, y queremos llamar a la función de repetición de mensaje,
y queremos repetir esto, y vamos a volver a llamar a
la función con mensaje y menos uno Entonces ahora llamamos a la
función afuera, repetimos mensaje, y
pasamos por nuestro argumento, así tendremos hola
que va a mensaje, y luego vamos
a tener tres, que va a N. Así que
vamos a resolver esto. Entonces hola es el mensaje. N es tres. Si N
es igual a cero, regresa. No es el caso.
Entonces vamos a imprimir mensaje, así que
va a ser hola. Después realizamos
la llamada recursiva y pasamos por el
mensaje, que es hola Y luego decimos menos uno. Bien. Entonces lo que tenemos ahora es tres ahora
va a convertirse en dos. Entonces evaluamos.
Si N es igual a cero, devuelva, imprima hola,
repita el mensaje. Voy a decir que pasas
por hola y menos uno. Eso va a ir luego a uno. Regresar, repetir la
función otra vez, ejecutarla de nuevo, imprimir
el mensaje, hola otra vez. Ejecuta de nuevo la función, luego va a comenzar de
nuevo en el caso base. Entonces finalmente va a llegar
a un punto en el
que es cero. Entonces va a regresar,
y verás aquí que el mensaje hola se
imprimirá tres veces aquí, dijimos menos uno, y
acabamos de repetir la función para ir una y otra y otra vez. Todo bien. Entonces así es como podemos usar esa
llamada recursiva en este caso Derecha. Bien, entonces eso
es todo en las recursiones, como puedes ver, tendrás tu caso base y
tendrás tu llamada recursiva Y estas e implementación
de recursión, como dije, tiene muchos campos
en los que puedes
utilizar y usar casos, pero es muy útil
si quieres repetir tu función y
ejecutarla hasta llegar a
cierto caso Bien, chicos. Entonces eso
es todo sobre recursión.
92. Comprensiones: Hola a todos. Y bienvenidos
a la siguiente lección, que va a estar
enfocada en la comprensión Entonces echemos un vistazo. Todo bien. Entonces obtenemos dos tipos
de comprensiones. Obtenemos comprensiones de listas, y una comprensión de lista es esencialmente una forma abreviada
o corta de crear una nueva lista
en una sola línea
transformando o
filtrando los elementos
o elementos de un Ahora, la sintaxis
será la siguiente. Tendrás tu expresión, entonces tendrás cuatro HM en
tu picazón entonces por supuesto, también
puedes tener una condición
if también Puedes ver que todo está
escrito en una línea para ti. No tienes que ir
de cabeza y definir, por
ejemplo, tu bucle de cuatro, tu declaración if y hacer eso todo de manera
secuencial. Ahora puedes
seguir adelante y poner
todo esto en una sola expresión. También tenemos
comprensiones de diccionario y una comprensión de diccionario
va a funcionar de manera similar y va a
generar pares de valores clave en una sola línea mientras aplican filtros o
transformaciones Ahora, tiene una sintaxis similar. Tendrás tu expresión clave,
tu expresión de valor, y eso va a
ser cuatro elementos en su, también
tendrás tu bucle y la
declaración if opcional también en términos de la condición I que
quieres utilizar. Comprensiones.
Casi se puede tratar de compararlo en el sentido de cómo es
Lambda a las funciones. Podemos ver comprensiones con comprensiones diccionario y lista Podemos ver que también
va a ser un enfoque más sencillo
cuando queremos tener expresiones de líneas simples
donde queremos
aplicar para bucles
y declaraciones if y también para asegurarnos de
que podemos generar eso configurándolo como una lista o un diccionario
en el proceso.
93. Uso de comprensiones de lista: [Laboratorio]: Hola a todos. Bienvenido al
próximo ejercicio práctico de laboratorio, que va a estar
enfocado en la comprensión de listas Recuerda, lista la comprensión,
tenemos nuestra expresión, luego tenemos nuestro fol, que va a ser para
el ítem en el iterable, y luego también podemos
agregar en una condición if, que también es algo
que puedes agregar si quieres agregar
en algún filtrado Bien. Entonces la expresión part, eso va a
modificar o transformar cada ítem y
generalmente en una lista. Y luego los cuatro
ítems en cada parte, eso va a
recorrer la lista. Y eso va a aportar los valores para nuestra expresión. Derecha. Así que sigamos
adelante y comencemos con algunos ejemplos. Digamos que tengo una
lista de números, y tengo uno, dos, tres, cuatro y cinco. Entonces quiero crear una nueva lista donde cada número sea cuadrado Entonces voy a seguir adelante y definir esta variable
llamada números cuadrados, que
esencialmente va a ser la nueva lista Y para ello, vamos a realizar
alguna comprensión de listas. Ahora, lo primero que
tenemos que hacer es definir la expresión. Entonces,
¿qué queremos hacer? Quiero decir Num
multiplicado por Num. Entonces quiero multiplicar
dos números. Esto va a provenir
de los ítems en la lista de números por el bucle cuatro que dice
cuatro num en números. Así es como vamos a
obtener nuestros valores o ítems. Vamos a ejecutar este
bucle de cuatro y Num por supuesto, va a como va la salida, agarrar cada valor y luego
podemos utilizarlo en
nuestra expresión aquí, que va a
almacenar cada valor con
cada iteración en
la lista a la vez Déjame mostrarte a lo que me
refiero. En un comentario aquí. Entonces tenemos uno, dos,
tres, cuatro y cinco. Entonces cuatro num en números. Primero, vamos a agarrar uno. Ese va a ser el primer número que se
va a poner en bucle. Entonces vamos a tomar uno y decir uno multiplicado por uno. Va a ser uno.
Entonces vamos a bucle al segundo ítem,
que va a ser dos. Entonces hemos agarrado dos aquí de este bucle de cuatro,
y luego podemos decir, con la expresión
aquí a la izquierda, dos multiplicados por dos, eso nos
va a dar cuatro Entonces seguimos adelante y lo volvemos a
mirar. Entonces tenemos tres, y hemos recordado y
hemos recogido tres, y ahora vamos a decir
tres multiplicado por tres, nos
va a dar nueve Entonces pasamos a cuatro ya que ese es el siguiente ítem
en el bucle cuatro, vamos a agarrar cuatro y
decir cuatro multiplicado por cuatro. Eso nos va a dar 16. Entonces con nuestro bucle de cuatro
vamos a recorrerlo y
vamos a agarrar cinco. Entonces podemos decir cinco multiplicado por cinco, eso nos da 25. Si fuéramos a imprimir números al
cuadrado, que ahora va a ser una lista basada en el resultado que
hemos establecido en consecuencia aquí, podemos seguir adelante y ejecutar el
código y aquí obtenemos uno, cuatro, nueve, 16 y 25 Esa es la
forma más sencilla en la que
puedes realizar la comprensión de listas Para elaborar de nuevo, a la izquierda, tenemos nuestra expresión y
eso va a cuadrar cada número como vimos
en el lado derecho, tenemos nuestros iteradores que estamos definiendo
era nuestro cuatro bucle para escoger números uno por uno y el resultado está todo almacenado en
la variable de números cuadrados, que esencialmente va
a ser de un tipo de datos de lista, y luego imprimimos la
salida y todo de que se va a almacenar uno
por uno en la nueva lista. Hagamos otro ejemplo. Digamos que tenemos palabras
y tenemos hola, tenemos mundo, y
tenemos pyson Sigamos adelante y
creamos una lista donde cada palabra necesita tener un punto de
explicación al final. Sólo voy a definir una variable
llamada palabras excitadas. Tenemos que
definir primero nuestra expresión, lo cual prefiero hacer primero. Voy a decir palabra más y ponemos el punto de
explicación. Esto va a estar
basado en el bucle, que va a recorrer todas las palabras por palabra en palabras. Bien, entonces aquí vamos otra vez. Así que vamos a
ejecutar este bucle for, y vamos a
almacenar temporalmente hola y luego
vamos a agarrarlo y utilizarlo aquí en nuestra
expresión y decir hola,
más, y luego el punto de
explicación. Eso va a
guardarlo luego en una nueva lista que
va a saludar. Entonces vamos a
ejecutar este programa otra vez por palabra en palabras y luego vamos a agarrar bien. Se va a almacenar en
la palabra variable word, y luego podemos
simplemente decir word plus, y eso va
a ser como sigue. Entonces vamos a ejecutar de nuevo
nuestro bucle de cuatro. Word va a ser
almacenado en PySon. Entonces podemos simplemente
decir PySon plus y eso va a ser de la siguiente manera Vamos a ejecutar nuestra lista ahora. Palabras emocionadas tiene una nueva lista. Eso va a decir
hola, mundo y PySon. Eso debería ahí vamos. Y esa va
a ser tu salida. Deberías poder hacerte una
idea para el patrón aquí. Bien, genial. Ahora sigamos
adelante y hagamos otra. Éste va a ser para convertir
a mayúsculas. Voy a tener frutas y voy
a tomar manzana Pare naranja. Ahora quiero seguir adelante
y crear una nueva lista. Entonces voy a llamar a este subrayado
mayúscula frutas. Bien. Para que podamos seguir adelante y definir cuál sería nuestra
expresión, yo diría fruta punto superior. Y nuestro lazo sería de
cuatro frutos en frutos. Entonces echemos un vistazo a
lo que estamos haciendo aquí. Entonces cuatro frutas y frutas, vamos a pasar por cada uno de los artículos de forma independiente. Entonces apple, vamos
a almacenar apple, y luego vamos a
decir apple dot upper con este punto mesod superior
y eso va a cambiarlo en apple que
almacenaremos en nuestra lista Entonces continuamos por
frutas y frutos. La fruta se va a
almacenar entonces como par de pera punto superior, eso va a ser pera. Ejecutamos nuestro bucle cuatro de nuevo y luego vamos a agarrar naranja, eso va a ser
almacenado en nuestra variable, y luego podemos decir naranja y superior. Va a ser naranja. Ahora bien, si imprimimos frutas de
subrayado en mayúsculas y
ejecutamos esto, podemos ver que obtenemos manzana, pera y naranja todo en
mayúsculas en nuestra nueva lista Esa es la forma más sencilla en la
que podemos seguir adelante y comenzar con la comprensión
de listas Recuerda que el lado izquierdo
es tu expresión. El lado derecho aquí va
a ser tu bucle de cuatro. Derecha. Así que tenemos
eso en su lugar. Ahora, lo siguiente
que vamos a querer hacer es que vamos a querer trabajar con una
declaración if al respecto. Entonces, sigamos adelante
y miremos eso. Bien, así que agreguemos
una llave en las obras. Entonces queremos trabajar ahora con
nuestros si condicionales, también. Entonces definamos una
lista de números, y voy a decir uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez. Ahora solo queremos mantener
números que son parejos para que
podamos definir nuestra nueva lista por
la variable números pares. Y vamos a
seguir adelante y decir num,
num en este caso sólo va
a actuar como marcador de posición para
ser pasado a nuestra
lista en términos
del resultado final por
iteración que se calcula Entonces vamos a decir
cuatro num en números. Si num, y vamos a sumar el módulo
dos es igual a cero. Entonces queremos verificar si hay
números pares es lo que
estamos haciendo aquí. Bien, así que sigamos adelante y ramificemos por delante
cómo estamos haciendo esto. Tenemos todos los artículos aquí en nuestra lista aquí y vamos
a decir cuatro num en números, y vamos a buscar uno. Tenemos uno aquí
y
luego vamos a comprobar esto si es condicional. Si uno es, por supuesto,
un número par, entonces lo que vamos
a hacer es almacenarlo en el marcador de posición aquí de num y luego lo
agregaremos a la lista Ese es el proceso
aquí esta vez, la expresión aquí de la
izquierda está actuando más como un orden de lugar, yo estaba antes, pero antes seguimos
adelante y realizamos acciones
reales y luego
almacenamos el resultado final, pero es como un
orden de lugar ahora para almacenar el resultado final que
pasaremos a nuestra lista. Entonces en este caso aquí, no
es el caso, así que no vamos
a almacenar nada en NUM en absoluto
porque va a fallar. Si es cierto, entonces va a almacenar
el resultado que podrías decir en NUM que luego se va
a pasar como lista, pero en este caso,
no va a suceder. Entonces vamos
a la siguiente. Entonces dos. Entonces cuatro números
números, tenemos dos. Entonces vamos a comprobar si dos es un número par y lo es, así podemos almacenarlo
en num y decir dos. Entonces vamos a cuatro, y vamos a decir números de
cuatro números, y vamos a entonces
vamos a ir a tres, disculpe. Entonces vamos a comprobar
si tres es un número par. Si no lo es,
va a fallar, y entonces sólo
va a volver a ejecutar
nuestro seguimiento otra vez, lo
cual no lo es Entonces vamos
a mirar cuatro, y vamos a decir
si cuatro un número par. Se almacena en el
resultado para num. Podemos decir cuatro. Tenemos cinco y seguimos haciendo el mismo
resultado hasta conseguir cuatro, seis, ocho y diez. Vamos a hacer
el mismo patrón. Sigamos adelante e
imprima esto para ver si eran correctos. Puedo decir imprimir incluso números de
subrayado
y es correr esto Ahí vamos en nuestra
lista, tenemos dos, cuatro, seis, ocho y diez. Así es como podemos seguir
adelante y utilizarla. Ahora, digamos que queremos que
esto sea más interesante
y sólo
queremos mantener las palabras como
más de cinco letras. Puedo definir una lista de palabras. Voy a decir Apple
y voy a decir plátano y kiwi y
uva y manzana de pino. Y emparejar. Entonces tenemos bastante
ahí en nuestra lista. Ahora queremos definir una nueva variable que va
a ser esencialmente una lista. Solo queremos conservar
palabras que tengan más de cinco
letras en este caso. Entonces vamos a tener palabra como nuestra expresión por
palabra en palabras. Así que vamos a
recorrer todos estos artículos, almacenarlo temporalmente
como palabra aquí. Y entonces lo que
vamos a hacer es que
vamos a comprobar si la longitud con
la función aquí de la palabra es
mayor que cinco, y si lo es,
vamos a referirnos a word aquí como marcador de posición
y luego agregarlo a nuestra lista Bien, así que sigamos
adelante y comencemos
con nuestras pruebas. Cuatro palabras en palabras.
Tenemos Apple. Si la longitud de la palabra
es mayor que cinco, entonces
podemos seguir adelante y
almacenarla en podemos utilizar palabra aquí como un lugar soldado
para almacenarla en nuestra lista. Apple es uno, dos, tres, cuatro, y
vamos a tener cinco. Entonces no es mayor que,
pasamos al siguiente, el plátano. Cuatro palabras en palabras.
A continuación, el plátano. Si la longitud de la palabra
es mayor que cinco, puedes usar Word como soldado de lugar y nosotros podemos
meterla, así uno, dos, tres, cuatro, cinco,
mayor que, pero no. KV es cuatro, así que eso
no va a funcionar. Uva. Eso va a ser cinco, no va a funcionar, piña. Cuatro palabras y palabras,
pasamos por cada una
y si fallan, no
seguimos adelante
y usamos Word como marcador
de posición para
almacenarlo en nuestra lista Sigamos adelante y
miremos la piña. Sí, eso va a
ser mayor a cinco. Usa word como marcador de posición
y podemos ponerlo en mezcla. Entonces tenemos par,
que no sólo va a tener en nuestra
salida lo siguiente. Si digo imprimir palabras de
subrayado largo, eso va a sacar plátano y piña y eso es lo que
obtendrá el resultado al final Correcto, perfecto. Entonces
ahí lo tenemos. Así es como
también podemos utilizar un if condicional así como
si quisiéramos si queremos realizar la comprensión
de listas Entonces ahí lo tenemos. Ahí están los ejemplos
la expresión, nuestro bucle cuatro, el iterable, y nuestro si condicional Bien. Entonces así es como podemos realizar las comprensiones de listas
94. Uso de comprensiones de diccionarios: [Laboratorio]: Hola a todos. Y bienvenidos al próximo ejercicio práctico de
laboratorio, que se centrará en utilizar
las comprensiones de diccionario Así que también
vamos a seguir la misma
estructura como lo hicimos con las comprensiones de listas
para comenzar con nuestras expresiones y
nuestro bucle for primero, y luego luego utilizando
una declaración if también Bien, así que
mantengámoslo simple y comencemos. Entonces primero, voy a
encontrar una lista de palabras. Entonces voy a saludar. Bueno. Adiós. Y
voy a decir, bienvenidos. Entonces quiero definir
mi diccionario. Le voy a dar la variable
nombre de la palabra Enlaces dict. Entonces, esencialmente, lo
que voy a hacer es que voy a crear un
diccionario con tintas de palabras. ¿Bien? Entonces tendremos nuestro
diccionario abierto de la siguiente manera. Vamos a tener
nuestro par de valores clave, y luego
tendremos nuestro bucle for. Ahora voy a decir que
mi clave será la palabra. Entonces voy a usar la función Lang para obtener la longitud total de
caracteres de la palabra, y esto se va a
completar después de
que hayamos corrido nuestro
bucle for de la siguiente manera. Así que de nuevo, voy a poner aquí una opción para que
podamos rastrear todo. Así que aquí hay otros artículos o elementos
a los que puedes referirles como en nuestra lista. Entonces vamos a
correr, antes que nada, por palabra en palabra. Entonces tenemos noticias aquí y vamos a almacenar
temporalmente hola. Entonces vamos a mover
hola aquí a la clave, y esa clave va a entrar en nuestro nuevo diccionario y
va a ser como hola. Después los dos puntos aquí para
separar el valor. Entonces vamos a
obtener la longitud o las longitudes de hola
en caracteres, eso va a ser de cinco
caracteres. Ejecuta nuestro bucle otra vez. Palabra. Vamos
a tomar adiós, almacenarlo como palabra, y
luego podemos almacenar permanentemente
esto en nuestra lista. Aquí lo vamos a mandar
a nuestra expresión. Nuestras expresiones aquí son
esencialmente los marcadores de posición. Vamos a agarrarlo
del bucle cuatro aquí, almacenarlo en palabra temporalmente y luego moverlo a nuestras expresiones, luego lo moveremos a nuestro
diccionario en este caso. Aquí en nuestro marcador de posición, vamos a tener adiós antes de moverlo a nuestra lista Aquí podemos decir bueno ¿por qué? Entonces, ¿cuál es la
duración del adiós? Van a ser
siete personajes. Entonces por palabra y palabras, vamos a luego
tomar la bienvenida y luego vamos a moverla
a nuestro marcador de posición de palabra, que luego va
a ser bienvenido Entonces vamos a enchufarlo aquí por el valor de
los largos de bienvenida, que va a ser siete. Ahora si decimos print, subrayamos longitudes,
subrayamos Aquí tenemos este diccionario, este nuevo diccionario, hola cinco. Adiós, siete. Bienvenida, siete. Entonces está en parte de valor clave. Entonces las claves son hola,
adiós y bienvenida. Y el valor está siendo
cinco, siete y siete. Derecha. Entonces esa es una
forma sencilla de cómo podemos hacerlo. Sigamos adelante y pongamos un
poco más de práctica. Digamos que queremos seguir adelante y hacer una
representación de número a cadena, por ejemplo. Entonces voy a tener
una lista de números. Y voy a tener uno, dos, tres, cuatro y cinco. Entonces voy a crear
un diccionario donde los números son claves y
los valores son cadenas. Bien. Entonces hagámoslo. Voy a decir palabras de
subrayado numérico, y vamos a tener un
diccionario de eso Entonces primero tendremos la llave. Eso va a ser
num y luego
vamos a convertir a string, el número en sí,
y vamos a decir cuatro num en números. Bien, entonces echemos un vistazo
aquí. Cuatro números de números. Estos son todos como podemos ver
enteros en formato entero. Vamos a decir
cuatro números y vamos a recoger Num, pasarlo a num aquí y lo
vamos a almacenar en
nuestro diccionario, tal como es. Tendremos uno como nuestra clave. Entonces el valor aquí también
va a ser técnicamente uno, pero vamos a
lanzarlo a una cadena, significa
que va a
estar entre comillas ese valor. Entonces tenemos cuatro números num. Ir al segundo
resultado, que es dos, tomar dos, pasarlo
al cupo para que podamos almacenarlo en nuestro nuevo diccionario. Serán dos. Entonces vamos a convertirlo
aquí en una cadena para el valor y eso va
a ser solo entre comillas dos. Nosotros hacemos lo mismo para tres, así que sigamos adelante y hagamos eso. Entonces para los números
numéricos, a continuación, tenemos tres, agarra tres, pásalo aquí a nuestro
lugaretero, y esa va a
ser tres es la clave. Entonces vamos a
enchufarlo aquí en el valor, así que queremos
convertirlo en una cadena, y luego obtenemos tres. Creo que ya entiendes la idea, y vamos a hacer lo
mismo por cuatro y cinco. Entonces cuando seguimos adelante e
imprimimos
palabras de subrayado numérico , obtenemos este diccionario, como se puede ver aquí en
lo siguiente, uno,
uno, dos, dos, tres,
tres, 44, cinco,
cinco, con la clave
restante como un entero en su forma cruda y los valores se convierten a un auricular de cadena
estando entre Así es como podemos seguir
adelante y configurarlo. Bien, ahora sigamos adelante
y hagamos otro ejemplo aquí, y aquí queremos mapear
números a sus cubos. Bien, así que sigamos
adelante y hagamos eso. Entonces números, iguales, y
vamos a tener uno, dos, tres, cuatro y cinco. Bien, ahora queremos
crear un diccionario donde las claves sean números y
los valores sean sus cubos. Entonces voy a definir una
variable como cubo dict. Bien. Y eso va
a ser un diccionario. Vamos a tener num
como clave y luego
num y luego asteriscos dobles Entonces eso va a seguir adelante y asegurar que
tengamos el resultado en cubos, y va a ser dos, tres,
cuatro, num en números Bien. Entonces sigamos adelante
y hagamos precisamente eso. Para num en números, necesitamos asegurarnos de que
tenemos nuestro ¿cómo
puedo decir formato de explicación? A números de cuatro números. Primero, tenemos uno, agarra uno. Entonces lo vamos a
pasar aquí a num y esa va a ser
una como la clave. Y uno a uno cubos nos va a
dar esencialmente el resultado de uno Todo bien. Entonces para
num en números ,
bien, vamos a tener dos. Entonces tenemos dos aquí, transportados allá como la clave, dos, y el valor ahí. Entonces dos cubos esencialmente nos
va a dar el resultado
de ocho como valor Vuelva a ir, cuatro números de número. Ahora vamos a trabajar
con tres. Toma tres, muévalo
al marcador de posición, que podamos prepararlo
para nuestro diccionario Lo llevamos ahí y eso
nos
va a dar esencialmente tres y luego
vamos a decir tres, claro, en cubos y eso nos
va a dar 27 Eso va a seguir adelante y hacer el mismo resultado
para cuatro y cinco. Podemos obtener la
salida final diciendo print, cube dink ahí
obtenemos lo siguiente Teníamos uno, ocho, 27, y por supuesto,
tenemos 64 y 125, cinco cubos, cuatro cubos,
etcétera, y así es como podemos mapear números
a Derecha. Creo que ahora debemos tener confianza con
la idea de que a la izquierda, tenemos nuestra expresión
y a la derecha, tenemos nuestro bucle for y
lo iterable y solo
vamos a utilizar nuestras expresiones
después de que tengamos un resultado Si tenemos que realizar
algún cálculo, ese resultado final
irá a nuestro diccionario, en este caso o si estamos trabajando con listas en la lista. Si no necesitamos
realizar un cálculo, simplemente
podemos
seguir adelante y deslizarlo hacia adentro. Derecha. Perfecto. Bien,
así que eso es bueno. Ahora, lo siguiente que
vamos a hacer es trabajar con nuestras condiciones if. Así
que comencemos. Entonces voy a
seguir adelante y decir palabras, y vamos a tener manzana, pera, naranja fresa. Y grep. Hay todos
los artículos en mi lista. Ahora quiero crear
un diccionario donde las claves sean palabras y los
valores sean su longitud, pero sólo para palabras de
más de cinco letras. Definamos ese diccionario. Yo lo llamaré palabras largas, es igual aquí dentro de
mi diccionario, vamos a tener
palabra como clave y entonces las longitudes aquí de la
palabra serían el valor, y eso va a
ser por palabra en palabras si la longitud de la palabra
es mayor que cinco. Bien, así que sigamos adelante
y trabajemos en este proceso. Entonces primero, tenemos que
mirar nuestro bucle de cuatro. Entonces cuatro palabras en palabras. Así que vamos a recorrer todos estos elementos de la lista. Entonces primero, tenemos a Apple.
Apple, podemos ver es uno, dos, tres, cuatro, cinco. Podemos ver que se
trata de cinco caracteres. Entonces, si la longitud de la
palabra es mayor que cinco, entonces podemos
seguir adelante y hacer uso de esta expresión en particular. Si no es el
caso, si es falso, entonces simplemente pasamos
al siguiente ítem en el bucle. Bien, tan falso,
no seguimos. Si es cierto, solo agregamos true a nuestro nuevo
diccionario en este caso. Nos movemos para emparejar. Podemos
simplemente ver par no es cinco, así podemos saltarnos naranja, uno, dos, tres, cuatro,
cinco, seis, naranja. Para palabra y palabras,
tenemos naranja. Si la longitud es
mayor a cinco, es de seis. Entonces vamos a establecer que vamos a sustituirlo
o enviarlo a word como marcador de posición para pasar por nuestro nuevo
diccionario que estamos creando y que esencialmente va
a estar entre comillas Vamos a tener naranja. Colón. Y entonces necesitamos la
longitud de la palabra ahí. Entonces en nuestro caso aquí
, van a ser seis. Entonces podemos agregar en nuestra coma. Después vamos a la fresa. Ya podemos ver
que es mayor cinco, así podemos ver
uno, dos, tres, cuatro, cinco, seis, siete,
ocho, nueve, diez. Entonces cuatro palabras y palabras. Ahora estamos en fresa. Es mayor que
cinco, es diez. Entonces esa palabra en particular, vamos a tomar el
relevo de aquí a palabra aquí, y ahora realmente podemos agregar la palabra a nuestro
diccionario, fresa. Y el valor aquí,
la longitud de la misma es de diez caracteres,
por lo que podemos decir diez. Bien, vamos a estafar. Entonces tenemos uva, y la uva es sólo cinco,
así que eso no va a funcionar. Entonces solo tendremos
estos dos artículos. Entonces podemos decir imprimir.
Palabras largas. Y ahí lo tenemos. Tenemos nuestro nuevo diccionario
con nuestro par clave valor, nuestra clave aquí es
naranja, valor seis, clave siendo fresa, valor diez. Bien,
ahí lo tenemos. Bien, sigamos adelante
y hagamos otra. Y eso va a filtrar números
pares y duplicarlos. Entonces tendremos una lista de
los números uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve y diez. Entonces queremos configurar un diccionario donde los números
pares sean claves y los valores
dupliquen su valor. Entonces estableceré la variable
como dobles pares. Esto va a
ser esencialmente un diccionario, así que tendremos Num. Entonces tendremos Num multiplicado
por dos para el valor, y entonces nuestro bucle
será cuatro num en números
si num sumar el módulo
dos dobles es igual a cero. Vamos a comprobar si
es, claro, incluso también. Ese es el filtro en el sigamos adelante y hagamos
los cálculos. Cuatro números en números.
Vamos a repasarlos. Tenemos uno. Ahora bien,
si num es par, podemos ir a la expresión, pero no es para que podamos saltarnos. Cuatro num en números,
vamos a dos. Si el número es par, lo es, son dos, así
podemos seguir adelante aquí. El num será dos, esa será la clave porque estamos trabajando
con un diccionario, y eso va a ser dos, dos por dos, eso nos
va a dar cuatro. Ocho. Pasemos al siguiente. Tres, tres ni siquiera es par. Entonces lo que puedes hacer es saber que si miras
el condicional I, automáticamente
puedes
simplemente verificar allí rápidamente para ver si va
a coincidir con un caso determinado, y si no hace falta que te
preocupes por completarlo todo
y asignarlo Cuatro va a estar parejo. Cuatro números nomen, hemos comprobado tres,
vamos a mirar cuatro Es incluso
según nuestro si condicional. Vamos a colocar
cuatro como llave. Entonces vamos a
decir cuatro veces dos. Ese será el resultado
final que
almacenamos aquí y
allá tenemos cuatro. Cinco es impar, seis es par. Podemos decir cuatro num en números. Si el número es par, seis es. Entonces podemos mover seis aquí
al marcador de posición de num, lo que significa que podemos
ponerlo en nuestro nuevo diccionario, que va a
ser seis como clave Entonces diríamos seis veces dos, y eso nos va a dar 12. Bien, entonces ese es un proceso que seguimos
y seguimos y seguimos. Sólo tenemos ocho y
diez entonces para evaluar. Así que vamos a seguir adelante e imprimir
esto para ver el resultado. Entonces doble iguala. Y sigamos adelante y ejecutemos esto. Y aquí podemos ver que
tenemos ese resultado. Entonces hicimos el primero
hasta seis aquí, y luego tenemos
ocho, 16, diez y 20. Entonces pudimos ver que ocho
y diez van a ser enviados al lugar orden de Num pasado
al nuevo diccionario, y luego 16 y 20 también. Bien, entonces 16 y 20, podemos ver que se
derivó multiplicando ocho por dos y luego diez por dos
también. Bien, chicos. Eso es. Así es como podemos utilizar la
comprensión del diccionario Como puede ver, es un proceso
bastante simple y cómo podemos
utilizarlo. Eso es.
95. Hilos y procesos: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en hilos y procesos.
Entonces echemos un vistazo. Correcto, entonces
lo primero que necesitamos entender es
qué es un hilo. Entonces, un hilo es esencialmente
una unidad ligera de ejecución que
se ejecuta de forma independiente mientras comparte memoria
con otros hilos. Por lo tanto, puede intentar
pensar en un hilo como un trabajador en una línea de
ensamblaje donde cada hilo maneja una tarea y múltiples hilos pueden
trabajar simultáneamente para acelerar el procesamiento. Ahora echemos un vistazo a
los beneficios de los hilos. Entonces los hilos dentro de un proceso
usaron la misma memoria. Consumen menos recursos
y son eficientes. También son muy ideales
para tareas específicas que requieren esperar en
entrada o salida. Y otra cosa importante que hay que
saber es que iniciar un hilo es más rápido que
lanzar un proceso. Ahora echemos un vistazo a las limitaciones de
los jirones. Ahora, los hilos
se turnan para correr debido
al bloqueo global del intérprete comúnmente conocido como GIL. Los hilos no se pueden
detener por la fuerza una vez iniciados, así que eso es lo desafortunado en lo que respecta a los hilos, a diferencia de un proceso
que se puede Una vez iniciado, un hilo no puede. Y una cosa importante que debe
saber aquí es que los datos
compartidos pueden causar problemas
impredecibles. En otras palabras, elevar
las condiciones que pueden ocurrir si
se comparten datos. Ahora, tampoco hay mejora de
velocidad para ningún trabajo intensivo de CPU que
esté ocurriendo con subprocesos. Ahora, echemos un vistazo a
los procesos. Entonces un proceso. Un proceso es un programa activo con memoria
y recursos propios. Ahora, una forma más sencilla de ver un proceso es
pensarlo como una aplicación separada
en tu computadora o
una en tu computadora o especie de utilidad específica en segundo plano,
donde cada uno
se ejecuta de forma independiente sin compartir
memoria con los demás. Ahora bien, en cuanto a las aplicaciones aquí, me refiero a, por ejemplo, digamos que tienes
Microsoft Word abierto, eso se contaría como una app, o si también tienes como una
aplicación como Discord abierta o si tuvieras que
tener Spotify abierto o Steam
o Google Chrome o algo así, puedes verlo
en ese tipo de aspecto Ahora hay bastantes
beneficios de los procesos,
así que echemos un vistazo. Para que puedan utilizar completamente
múltiples CPU y núcleos. Cada proceso tiene su propia memoria, por lo que esto ayuda a mantener
sus datos separados. También es muy ideal
para tareas que requieren un procesamiento
pesado de CPU
a diferencia de los hilos. Lo importante a tener en cuenta
es que los procesos pueden ejecutarse de forma independiente sin
depender el uno del otro. Y se pueden detener o
interrumpir en cualquier momento, lo cual es uno de los
mejores beneficios que
podrías tener con respecto
a los procesos. Cada proceso tiene su propio gel,
GIL, evitando los
límites de enhebrado de Pitones que se imponen Ahora también hay, por supuesto, algunas limitaciones
de procesos también. Podemos ver que los procesos utilizan más recursos del sistema en comparación con los hilos
que usan menos. Además, si quieres seguir
adelante y crear un proceso, va a tomar
más tiempo que iniciar un hilo. Otra cosa que es lamentable
es que cada proceso requiere más memoria
ya que no la comparten. La comunicación entre
procesos es bastante compleja y requiere un
manejo extra, desafortunadamente. Y lo último que quiero
mencionar sobre una limitación de procesos es que
cambiar entre procesos
puede ser bastante lento, y esto tendrá un impacto en el rendimiento
debido a la sobrecarga. Chicos. Entonces eso es todo para
el panorama teórico. Yo solo quería
llevarte a través de
la supervisión teórica en
cuanto a qué son los hilos, qué son los procesos,
y darte alguna información sobre sus
beneficios y limitaciones. Y como se puede ver, es casi
como si donde uno sufre, el otro prospera, se
podría decir Pero en cualquier caso, eso es
todo por esta lección.
96. Multiprocesamiento: Hola a todos, y bienvenidos
a la siguiente lección, que va a estar enfocada en el multiprocesamiento. Entonces
echemos un vistazo. Correcto, por lo que
el multiprocesamiento permite que
un programa ejecute múltiples
procesos de forma independiente, cada uno con su propia
memoria y recursos Ahora, también maximiza el uso de la
CPU al distribuir cálculos
pesados en múltiples núcleos para un
mejor
97. Multihilo: Hola a todos, y bienvenidos
a la siguiente lección, que va a ser
en multi threading Entonces echemos un vistazo. Correcto, entonces multi threading es un sistema que
permite que un programa ejecute múltiples hilos
dentro del mismo proceso para que puedas compartir tus recuerdos y
también tus recursos También permite que las tareas se
ejecuten simultáneamente sin la sobrecarga de crear procesos
separados Todo bien. Así que sigamos
adelante y adentrémonos en lo práctico
sobre multi shreading
98. Integración de multiprocesamiento - [Lab]: Hola a todos, y bienvenidos al próximo ejercicio práctico de
laboratorio, que se centrará en utilizar el procesamiento múltiple. Así que comencemos. Primero, queremos importar el módulo de procesamiento
múltiple. Entonces queremos importar el módulo de tiempo para que podamos
utilizar la función sleep. A continuación, queremos definir la función que se va a
ejecutar en un proceso separado. Voy a decir trabajador sordo, va a ser una función. Todo lo que voy a hacer es
llamar al módulo de tiempo y quiero definir mi función de
suspensión y quiero mantener vivo el proceso durante al
menos 20 segundos para que
podamos verlo en el administrador de tareas o
en nuestro gestor de actividades. En este momento
lo siguiente que tenemos que
hacer es asegurarnos de que el código solo se ejecute cuando este
archivo se ejecute directamente, y eso va a
ser visto como un proceso. Y para asegurar que ese
va a ser el caso, podemos utilizar esta
declaración if que dice
que nombre,
doble subrayado es
igual o equivalente
a doble subrayado principal, doble subrayado Bien, déjame explicarte. Entonces probablemente te estés
preguntando qué es el nombre de doble subrayado Entonces esta es una variable especial incorporada
que obtenemos en Python que va a contener el nombre de nuestro
script o nuestro módulo. Después tenemos subrayado
principal doble subrayado. Y esto va a comprobar
si el script se está
ejecutando directamente y que
no se importa como módulo. Derecha. Entonces es muy
importante que tengamos esto sin esta comprobación
que estamos realizando aquí, el script podría
seguir adelante y seguir creando nuevos procesos indefinidamente
y fallar al final Entonces es muy importante
que lo tengamos. Esto será visto como
nuestro primer proceso, nuestro script Python, y luego nuestro segundo proceso
será esta función worker. Entonces ya podemos definir eso. Diré proceso uno. Y podemos decir esto como
proceso. Vamos a continuar. Ahora, lo siguiente que
vamos a querer hacer es
crear un nuevo proceso que vaya a ejecutar nuestra función
worker. Voy a decir proceso es igual, y voy a decir
multiprocesamiento. Vamos a referirnos
a ese módulo punto, y vamos a referirnos
a la clase process y luego vamos
a pasar por el parámetro target
y configurarlo en worker. Echemos un vistazo
aquí. Ahora proceso aquí es una clase del módulo
multiprocesamiento, y va a
ser utilizada para crear un nuevo proceso que
actualmente está haciendo
buscando un target, que va a ser worker como el proceso elegido que se
va a emprender Ahora, arget como mencioné
antes, es un parámetro, y eso va a especificar la función que se debe
ejecutar en el nuevo proceso, que va a ser worker Probablemente se pregunten,
si esto es una función, ¿por qué no la llamamos o
agregamos entre paréntesis Entonces estamos pasando esta función
obrera sin parenses porque queremos
pasar la función en sí y no el resultado
de llamarla realmente Bien. Ahora bien, este proceso
aquí que hemos definido va a ser almacenado en esta variable llamada process. Bien. Ahora lo que queremos hacer es que queremos seguir adelante
e iniciar el proceso. Voy a decir que
procese el almidón de punto usando el método del almidón, y eso va a
iniciar el proceso, y eso va a hacer que
se ejecute en segundo plano. Ahora, en cuanto se inicie ese
proceso, queremos simplemente agregar en una sentencia print para
decirnos que el proceso ha iniciado y que necesitamos
revisar el administrador de tareas
porque recuerden, solo lo vamos a
ver durante 20 segundos. Todo bien. Entonces lo que podemos hacer
es simplemente decir print, y vamos a
decir proceso iniciado. Entonces podemos decir
check task manager. Y si estás utilizando macOS, se llamará Activity
Manager, que podrás comprobar. Justo a continuación, tenemos
que decir proceso punto join, y este es un método de unión, y eso va a esperar a el proceso termine
antes de continuar. Por lo que va a bloquear cualquier otra ejecución de
código al final, queremos decir
proceso de impresión terminado. Ahí vamos. Bien, así que eso es todo lo que necesitamos
para tener en su lugar aquí. Así que tendremos nuestro proceso
predeterminado en segundo plano
para el script Python, y luego el proceso que realmente
creamos ahora, que va a
ser una función que estamos configurando aquí en consecuencia. Bien, así que eso es lo que
tenemos aquí en su lugar
y listos para ir. Todo bien. Ahora, si
estás en Windows, puedes simplemente abrir
tu administrador de tareas. Simplemente puedes
buscarlo administrador de tareas, y puedes abrirlo. Ya lo tienes abierto,
y lo que puedes hacer es asegurarte de que estás haciendo click en los procesos aquí a la izquierda, y simplemente puedes escribir
Pierson y presionar Andrew Ahora, a partir de ahora, no
va a mostrar nada
porque no hemos ejecutado nuestro script una vez que tenemos el script aquí se va
a ejecutar como un proceso, y luego también va
a crear un nuevo proceso aquí agregando en esta función en
particular. Bien, así que asegúrate de
que estás bien con todo eso, y luego podremos seguir
adelante y continuar. Derecha. Ahora podemos
seguir adelante y ejecutar nuestro código. Aquí dice proceso
declarado cheque administrador de tareas. Se puede ver que tenemos un proceso en
segundo plano y dos procesos aquí ejecutándose
y cada uno de ellos, por supuesto, son parte del script Python y esta función que
creamos también
se ha puesto en marcha y también
podemos ver alguna información aquí en términos de cuánto se está utilizando
en términos de megabyte Se puede ver que se detuvo, pero sólo
podemos volver a ejecutarlo de nuevo. Y volver atrás y sólo podemos seguir adelante y ver
cuánto se está utilizando. Entonces vimos esa CPU por un momento ahí el uso
era como 0.2%, así que es muy, muy
bajo y se fue. Y podemos ver alguna
información aquí en la sección de memoria
aquí en términos de cuánto megabyte
se está utilizando y general para los procesos de
fondo y ellos por separado también Derecha. Entonces ahí lo tenemos. Así es como podemos utilizar el
multiprocesamiento en pyson. Bien, así que eso es todo.
99. Integrar varios hilos: [Lab]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en multithreading Ahora, claro, lo que
voy a hacer es simplemente adaptarme al código que teníamos antes para el
multiprocesamiento Gran parte del programa que estamos
creando aquí va a tener similitudes con cuando
utilizamos el multiprocesamiento Vamos a hacer algunos ajustes y
voy a contarles las nuevas cosas aquí que van a hacer que el
enhebrado sea distinto Simplemente puedes seguir adelante
y mantener tu código igual que está y lo que
vamos a hacer es simplemente ajustarlo. Por supuesto, ahora vamos a trabajar
con multi-threading. Simplemente podemos eliminar
este módulo en multiprocesamiento
y podemos
reemplazarlo con el módulo de threading. Esto
nos va a permitir crear hilos. Nuevamente, vamos a hacer
uso del módulo de tiempo para que podamos utilizar
la función de suspensión. Va a tener una
función worker como antes, y nos vamos
a asegurar que
configuramos el temporizador de reposo
a 20 segundos. Por supuesto, todavía vamos
a hacer uso de nuestro nombre de subrayado, nuestro especial construido en
variable, debería decir A va a utilizar eso. Nuevamente, vamos a utilizar doble subrayado principal
doble subrayado y eso va a gustar que
mencioné antes, asegúrese de que el script se esté ejecutando y en general
solo vamos a
asegurarnos con esta declaración if que no tenemos ningún crashers
ni nada Lo siguiente que queremos
hacer es crear un hilo. En lugar de decir proceso,
vamos a decir hilo, y vamos a seguir
adelante y reemplazar multiprocesamiento con el módulo de
threading que tenemos Entonces lo que vamos
a hacer es reemplazar la clase de proceso
con una clase de hilo. En esta línea de código,
vamos a hacer lo mismo, pero vamos a crear
un nuevo hilo que ejecute la función worker
como hicimos antes. Entonces en lugar de
iniciar el proceso, vamos a iniciar el hilo. Vamos a decir leer
almidón aquí al final, también
vamos a
ir en un seto y decir triturar punto unirse también Podemos simplemente cambiar aquí el
texto para decir hilo iniciado. Y hilo terminado. Bien, así que esos son los
ajustes que tenemos aquí, y podemos simplemente quitar
lo que tenemos aquí. Todo bien. Y ya
lo tenemos fuera del camino. Así que tenemos todo tal cual. Ahora bien, no hay realmente
muy diferente aquí, así que con hilo punto start, solo para reiterar,
va a iniciar el hilo. Va a correr
en segundo plano. Y con thread dot join
aquí, bien, esencialmente, solo
vamos a esperar a que termine
el hilo antes continuar con
el resto de nuestro código. Bien. Ahora, otra
cosa que también quiero seguir adelante y mencionar
aquí es un poco en detalle con estos mensaje
punto inicio y punto Join. Ahora, punto Inicio, es muy importante estar en
su lugar ya
que si no especificamos punto Inicio, el hilo comenzará a correr. Si no tenemos punto join, entonces el programa
va a salir antes de que el hilo
complete su tarea. Estas son las
razones por las que la necesitamos en este caso de uso particular. Bien. Y lo que podemos hacer
ahora es que podemos ir a una cobertura y ejecutar el código y ver
la salida como va Todo bien. Entonces, sigamos adelante y ejecutemos esto y
veamos qué ocurre. Ahora, quiero hacer
esto un poco más largo, así que voy a establecer
esto por 30 segundos. Voy a ejecutar
el código. Cheque. Como puedes ver, aquí solo tenemos
un proceso ejecutándose. Esa es una buena indicación que estamos usando la
trituración porque recuerden en la lección
teórica, dije que cuando se está trabajando con el enhebrado multi
Shreadingo, como resultado, sólo
va a haber un proceso solo y que los
hilos comparten
un proceso A pesar de que tenemos
dos hilos aquí, tengo uno que hemos definido con nuestra función y
nuestro script predeterminado uno con todos los scripts de Python en sí va a
ser incluido como uno. Esa es la
razón de eso. Sólo tienes que seguir adelante y correr por
eso lo tenemos. Podemos ver, claro,
tenemos algo de memoria
aquí en términos de 3.9 megabyte también y
podemos ver que no es muy
pesado en la CPU, el disco o
la red como este momento con este proceso
en particular Como pueden ver,
así es como esto va algo importante
aquí para recordar, ya que solo tenemos un
proceso al ir a compartir memoria con
el proceso principal que esto pueda ser eficiente. La razón por la que solo
en lugar de un proceso solo es por el hecho de
que Pisón está usando el gel, el GIL que mencioné antes Ese es el bloqueo global del
intérprete. Eso va a asegurar
que solo un subproceso se ejecute a la vez en un solo proceso
PySon A pesar de que tenemos
múltiples hilos aquí, tenemos dos de
ellos, no van a aparecer como un proceso separado
en el administrador de tareas. Como viste dentro de ese proceso, van a compartir el
mismo espacio de memoria y trabajar dentro del mismo proceso PySon Así es
como podemos diferenciar también la diferencia entre nuestros hilos y nuestros procesos con procesamiento múltiple
y roscado múltiple Todo bien. Lo que queremos
hacer ahora es simplemente limpiar nuestros recursos para que podamos simplemente resaltar todo el
código aquí y eliminarlo. Lo que también podemos
hacer es simplemente eliminar cualquier otro archivo que tengamos
excepto el pastel de puntos principal, para que podamos seguir adelante y
simplemente borrarlos. Bien. Y el último. Ahí vamos. Hasta que
tengamos doppie principal Entonces, si tienes algo más,
adelante y límpialo. solo estamos realizando
una especie
de curso Mientras tanto, solo estamos realizando
una especie
de curso de limpieza
de recursos Hay más por venir,
pero solo queremos limpiar todo lo que tenemos aquí. Bien, entonces eso es todo.
100. Pruebas de unidad: Hola a todos. Bienvenidos
a la siguiente lección, que va a estar
enfocada a las pruebas unitarias. Echemos un vistazo. Pruebas unitarias. En Python, las pruebas unitarias
implican probar componentes
individuales de código para verificar que
funcionan como se esperaba. Ahora, una unidad
suele ser una función o método que realiza
una tarea específica. Y la siguiente pregunta que probablemente
nos estemos preguntando es, ¿por qué deberías realizar
estas pruebas unitarias? Entonces tengo algunas razones de por qué deberíamos hacerlo, e incluyen detectar
errores temprano para mejorar la legibilidad del
código
y también para que los cambios de
código sean mucho más seguros, chicos Entonces eso es solo un poco de
una visión general teórica en términos de
pruebas unitarias, pruebas unitarias. Y ahora en el laboratorio
práctico excis que va a surgir, vamos a
profundizar en cómo
realmente podemos aplicar esto
101. Realiza pruebas unitarias estándar: [Laboratorio]: Hola a todos y bienvenidos al próximo ejercicio práctico de
laboratorio, que va a estar
enfocado en las pruebas unitarias. Ahora, lo primero que
vamos a hacer antes de sumergirnos demasiado en la
prueba unitaria es que
vamos a seguir adelante y crear una prueba unitaria muy estándar solo para ver cómo funciona el
proceso, bien. Todo bien. Ahora, lo
primero que quieres hacer es importar el módulo de prueba unitaria, que es un módulo incorporado
que se utiliza para probar. Entonces queremos definir la
función que queremos probar. Esta función va a ser una simple función add
para sumar dos números. Va a tomar
en dos parámetros y va a devolver A
más B una vez que se le haya llamado. Ahora, esta función
agregará dos números y
va a devolver la
suma de A y B. Queremos probar esta función. Ahora para hacerlo, lo que
tendríamos que
hacer es crear una
clase de prueba para pruebas unitarias. Podemos decir clase, prueba. Misa. Ahora, cada
caja de ajedrez debe heredar de la caja de ajedrez de prueba unitaria Para hacerlo,
tendríamos que seguir adelante
y pasar a través del cofre de unidad, punto, estuche de cofre, esto es esencialmente una
clase pyson incorporada que utilizaríamos Eso esencialmente va a ser heredado del caso de
prueba de unidad. Ya tenemos eso en su lugar. Lo siguiente que
tenemos que hacer es definir un método de prueba ahora. Dentro de esta clase,
necesitamos decir sordos y podemos decir
cofre, subrayado ad Ahora bien, algo que
debes tener en cuenta aquí con tus mensajes de prueba guión bajo tiene que ser siempre la primera parte de
la declaración aquí es tu función
en todo momento Lo que te pongas después, realmente depende de ti
lo que quieras hacer. Vamos a
pasar por uno mismo. Ahora bien, este va a ser un método de
prueba que comprobará si la función add está funcionando correctamente y
el nombre de la función, como mencioné, necesita
comenzar con cofre y subrayado para que nuestra prueba
unitaria la reconozca como cofre Esa es la razón por la
que necesitamos agregarla así. Tenemos yo otra vez aquí porque
eso va a representar la instancia de nuestra clase de caso de
prueba y va a dar acceso a todos los métodos que
son proporcionados por la clase de prueba que
estamos heredando aquí Lo siguiente que
queremos hacer es que
ahora queremos seguir adelante y establecer nuestro método aquí
diciendo self dot, y vamos a
usar un método especial conocido como assert equal, y vamos a
pasar por la función, que se va a llamar
add que vamos a jugar por aquí dos y
tres como muestra, y luego queremos tener cinco Entonces lo que vamos a poner aquí entre paréntesis
va a ser lo que realmente
queremos esperar, y luego afuera va
a ser el resultado real Bien. Entonces el método self assert
equal va a verificar resultado
esperado y real para verificar si los
valores son iguales En este caso aquí, con lo que
se espera,
tenemos dos y tres, por
ejemplo, y dos
más tres equivale a cinco, y el real
va a ser cinco. Eso es
lo que debería ser. Bien. Ahora, si a las dos y a las tres, devuelve cinco, entonces pasa
el pecho. Si devuelve algo más, entonces el pecho va a fallar. Bien. Todo bien. Entonces sigamos
adelante y continuemos. Así que tenemos esa configuración. Ahora lo siguiente que tenemos que hacer es justo aquí
del lado izquierdo, queremos seguir adelante
y correr el ajedrez. Entonces para hacerlo, necesitamos
asegurarnos de que el script se ejecute solo cuando lo hayamos
ejecutado directamente. Entonces para hacerlo, vamos a
decir doble subrayado nombre. La puntuación es igual a, en doble subrayado principal Bien. Ahora bien, lo que estamos haciendo
aquí es que estamos comprobando si había esta línea aquí, esencialmente vamos a comprobar que estamos utilizando
este script de Pierson, y no es un módulo ni nada que estemos importando,
nada por el estilo, y se ve como una condición especial que
normalmente utilizamos en pyson Y es algo
que también utilizamos con el procesamiento y el enhebrado si también estamos tratando con procesamiento
múltiple y
enhebrado Se va a asegurar
que la prueba unitaria main se ejecute solo cuando el script se ejecute directamente
como mencioné antes, y por eso tenemos que hacerlo. Ahora, lo que podemos hacer después eso es que podemos definir la prueba unitaria, y tenemos que referirnos
a ella como principal aquí, y
esa va a ser una función
incorporada que necesitamos usar, y eso va a encontrar todos los métodos de prueba que
hemos definido. Los va a correr
uno por uno y va a buscar
específicamente el mensaje de prueba que comience con pecho
y subrayado Entonces va a
informar qué
pase de prueba y cuál falló. Este mensaje principal que estamos
agregando a la prueba unitaria es solo un método simple
del módulo de prueba unitaria que tenemos aquí que inicia
el corredor de prueba. Entonces eso es esencialmente
lo que está pasando aquí. Así que solo podemos alejar el
zoom para que podamos ver el código completo y
guardar este archivo. Sigamos adelante y ejecutarlo. Aquí podemos ver que tenemos punto, las líneas y ejecutamos una prueba, y voy a mover esto hacia
arriba, y dice, Bien, así que sigamos adelante y depuremos
cómo esto realmente está funcionando. Entonces lo que tenemos aquí es un punto y la anotación significa
que se pasó el cofre Ejecutó una prueba aquí, significa que se ejecutó un
caso de prueba. Entonces seguimos adelante para probar este sencillo mensaje aquí
sobre las matemáticas. Entonces Bien aquí significa que todas las
aseveraciones fueron exitosas. Aquí tenemos una aseveración, por ejemplo, y va a demostrar
que fue un éxito Bien, así que esa es la forma más sencilla en la
que puedes ir a una cobertura y ejecutar tus
pruebas en Python Entonces vamos a hacer
algunos ejemplos más. Entonces sigamos adelante
y hagamos precisamente eso. Vamos
a necesitar asegurarnos de que
utilizamos el módulo de prueba de la unidad, así que vamos a quedar atrapados
en. Todo bien. Entonces lo que vamos a hacer ahora es que vamos
a probar una función para comprobar si un número es par.
Sigamos adelante y hagamos eso. Voy a decir que D
es subrayado par. Vamos a pasar por
el parámetro number, y queremos devolver true si el número es par, de
lo contrario false. Vamos a decir número de
retorno, y en el módulo dos, doble es igual a cero. Los números pares no tienen resto cuando se dividen por dos. Eso es esencialmente
lo que está pasando aquí para verificar un número que sea par. Hagamos nuestros casos de ajedrez. Nuevamente, necesitamos definir
una clase y
vamos a llamar a esta
prueba números pares. Tenemos que pasar a través la prueba unitaria punto prueba K tenemos que pasar a través de
esa clase desde el módulo. Eso va a crear
una clase de caso de prueba. Entonces necesitamos definir
nuestros casos de ajedrez. Aquí voy a
decir sordo, pecho, subrayado par,
subrayado número, y aquí vamos a decir auto Y entonces tenemos que
sumar en nuestras aseveraciones. Voy a decir self jot afirmar verdad, y aquí vamos
a pasar por nuestra función, que va a ser
es subrayado par, y diremos cuatro, Entonces queremos
probar un número impar para ver si falla,
por lo que debería fallar. Se puede decir de, probar
subrayado número impar, y luego aquí
pasaremos por uno mismo Y vamos a decir
auto punto una búsqueda. Cierto, y vamos
a pasar a través es subrayar incluso
la función y cinco Entonces vamos a decir
de test subrayado cero. A través de uno mismo, podemos
decir auto búsqueda de puntos. Cierto. Y entonces queremos comprobar la función si
pasamos por cero. Entonces lo que hacemos en línea con el clasier
que hemos definido, queremos ejecutar la prueba cuando se ejecute
el script, así podemos decir que doblo el nombre de
subrayado, doble guión bajo, igual a principal Así que estamos utilizando este script
en particular. Entonces podemos ejecutar pruebas unitarias. Punto principal, y eso va a
ejecutar todo lo que tenga el inicio de
subrayado torácico apéndice al mensaje dentro de nuestra clase Como podemos ver aquí,
al pasar en cuatro, vamos a conseguir un pase
sat sumando cinco, lo cual es extraño, vamos a conseguir
un cofre fallido y luego al pasar en cero, que será par, también
obtendremos un pase. Tenemos todo eso
en su lugar aquí. Sigamos adelante y ejecutemos nuestro código. Bien, entonces conseguimos una variedad. Ahora, analicemos la salida. Entonces llegamos aquí punto F punto. Por lo que F va a
indicar prueba fallida. Bien. Y eso significa que
el primer cofre con pase, la segunda prueba con falla, y el tercer cofre con un pase. Entonces así es como lo
puedes analizar. Y podemos ver
aquí cuál
fue la falla y probar número impar, podemos ver aquí que falló porque
pasamos por cinco aquí. Lo que puedes ver aquí
va a fallar porque cuando pasamos cinco y comprobamos
si es un número par, esencialmente va a no funcionar correctamente y generar un error de rastreo
como podemos ver aquí, podemos ver que el
error de sesión false no es cierto. Realizamos tres pruebas. Tuvimos un fracaso, y ese fue el segundo. Se puede ver que aquí es muy bonito. Da como resultado que aquí hemos
fallado al poner en F, pero también muestra por
posición cuál. El punto es uno, F es el segundo
y el tercero se pasa. Chicos. Entonces así es como
también podemos utilizar nuestros casos de prueba para que podamos ir a una cobertura y verificar si hay pases y
fallas en términos de nuestras pruebas Así es como podemos implementar
las pruebas unitarias básicas en Python. Puedes aplicar esto a tus
funciones, por ejemplo, si quieres revisar
tu código y ver si todo funciona y si funciona según
lo previsto. Por ejemplo, en este caso de uso
particular, si estás configurando la funcionalidad para probar en algo es par, es muy útil
agregar en casos de prueba aquí como lo estamos haciendo aquí para demostrar el hecho de que está
haciendo lo que debe hacer. Aquí es donde
entra el valor con las pruebas unitarias. Bien, así podemos seguir adelante y cerrar la paca y ahí la
tenemos pruebas unitarias
102. Entornos virtuales: Hola a todos. Bienvenidos
a la siguiente lección, que va a estar enfocada en el entorno
virtual.
Echemos un vistazo. Cierto, un entorno virtual, probablemente
te estés preguntando qué
es un entorno virtual. En pocas palabras, un
entorno virtual es un espacio de trabajo
o entorno aislado de Python que le permite instalar y
administrar sus paquetes o dependencias por separado
para cada proyecto Ahora bien, esto asegura que sus diferentes proyectos
no interfieran entre sí en
cuanto a paquetes ni causen conflictos. Eso es todo lo que quiero mencionar
en entornos virtuales. Es un proceso bastante
sencillo, así que vamos a
profundizar en eso en los
ejercicios prácticos de laboratorio, así que mantente atento.
103. Creación de un entorno virtual - [Laboratorio]: Hola a todos, y bienvenidos
al próximo ejercicio práctico de laboratorio, que va a estar
enfocado a trabajar con entornos
virtuales. Ahora, el entorno virtual es muy útil porque,
por supuesto, aprendes buenas prácticas al bloquear todos
tus paquetes dentro de un entorno virtual en lugar de instalarlos
globalmente en tu sistema Eso realmente ayuda a
asegurar que cada uno de tus proyectos tenga su
propio entorno virtual con sus propios paquetes
y dependencias. Simplemente ayuda a mantener las cosas suaves, precisas
y funcionales. Te voy a mostrar cómo
puedes crear tu entorno virtual, cómo puedes activarlo, y también cómo
puedes desactivarlo Te voy a mostrar
tanto para Windows como para MCO Linux. Te recomendaría que me veas primero antes de
seguirte directamente porque voy a demostrar
cómo puedes configurarlo para ambos dispositivos.
Empecemos. Ahora, lo primero
que quiero mencionar es que necesitas cambiar
ahora para ejecutar un PysonFle puedes hacer click en
la flecha desplegable, digamos Ejecutar PysonFL y simplemente puedes Y lo primero que
queremos hacer es entender el concepto de paquetes
globalmente en nuestro sistema. Cuando escribimos en PIP List, eso va a enumerar
todos los paquetes que hemos instalado vía PIP Por ejemplo, cuando seguimos
adelante e instalamos loama o
PWGen o Emoji o todos
los paquetes que
se instalaron en la lección de paquetes relevantes Eso va a
aparecer todo globalmente en nuestro sistema cuando
escribimos lista PIP Verás una lista de todos los paquetes que has instalado. Aquí, por ejemplo,
puedo ver Colorama, Emoji, puedo ver Num Pi, puedo ver PEP,
puedo ver P en WGN, eso ha sido todo instalado
globalmente en Ahora, el propio PEP, por supuesto, algo que necesita
ser instalado globalmente, pero todo lo demás, se puede ver que es en el caso de
que esté en todas partes Queremos que solo se instale dentro de un entorno
virtual, no globalmente como vemos aquí. Entonces, para ello, podemos crear un entorno virtual
para atender esto. Derecha. Así que de nuevo, como dije, solo mira lo que hago
antes de que tú lo hagas. Voy a mostrar primero el camino de
Windows, y para crear un
entorno virtual para Windows,
escribirías en tu
terminal, Python, VNV Eso significa que queremos crear un entorno virtual para ENV El nombre de tu entorno
virtual, puedes darle cualquier nombre ahora, pero yo también lo voy a llamar VENV y puedes presionar Enter, y eso va a crear tu
entorno virtual para ti Solo necesitas ser paciente
y una vez que se haya creado, se debe sangrar en una nueva línea Esperemos ese proceso. Después, te
mostraré el comando para instalarlo
en macOS o Linux. Solo seamos pacientes.
Bien, muy bien hecho Entonces podemos ver que
fue un éxito, e inventamos en una nueva línea. Entonces eso significa que nuestro
entorno virtual fue creado. Ahora, lo que
también puedes hacer es seguir adelante y checar tu directorio
en Explorer y
puedes ver ahora tenemos esta carpeta de Entorno
Virtual aquí dentro de mi proyecto, así puedes ver que se
encuentra aquí. Y todos nuestros
paquetes a partir de ahora, una vez que nos hayamos activado,
nuestro entorno virtual se
almacenará dentro de aquí. Y eso también va a mostrar
aunque estés en macOS. Para que MaCows cree un entorno
virtual, desea escribir
PySon tres M, VNV VENV exactamente
como lo hicimos antes Lo único que quieres es
agregar PySon tres. Esa es la distinción para configurarlo en
un dispositivo Guacamayos Puedes seguir adelante y
hacerlo si estás en MaComs. Derecha. Vamos a aclarar esto. Ahora queremos activar
nuestro entorno virtual. En Windows, te referirías
al nombre de tu
entorno virtual en la
segunda opción. Tenía VE NV, entonces
podemos decir barra diagonal,
scripts, barra diagonal reversa activar y esto activa Ya puedes ver en el
lado izquierdo el nombre que le diste a tu entorno virtual en parens aquí y podemos ver que es bonito y verde en nuestro caso Por lo que siempre debes
ejecutar tus programas ahora. Cuando hayas activado
tu entorno virtual, entonces puedes ejecutar Pip install, o puedes seguir adelante
y ejecutar tu PysonFle Entonces digamos Python main dot pie, en este caso, siempre
debes hacerlo dentro de tu entorno virtual. Bien, ahora, si quieres
activarlo en un dispositivo macOS, lo que vas a
hacer es que vas a decir Source VE NV, pin de barra
hacia delante,
adelante Activar Este es el comando,
necesitas
activarlo en tu dispositivo macOS. Fuente VNV adelante pin, barra
hacia adelante Activar.
Eso es macOS. Derecha. Ya tenemos eso en su lugar y
ya está claro esto. Si quieres desactivar tu entorno virtual
para
apagarlo, va a ser lo mismo
en Windows y macOS, así que solo tienes que decir
desactivar que lo hará
por ambos y
verás que vas a estar fuera de él y ya se ha ido Derecha. Entonces otra distinción
que quiero mencionar es si activamos nuestro
entorno virtual, entonces está activado. Y digamos que digo
lista PIP ahora, verás en el entorno de
tu entorno virtual que solo
tenemos PIP,
que es, por supuesto, el paquete general que estará dentro de tu entorno
virtual, pero no tenemos
esos otros paquetes que ves globalmente, como mostré antes, y eso es porque
no está dentro de la
entorno virtual. Y es por eso y
como lo mencioné, todo necesita
ser separado en un entorno virtual
para su proyecto y no globalmente
en su máquina. Entonces puedes ver aquí
la diferencia. Bien. Podemos decir claro ahora. Bien, así que ahí
vamos. Así es como siempre
debes instalar tus
paquetes y bibliotecas. Por ejemplo, si quiero
utilizar el
paquete Colama, puedo copiar match Entonces Pep instala
Clarama Todo bien. Se puede ver que se está
instalando, y ahí lo tenemos. Así que sigamos adelante y verifiquemos
dónde está instalado. Entonces si digo Pip LLS, ahora
podemos ver que lo hemos instalado dentro de nuestro entorno
virtual Entonces aquí está Clarama. Perfecto. Entonces ahora
podemos aclarar esto. Y ahora lo que queremos
hacer es que queremos seguir
adelante y agarrar los módulos de
Colama Voy a decir de color ma. Quiere importar las cuatro clases. Entonces voy a decir print, y solo voy a decir que
quiero sech los cuatro colores,
siendo
cuatro puntos y el rojo el atributo Quiero que esto se ponga en rojo. Voy a decir que
esto son cheques rojos. Seré mi salida y mi color
terminal también seguirá. Entonces aquí dentro del entorno
virtual, solo
puedo decir
Pison punto principal pi Se puede ver que funciona
perfectamente bien. Todo bien. Ahí lo tenemos. Y
podemos decir claro. Podemos simplemente volver a ejecutar
esto y decir blanco. Eso nos va a dar un default. Y ahí vamos. Bien, así es como deberíamos,
para las mejores prácticas, seguir adelante y utilizar PySon utilizando un entorno
virtual cuando instalamos
todos nuestros paquetes Entonces tenga en cuenta, nuevamente,
voy a mencionarlo que cuando esté utilizando MacAWS hay una ligera
diferencia con la forma que activa y crea
su entorno virtual, pero todo lo demás va
a funcionar tal como debería, sobre todo con la desactivación del entorno
virtual y Muy bien, chicos. Entonces así es como podemos trabajar con nuestros entornos
virtuales. Y cuando termines, solo
puedes desactivarlo. Pero recuerde, siempre
las mejores prácticas para activarlo, y luego utilizarlo
de ahí en adelante. Bien, chicos. Entonces, eso es todo. Eso es todo para entornos
virtuales.
104. Crea tu propio proyecto: Hola a todos. Bienvenido a la próxima messon
que va a estar enfocada en crear nuestros propios
proyectos. Echemos un vistazo. Mucho. Ha
llegado el momento y ahora que has adquirido todas
estas nuevas habilidades, es hora de que
pongas todo eso uso y crees tu
propio proyecto. Lo siguiente que debes hacer es dirigirte
a la sección de proyectos y
recursos de este curso para obtener
más información allí. Voy a detallar y delinear algunas ideas que
puedes seguir adelante y crear para tu proyecto y también darte algunas sugerencias sobre cómo puedes realizar
el proceso de creación del proyecto. Oh, eso es todo lo que voy a
decir por ahora y buena suerte. Y espero con ansias
ver sus proyectos.
105. ¡Gracias!: Hola a todos. Y bienvenidos a la lección final de
este curso donde
solo quiero agradecerles por decidirse a completar
este curso. Ha sido un placer
enseñarte y espero que consigas algún conocimiento valioso de ello. Así
que muchas gracias. Si tiene algún tiempo, le
agradecería mucho que considerara dejar una reseña. Ya que mejorar mis cursos y hacer lo mejor que pueda siempre
es algo positivo que tengas algo de tiempo, te lo agradecería
muchísimo. Si no, eso está perfectamente
bien siempre hayas tenido una gran experiencia de
aprendizaje, y eso es todo para
mí y buena suerte en tu viaje de desarrollo,
y te deseo todo lo mejor. Adiós, y gracias de nuevo.