Bienvenido de nuevo a la serie Python from Scratch. En la lección anterior, aprendimos a usar variables y estructuras de control para almacenar y manipular datos. Asegúrate de revisarlo si necesitas un repaso.!
En el tutorial de hoy, veremos las funciones: qué son, cómo funcionan y cómo crear las suyas. También vamos a revisar algunas de las funciones integradas y cómo usarlas de manera efectiva. Finalmente, vamos a echar un vistazo a la creación e importación de módulos..
Las funciones son un paso importante que debe cubrir al introducir una complejidad adicional en su programación. Si una variable es un contenedor con nombre para los datos, entonces una función es un contenedor con nombre para un bloque de código que se puede ejecutar a pedido. Esto es útil si tiene un programa que ejecuta una determinada operación muchas veces. En lugar de copiar y pegar el código para realizar esa operación en cada sección donde sea necesario, simplemente puede escribir una sola función para que lo haga por usted..
Una función es un contenedor con nombre para un bloque de código.
Existen dos tipos de funciones: las que usted mismo escribe e incluye en su código, y las que se incluyen en Python de forma nativa, que llevan a cabo procedimientos comunes, como convertir un número entero en una cadena, o encontrar la longitud de un cuerda.
Ahora veremos cómo escribir una función simple y demostraremos cómo puede ser útil en el código del mundo real. A continuación, echaremos un vistazo a algunas de las funciones integradas más importantes..
Imaginemos que queremos hacer un guión para un carrito de compras que tome el costo de todos los artículos en su carrito y luego los agregue para devolver un costo total. Para escribir una función que requiera dos costos, sumarlos y luego imprimir el resultado, podríamos hacer algo como:
# nuestros dos costos para sumar cost1 = 15 cost2 = 20 def sumCart (): totalCost = cost1 + cost2 imprimir totalCost sumCart ()
Para definir la función, necesitamos usar el 'def
'palabra clave, y luego el nombre de la función. A continuación, escribimos dos paréntesis (volveremos a esos más adelante) y luego dos puntos. Después de eso, todo el código que queremos encerrar dentro de la función debe estar sangrado, al igual que con Si
, mientras
y para
bucles.
Para hacer que se ejecute el código en la función, escribimos el nombre de la función, seguido de los dos paréntesis de nuevo. Si ejecuta este código, verá que se imprime '35', que es la salida correcta.
Eso es genial, pero en este momento, nuestras funciones son un poco rígidas, todo en la función está codificado en ellas. Por ejemplo, digamos que queremos usar el sumCart
Funciona en otra parte, en una parte diferente del programa, pero en lugar de agregar cost1 y cost2 juntos, queremos sumar otros dos costos que se mantuvieron en diferentes variables. Tendríamos que escribir una función completamente nueva, aunque esa nueva función sería exactamente la misma que la actual, con los nombres de las variables intercambiados, lo que no parece ser una solución eficiente..
Para resolver este problema, usamos 'argumentos', y para eso están los paréntesis. Un argumento es una forma de pasar datos a una función cuando no sabemos en qué variable o variables estarán esos datos. Si eso es confuso, tomemos el ejemplo al que acabo de hacer referencia. Añadiremos dos costes más: coste3 y coste4..
Ahora, vamos a agregar dos argumentos para los dos elementos que queremos sumar. Los argumentos se definen dentro de los paréntesis, y cada argumento recibe un nombre, con una coma que los separa. Un argumento actúa como una referencia temporal a los datos que pasaste mientras la función se está ejecutando.
cost1 = 15 cost2 = 20 cost3 = 5 cost4 = 10 def sumCart (item1, item2): totalCost = item1 + item2 imprimir totalCost sumCart (cost1, cost2)
Cuando llamamos al sumCart
función, las dos variables que hemos pasado (cost1 y cost2) se colocan en los argumentos item1 y item2. Esto siempre sucede en el mismo orden en que define los argumentos; en otras palabras, la primera variable que pasa se asigna al primer argumento, el segundo al segundo argumento, y así sucesivamente para tantos argumentos como su función tome..
Lo que realmente sucede cuando se ejecuta la función es que esos dos argumentos se convierten en variables locales y se asignan los valores de las variables que pasa a la función cuando la llama, en este caso el valor de costo1
se pone en la variable local Objeto 1
, y el valor de costo2
se pone en la variable local item2
. Esto significa que puedes usarlos fácilmente dentro de la función.
Otra forma de verlo es, cuando pasa una variable como un argumento, en todas partes donde aparece el nombre de ese argumento en la función, se reemplaza con la variable que usted ingresó. Entonces, en este ejemplo, en todas partes Objeto 1
Está escrito dentro de la función, es reemplazado por costo1
, y lo mismo con item2
y costo2
.
Para demostrar que puede pasar cualquier número que desee, si ejecuta este código, ahora debería recibir la suma de costo3
y costo4
:
costo1 = 15 costo2 = 20 costo3 = 5 costo4 = 10 def sumCart (item1, item2): totalCost = item1 + item2 imprime totalCost sumCart (cost3, cost4)
Tenga en cuenta que una función puede aceptar cualquier número de argumentos, pero recuerde: cuando llama a la función, tiene que pasar la misma cantidad de argumentos que definió, de lo contrario recibirá un error. Hay una forma de evitar esto: puede definir un valor predeterminado para cualquier argumento, que se utiliza en los casos en que no proporciona un valor.
Teniendo en cuenta nuestro código actual, imaginemos que queremos que el segundo artículo cueste 5 si no le damos a la función un valor diferente. No es un escenario probable, pero demostrará el concepto..
cost1 = 15 cost2 = 20 cost3 = 5 cost4 = 10 def sumCart (item1, item2 = 5): totalCost = item1 + item2 imprimir totalCost sumCart (cost1) sumCart (cost3, cost4)
Si ejecutamos este código, verás que, en la primera llamada, la salida es 20, que es de hecho (costo1 + 5). Sin embargo, esto no afecta el comportamiento cuando se suministran ambos argumentos..
Hay una característica final de las funciones que vamos a revisar hoy: valores de retorno. Hemos aprendido a hacer una función que no le importa qué entradas toma, pero ¿y si quisiéramos almacenar la respuesta a "totalCost" en una variable en lugar de imprimirla? Quizás lo que queremos hacer es calcular el costo de los dos primeros elementos, y almacenarlo en una variable, luego hacer lo mismo con los otros dos elementos y almacenar esa respuesta en una segunda variable. Con el diseño actual de nuestra función, no pudimos hacerlo de forma legible y fácil de entender..
Del mismo modo que podemos pasar argumentos a una función para que no tengamos que codificar de dónde provienen los datos, podemos hacer lo mismo con la salida. Le mostraré un ejemplo: en nuestra función anterior, reemplazaré la palabra 'imprimir' por la palabra 'devolver':
cost1 = 15 cost2 = 20 cost3 = 5 cost4 = 10 cost sumCart (item1, item2): totalCost = item1 + item2 return totalCost cart1 = sumCart (cost1, cost2) cart2 = sumCart (cost3, cost4) print cart1 print cart
Obviamente, la función ya no imprimirá la respuesta por nosotros; en su lugar, lo que haremos es devolver el valor de la variable totalCost a donde llamamos la función. De esa manera, podemos usar la respuesta en el contexto que necesitemos. Ahora, en nuestro programa anterior, eso no sería particularmente útil, porque no especificamos en ningún lugar para almacenarlo, así que también cambié la forma en que llamamos la función.
Necesitamos proporcionar a Python una variable en la que almacenar la respuesta, y luego simplemente vamos a establecer esa variable igual a nuestra declaración que llama a la función. Cuando la función devuelve un valor, ese valor ahora se almacenará en la variable que especificamos.
Hemos aprendido cómo hacer nuestras propias funciones y cómo usarlas, pero hay algunas operaciones que se llevan a cabo con la suficiente frecuencia como para que Python las haya incluido en cualquier programa. La forma en que los llama es exactamente igual que llamar a los suyos, pero no tiene que definirlos primero. Vamos a echar un breve vistazo a los más importantes ahora, pero asegúrese de echar un vistazo a la documentación de Python porque hay muchas funciones útiles que están disponibles para usar, que no tenemos tiempo de cubrir correctamente. ahora.
Consulte la documentación de Python para obtener una lista de todas las funciones integradas.
Primero, veamos una de las funciones más útiles de Python: la función de conversión de cadenas. Hay muchas veces en las secuencias de comandos cuando tiene una variable que contiene un número, o algún otro tipo de datos, pero necesita convertir ese valor en una cadena para hacer algo con él, normalmente para imprimirlo en la pantalla..
Digamos que tenemos un número en una variable, y que queremos imprimirlo, con el mensaje "El número es" y luego el número. Si escribimos:
number = 10 print 'El número es' + número
? luego vamos a encontrar un error, porque lo que le pedimos a Python que haga es agregar un número y una cadena juntos, lo que realmente no tiene mucho sentido. Lo que tenemos que hacer es convertir el número 10 en la cadena 10. Si lo hacemos, Python entenderá que lo que intentamos hacer es no encontrar una suma, sino que concatenar las dos cadenas en una..
Aquí es donde el str
entra la función. Acepta un valor y devuelve una cadena para representarlo. En el caso de que le pases un número, simplemente devolverá el número pero en formato de cadena.
number = 10 print 'El número es' + str (número)
Ahora que hemos incluido el número en una función de conversión de cadena, el código se ejecuta perfectamente. los str
Sin embargo, la función no tiene que tomar un número, también puede tomar otros valores, como un Booleano
:
bool = Impresión verdadera 'El valor es' + str (bool)
los str ()
La función encuentra la cadena más cercana que puede encontrar para el valor de 'cierto
'y lo devuelve, lo que significa que podemos producirlo muy bien.
Otra tarea común para las cadenas es poder encontrar la longitud de ellas y, nuevamente, Python tiene una función incorporada para esto. Tomemos la cadena 'Hola mundo' e intentemos encontrar su longitud. Para ello, vamos a necesitar el incorporado. len ()
Función, que representa la longitud. Todo lo que necesitamos hacer es pasarle la cadena que queremos usar, y devolverá la cantidad de caracteres que contiene:
string = 'Hola mundo' imprimir len (cadena)
los len ()
Sin embargo, la función es capaz de más que esto. Lo que realmente hace es contar la cantidad de elementos en el objeto que le das: si le asignas una cadena, entonces esa es la cantidad de caracteres, pero también puedes darle una lista o una tupla, por ejemplo, y devolverá la cantidad de artículos en ese objeto particular.
Continuando, a menudo se te da un número como 10.6 o 3.896, que no es un número entero, pero necesitas un número entero de ellos. La función incorporada para convertir a un entero se llama En t()
, y funciona bastante predeciblemente. La función devolverá la conversión entera de ese número. Tenga en cuenta que esta función NO redondea la entrada al entero más cercano, simplemente elimina cualquier cosa después del punto decimal y le devuelve el número. Así que la entrada de 10.6 devolverá 10, NO 11. De manera similar, 3.25 devolvería 3.
número = 10.6 impresión int (número)
los En t
función también puede convertir una cadena a una En t
tipo de datos. Por ejemplo, dado esto, la salida aún sería 10:
número = '10' imprimir int (número)
Sin embargo, tenga cuidado, porque cuando se convierte de una cadena a un entero, En t()
NO tratará con decimales. Si usted lo proporciona:
número = '10 .6 'print int (número)
Entonces generará un error, porque la entrada no era un entero, por lo que no sabía cómo manejarlo.
Finalmente, vamos a ver rápidamente el distancia()
función; aparece sorprendentemente a menudo cuando empiezas a realizar tareas más complejas en Python y, si bien en este momento no parece ser muy útil, vale la pena echarle un vistazo y conocer cómo funciona. El rango es una función que se usa para crear una lista de números siguiendo un patrón determinado. El ejemplo más simple es que quizás necesite una lista que contenga todos los números del 0 al 10. En lugar de escribirlos manualmente, puede usar el distancia
Función para hacerlo en una sola línea..
El rango acepta un entero como parámetro y, en este caso, lo pasaremos 11. La función thens comienza en cero, y hace que la lista cuente hacia arriba hasta que alcance uno menos que el número que ingresó. Aquí, si Ponemos en 11, almacenará los números del 0 al 10 en la lista de números:
números = rango (11) imprimir (números)
¿Y si quisiéramos imprimir los números del cinco al diez en su lugar? Bueno, opcionalmente, podemos incluir otro argumento para el número inicial, así que esto imprimirá los números de cinco a diez:
números = rango (5, 11) impresión (números)
Por último, ¿qué pasaría si quisiéramos imprimir solo los números impares menores de 10? Bueno, el rango acepta un tercer valor, que es la cantidad para subir cada paso. Entonces, si comenzamos en 1, establecemos el paso en dos y el límite superior en 11, deberíamos terminar con todos los números impares debajo de diez:
números = rango (1, 11, 2) impresión (números)
Como nota final, cualquiera de estos números también puede ser negativo, así que si quisiéramos contar el DOWN desde 10 a 1 en lugar de subir, podríamos configurar el paso como negativo 1, el valor de inicio a 10 y el límite a 0 , al igual que:
Números = rango (10, 0, -1) impresión (números)
Tenga en cuenta que el rango solo tratará con los enteros, así que asegúrese de no darle ningún valor que no sea entero o de lo contrario arrojará un error..
Bien, ahora hemos cubierto las funciones; Pasemos al segundo tema de la lección de hoy: módulos. Si las funciones son grupos de código, los módulos son grupos de funciones. Hay más para ellos, pero esa es una buena manera de pensar en ellos por ahora..
Como mencionamos anteriormente, no puede crear un programa complejo sin clasificar el código en funciones, y a medida que su programa continúa creciendo, incluso se vuelven difíciles de manejar. Tienes que ordenarlos en otro nivel jerárquico. Estos son los módulos. Así que podemos resumirlos como una herramienta estructural y organizativa para nuestro código..
Los módulos son bastante fáciles de crear. Son simplemente archivos de Python, como tus scripts normales. Para crear un módulo, escriba una o más funciones en un archivo de texto, luego guárdelo con un .py
extensión. Hagamos eso ahora con un ejemplo. Abra un nuevo archivo, su editor de texto o IDE, y haga una función. Continuaré con el ejemplo de un carrito de la compra anterior y haré una función para calcular el impuesto sobre los productos..
Cree un nuevo archivo en su IDE o editor de texto y creemos una función para calcular el impuesto sobre un producto.
def addTax (precio, impuestos): newPrice = precio / 100 * (100 + impuestos) devuelve newPrice
Si guardamos este archivo con un .py
extensión en el mismo directorio que nuestro otro script, podemos usarlo como un módulo! Es importante darle un nombre descriptivo para que sepa qué hace cuando vuelva más tarde, así que llame a este. finanzas.py
Para usar módulos, podemos usar cualquiera de los importar
o la desde
palabra clave. importar
es el más simple y el más común, así que intentémoslo primero. A continuación, especifique el nombre del módulo, que es simplemente el nombre de archivo, sin el .py
extensión. Por ejemplo, con nuestros financiar
módulo en la misma carpeta que nuestro script, podríamos escribir:
financiamiento de importaciones
? y tendríamos acceso a todas las funciones en el script. Podemos llamarlos como lo hicimos antes. También puedes usar el desde
palabra clave, que le permite seleccionar funciones específicas de la biblioteca, si sabe de antemano cuáles necesita. Para un módulo que tiene cientos de funciones, se recomienda esto: ahorra tiempo de carga en funciones que ni siquiera se están utilizando.
desde finanzas import addTax
Puedes importar varios separando sus nombres con comas..
desde finanzas import addTax, calculaDiscount
E incluso puede utilizar el comodín de asterisco para importar todo.
de las importaciones de finanzas *
Después de importar el módulo, para usar las funciones que contiene, use el nombre del módulo, seguido de un punto y luego el nombre de la función..
importación finanzas imprimir finance.addTax (100, 5)
Esto debería dar como resultado 105 cuando se ejecuta el script. Un resultado simple, pero significa que tienes una función de trabajo!
Hay un montón de módulos integrados, al igual que con las funciones incorporadas. Aquí es donde realmente sobresale Python! Toma lo que se llama las? Pilas incluidas? enfoque.
Debido a que Python tiene una amplia gama de módulos integrados, no hay forma de cubrirlos todos en una sola lección. Algunos son bastante oscuros, y no tiene sentido enseñar una carga de información para la que nunca podría tener un uso. En su lugar, vamos a cubrir algunos de los más útiles..
aleatorio
mates
os
fecha y hora
urllib2
aleatorio
Una buena para empezar es aleatorio
, Porque es fácil de entender y útil en la mayoría de los scripts que escribirás. Como es de esperar, este módulo le permite generar números aleatorios. Por ejemplo, cuando se utiliza Python para crear un sitio web, se pueden usar para hacer que su base de datos de contraseñas sea más segura o para activar una función de página aleatoria. Si quisiéramos un entero aleatorio, podemos usar el randint
función, como tal:
Importar impresión aleatoria random.randint (0, 5)
Esto dará como resultado 1, 2, 3, 4 o 5. Randint acepta exactamente dos parámetros: el número más bajo y el más alto. Como puede ver, incluye el número más alto, pero va desde 1 sobre el número más bajo. Si desea un número de punto flotante aleatorio, puede utilizar el aleatorio
función:
importar aleatorio random.random ()
? que genera un número aleatorio entre 0 y 1, a una carga de decimales. Si quieres un número más grande, puedes multiplicarlo. Por ejemplo, un número aleatorio entre 0 y 100:
importación aleatoria random.random () * 100
los aleatorio
El módulo también tiene una función para elegir un elemento aleatorio de un conjunto como una lista, llamada elección
.
importar aleatoria myList = [1, 8, True, 77, "Lorem", 482, "Ipsum"] random.choice (myList)
mates
los mates
El módulo proporciona acceso a las constantes y funciones matemáticas..
importar math math.pi #Pi, 3.14? matematicas # número de Euler, 2.71? math.degrees (2) # 2 radianes = 114.59 grados math.radians (60) # 60 grados = 1.04 radians math.sin (2) #Sine of 2 radians math.cos (0.5) #Cosine of 0.5 radians math.tan ( 0.23) #Tangente de 0.23 radianes. Factorial (5) # 1 * 2 * 3 * 4 * 5 = 120 math.sqrt (49) # Raíz cuadrada de 49 = 7
Hay muchas más funciones en el módulo, pero estas son algunas de las más útiles. Puedes encontrar una lista completa aquí.
fecha y hora
Si necesita trabajar con fechas y horas, entonces el fecha y hora
módulo es tu amigo Este es muy útil para el desarrollo web. Si está creando un sitio web con comentarios, o un blog, entonces probablemente estará mostrando su edad o el momento en que fueron creados..
Vamos a importar el módulo como de costumbre:
importar fecha y hora
Para su comodidad, también puede importar los componentes de fecha y hora por separado, para que no tenga que escribirlos más tarde..
importar fecha y hora desde fecha y hora fecha de importación
Echemos un vistazo a algunas de las funciones que proporciona:
time.time () # Devuelve el número de segundos transcurridos desde Unix Epoch, 1 de enero de 1970 date.fromtimestamp (123456789) # Convierte una cantidad de segundos en un objeto de fecha date.fromtimestamp (time.time ()) #Podemos combinar dos para obtener un objeto que representa la fecha actual. fordordinal (10000) # Devuelve la fecha un número dado de días desde el 1 de enero del año 1 al 28 de mayo de 0018 en este caso
Hay algunas funciones útiles para convertir fechas en cadenas utilizables. tiempo fuerte
le permite formatear una cadena basada en caracteres especiales precedidos por un símbolo de porcentaje. %re
representa el día, por ejemplo.
currentDate = date.fromtimestamp (time.time ()) #Crear una variable que representa la hora actual currentDate.strftime ("% d /% m /% y") #Format la fecha como DD / MM / YY - en este caso 09 / 07/11 currentDate.isoformat () #Format como una fecha estándar de ISO, en este caso 2011-07-09
os
El siguiente módulo que estamos viendo es os
, que proporciona funciones que le permiten interactuar con el sistema operativo subyacente en el que se está ejecutando Python, ya sea Windows, Mac o Linux. Nos centraremos en el camino
submódulo Le permite manipular y encontrar las propiedades de los archivos y carpetas en el sistema, por lo que es el más útil para el desarrollo web. A menudo necesitarás administrar archivos, por ejemplo, subidas de usuarios..
from os import path path.exists ("/ Users / Giles") # Comprueba si el directorio existe, en mi caso es True path.exists ("/ Users / Bob") #False esta vez
from os import path path.getatime ("/ Users") # Obtener la última vez que se accedió al directorio dado como una marca de tiempo path.getmtime ("/ Users") # Obtener la última vez que el directorio dado fue modificado como una marca de tiempo
Estas marcas de tiempo se pueden convertir en cadenas utilizables utilizando el fecha y hora
módulo - puedes ver cómo puedes combinar módulos.
from os import path path.getsize ("/ Users / Giles / Desktop / boot") # Devuelve el tamaño de un archivo en bytes: para este archivo era 314400 bytes, o 314kb
La última función en el módulo de sistema operativo que vamos a ver es unirse
. Combina dos caminos en uno. Podría estar pensando: "¿Por qué no puedo concatenar las cadenas?", Pero no es tan simple como eso. En Windows, el delimitador de ruta es una barra invertida, en Mac y Linux es una barra diagonal. Este módulo alivia problemas como ese y asegura que sus scripts de Pythons funcionen en cualquier sistema.
path.join ("C:", "Users") #Returns "C: / Users"
urllib2
Para terminar nuestro recorrido por la biblioteca estándar de Python, vamos a echar un breve vistazo a urllib2
. Este módulo le permite interactuar con la web, por lo que, obviamente, es bastante relevante para nosotros. La función más útil que proporciona es urlopen
, que descarga una página.
Lo usas de la siguiente manera:
importar urllib2 urllib2.urlopen ("http://net.tutsplus.com")
Obviamente, puedes intercambiar la cadena de URL por cualquier sitio. Esto descargará el contenido HTML de la página. Sin embargo, esto no devolverá una cadena, por lo que necesitamos leer los datos para obtener eso:
importar urllib2 urllib2.urlopen ("http://net.tutsplus.com") .read (100)
Esto devolverá los primeros 100 caracteres de la fuente HTML de Nettuts +. Una vez que tenga estos datos, puede ordenarlos y extraer los bits necesarios que necesite.
Si su módulo está en un directorio diferente al de su script, es un poco más difícil importarlos. Tienes que crear un archivo que le diga a Python que la carpeta es un paquete. Por ejemplo, si tiene una carpeta, llamada subdirectorio, en la misma carpeta que su script, y luego su módulo dentro de ese subdirectorio, tendría que crear un archivo llamado __init__.py
en la misma carpeta que el módulo. Este archivo puede estar vacío. Luego, desde tu script, lo importas:
Revísalo si necesitas un repaso.!
En el tutorial de hoy, veremos las funciones: qué son, cómo funcionan y cómo crear las suyas. También vamos a revisar algunas de las funciones integradas y cómo usarlas de manera efectiva. Finalmente, vamos a echar un vistazo a la creación e importación de módulos..
Las funciones son un paso importante que debe cubrir al introducir una complejidad adicional en su programación. Si una variable es un contenedor con nombre para los datos, entonces una función es un contenedor con nombre para un bloque de código que se puede ejecutar a pedido. Esto es útil si tiene un programa que ejecuta una determinada operación muchas veces. En lugar de copiar y pegar el código para realizar esa operación en cada sección donde sea necesario, simplemente puede escribir una sola función para que lo haga por usted..
Una función es un contenedor con nombre para un bloque de código.
Existen dos tipos de funciones: las que usted mismo escribe e incluye en su código, y las que se incluyen en Python de forma nativa, que llevan a cabo procedimientos comunes, como convertir un número entero en una cadena, o encontrar la longitud de un cuerda.
Ahora veremos cómo escribir una función simple y demostraremos cómo puede ser útil en el código del mundo real. A continuación, echaremos un vistazo a algunas de las funciones integradas más importantes..
Imaginemos que queremos hacer un guión para un carrito de compras que tome el costo de todos los artículos en su carrito y luego los agregue para devolver un costo total. Para escribir una función que requiera dos costos, sumarlos y luego imprimir el resultado, podríamos hacer algo como:
# nuestros dos costos para sumar cost1 = 15 cost2 = 20 def sumCart (): totalCost = cost1 + cost2 imprimir totalCost sumCart ()
Para definir la función, necesitamos usar el 'def
'palabra clave, y luego el nombre de la función. A continuación, escribimos dos paréntesis (volveremos a esos más adelante) y luego dos puntos. Después de eso, todo el código que teníamos.