En Python, una función es una secuencia nombrada de declaraciones que pertenecen juntos. Su objetivo principal es ayudarnos Organizar programas en fragmentos que coincidan con la forma en que pensamos la solución al problema.
La sintaxis para una definición de función es:
def name( parameters ):
statements
Puede inventar cualquier nombre que desee para las funciones que cree, excepto que No puede usar un nombre que sea una palabra clave de Python, y los nombres deben seguir las reglas para identificadores legales que se dieron anteriormente. Los parámetros especifican Qué información, si la hay, debe proporcionar para usar la nueva función. Otra forma de decir esto es que los parámetros especifican lo que la función necesita hacer su trabajo.
Puede haber cualquier cantidad de declaraciones dentro de la función, pero tienen que ser
sangrado del def
. En los ejemplos de este libro, usaremos el
Allorización estándar de cuatro espacios. Las definiciones de funciones son la segunda de
Varias declaraciones compuestas que veremos, todas las cuales tienen lo mismo
patrón:
Una línea de encabezado que comienza con una palabra clave y termina con un colon.
Un cuerpo que consta de una o más declaraciones de Python, cada una sangría la misma cantidad - 4 espacios es el estándar de Python - de la línea de encabezado.
Ya hemos visto el
for
bucle que sigue este patrón.En una definición de función, la palabra clave en el encabezado es
def
, que es seguido por el nombre de la función y algunos parámetros encerrados en paréntesis. La lista de parámetros puede estar vacía, o puede contener cualquier número de Parámetros separados entre sí por comas. En cualquier caso, se requieren los paréntesis.Necesitamos decir un poco más sobre los parámetros. En la definición, la lista de parámetros se conoce más específicamente como el parámetros formales . Esta lista de nombres describe esas cosas que la función Necesita recibir del usuario de la función. Cuando usa una función, proporciona valores a los parámetros formales .
La siguiente figura muestra esta relación. Una función necesita cierta información para hacer su trabajo. Estos valores, a menudo llamados argumentos o parámetros reales , se pasan a la función por el usuario.
Este tipo de diagrama a menudo se llama diagrama de caja negra porque solo establece los requisitos desde la perspectiva del usuario. El usuario debe conocer el nombre de la función y qué argumentos deben aprobarse. Los detalles de cómo funciona la función se ocultan dentro de la "caja negra".
Supongamos que estamos trabajando con tortugas y una operación común que necesitamos es dibujar cuadrícula. Tendría sentido si no tuviéramos que duplicar todos los pasos cada vez que queremos hacer un cuadrado. Se puede considerar "dibujar un cuadrado" como una abstracción de varios pasos más pequeños. Tendremos que proporcionar dos piezas de información para que la función haga su trabajo: una tortuga para hacer el dibujo y un tamaño para el costado del cuadrado. Podríamos representar esto usando el siguiente diagrama de caja negra.
Aquí hay un programa que contiene una función para capturar esta idea. Probar.
>>import turtle
>>def drawSquare(t, sz):
"""Make turtle t draw a square of with side sz."""
>> for i in range(4):
>> t.forward(sz)
>> t.left(90)
>>wn = turtle.Screen() # Set up the window and its attributes
>>wn.bgcolor("lightgreen")
>>alex = turtle.Turtle() # create alex
>>drawSquare(alex, 50) # Call the function to draw the square passing the actual turtle and the actual side size
>>wn.exitonclick()Esta función se nombra
drawSquare
. Tiene dos parámetros: uno para decir la función que tortuga moverse y la otra para decirle el tamaño de la plaza queremos dibujar. En la definición de función se llamant
ysz
respectivamente. Asegúrese de saber dónde el cuerpo de la función termina: depende de la sangría y las líneas en blanco no cuentan para ¡Este propósito!cajas
Si lo primero después del encabezado de la función es una cadena (algunas herramientas insisten en que Debe ser una cadena citada triple), se llama DOCSTRING y recibe un tratamiento especial en Python y en algunas de las herramientas de programación.
Otra forma de recuperar esta información es usar el interactivo intérprete e ingresa la expresión
<function_name>.__doc__
, que recuperará el DOCSTRING para la función. Entonces, la cadena que escribe como documentación al comienzo de una función es recuperable por Python Tools en tiempo de ejecución . Esto es diferente de los comentarios en su código, que se eliminan por completo cuando se analiza el programa.Por convención, los programadores de Python usan documentos para la documentación clave de sus funciones.
Definir una nueva función no hace que la función se ejecute. Para hacer eso necesitamos un llamada de función . Esto también se conoce como una función de invocación . Ya hemos visto cómo llamar a algunas funciones incorporadas como
print
,range
yint
. Las llamadas de la función contienen el nombre de la función que se ejecutado seguido de una lista de valores entre paréntesis, llamados argumentos , que se asignan a los parámetros en la definición de función. Entonces en el segundo a la última línea de el programa, llamamos a la función y pasamosalex
como la tortuga a ser manipulada, y 50 como el tamaño del cuadrado que queremos.Una vez que hemos definido una función, podemos llamarla tan a menudo como nos gustamos y es Las declaraciones se ejecutarán cada vez que lo llamemos. En este caso, podríamos usarlo para obtener Una de nuestras tortugas para dibujar un cuadrado y luego podemos mover la tortuga y hacer que dibuje un cuadrado diferente en un Diferente ubicación. Tenga en cuenta que levantamos la cola para que cuando
alex
Movimientos No hay rastro. Ponemos la cola Vuelva a bajar antes de dibujar el siguiente cuadrado. Asegúrese de poder identificar ambas invocaciones deldrawSquare
función.Comprueba tu comprensión
¿Qué es una función en Python?
Actividad: 6.1.6 Opción múltiple (test_Question5_1_1)
¿Cuál es un propósito principal de una función?
Actividad: 6.1.7 Opción múltiple (test_Question5_1_2)
¿Cuál de los siguientes es un encabezado de función válido (primera línea de una definición de función)?
Actividad: 6.1.8 Opción múltiple (test_Question5_1_3)
¿Cuál es el nombre de la siguiente función?
def drawSquare(t, sz): """Make turtle t draw a square of with side sz.""" for i in range(4): t.forward(sz) t.left(90)
Actividad: 6.1.9 Opción múltiple (test_Question5_1_4)
¿Cuáles son los parámetros de la siguiente función?
def drawSquare(t, sz): """Make turtle t draw a square of with side sz.""" for i in range(4): t.forward(sz) t.left(90)
Actividad: 6.1.10 Opción múltiple (test_Question5_1_5)
Teniendo en cuenta la función a continuación, ¿cuál de las siguientes afirmaciones invoca correctamente o llama, esta función (es decir, hace que se ejecute)? Suponga que ya tenemos una tortuga llamada Alex.
def drawSquare(t, sz): """Make turtle t draw a square of with side sz.""" for i in range(4): t.forward(sz) t.left(90)
Actividad: 6.1.11 Opción múltiple (test_Question5_1_6)
Verdadero o falso: se puede llamar a una función varias veces colocando una llamada de función en el cuerpo de un bucle.
Actividad: 6.1.12 Opción múltiple (test_Question5_1_7)