Las funciones son un concepto muy importante en la programación. En términos simples, una función es una pieza de código reutilizable, que da al código un nombre llamado "nombre de función". Este código puede ser usado por el nombre de la función en cualquier parte del programa. Esta es la "llamada a la función".
Definición de función
El concepto de función, de hecho, hemos estado en contacto con las matemáticas de secundaria. Por ejemplo, si la expresión y = 2x + 3
, llamamos y una función lineal de x.Escribir una función de Python es así:
def y(x):
return 2 * x + 3
Como muestra el ejemplo anterior, las reglas para definir una función en Python son las siguientes:
La primera es usar la palabra clave def
para determinar que se trata de una función, seguida del nombre de la función (como y
arriba), el nombre de la función va seguido de los parámetros entre paréntesis y la línea que termina con dos puntos :
dos puntos.Esta línea es la declaración de la función.
El siguiente es el fragmento de código del cuerpo de la función , que puede ser una línea o varias líneas, pero son una sangría más que def
. La última línea del cuerpo de la función puede devolver uno o más valores a través de la palabra clave return
. Si no escribe el return
, Python por defecto devuelve None
.
Existe una definición de función especial: una función vacía, que es una función que no hace nada, define el cuerpo de una función a través de una instrucción de pass
:
def do_nothing():
pass
La función vacía está principalmente al principio de nuestro programa de escritura. Quiero escribir qué funciones escribir, primero definirlas como funciones vacías y luego implementar lentamente sus funciones específicas.
De manera similar, cuando aprendemos programación orientada a objetos de Python, la definición de una clase también puede usar pass
para implementar una clase mínima:
class TheEmptyClass:
pass
Llamada de función
Una vez que hemos definido una función, podemos llamar (ejecutar) la función. Llamar a una función es pasar los parámetros que necesita por el nombre de la función.
a = y(2)
print('a is ', a)
b = y(6)
print('b is ', b)
Combinado con la definición de la función y
, adivine cuáles son los valores de a y b.
La función y es una función de una operación matemática, y sus parámetros deben ser números enteros o de coma flotante. Si le pasamos una cadena, ¿qué pasará?
In [153]: y('a')
-----------------
TypeError Traceback (most recent call last)
<ipython-input-153-1e7b94eb7c3d> in <module>
----> 1 y('a')
<ipython-input-150-d8eda758862f> in y(x)
1 def y(x):
----> 2 return 2 * x + 3
3
TypeError: must be str, not int
De acuerdo con la declaración del cuerpo de la función, primero multiplicamos la cadena 'a'
por 2 para obtener 'aa'
, y luego calculamos la suma de la cadena 'aa'
y el entero 3
, y el error se da porque la cadena y el entero no se pueden agregar.
La función y que definimos tiene solo un argumento. Si le pasamos dos o más argumentos, también informaremos un error. Los más pequeños pueden tratar de ver qué tipo de errores son incorrectos cuando la cantidad de parámetros es incorrecta.
Por lo tanto, la llamada a la función debe satisfacer la definición del nombre de la función, el tipo de parámetro y la cantidad de parámetros para ejecutarse con éxito.
El valor de retorno de la función.
Las funciones en Python tienen valores de retorno. Si no regresamos a través de la pantalla de return
, Python devuelve None
defecto. Por return
podemos especificar que la función devuelve el valor que queremos. El valor que queremos puede ser uno o dos o más, y el return
puede cumplir con nuestros requisitos.
def my_division(a, b):
quotient = a // b
remainder = a % b
return quotient, remainder
Esta función calcula un dividido por b, devolviendo sus valores de cociente y resto.return
devuelve múltiples valores ,
sepáralos con una coma.
Veamos el resultado de llamar a esta función:
In [158]: my_division(5, 2)
Out[158]: (2, 1)
In [159]: my_division(20, 7)
Out[159]: (2, 6)
In [160]: my_division(20, 5)
Out[160]: (4, 0)
Como puede ver, cuando la función devuelve múltiples valores, los múltiples valores forman una tupla.
Función recursiva
Una función recursiva es una función que se llama a sí misma. Echemos un vistazo al factorial de un entero para ver cómo se ve la función recursiva. La fórmula para el factorial es la siguiente:
n! = n * (n-1) * (n-2) * ... * 2 * 1
Su función recursiva se define de la siguiente manera:
def factorial(n):
if n == 1:
print(n)
return 1
print(n, '*', end=' ')
return n * factorial(n-1)
La función recursiva tiene una condición que salta de la recursión, que es n == 1
en esta función. Cuando n != 1
, el factorial del número más pequeño que el n actual se llama recursivamente, y cada vez que n disminuye en 1, sabiendo que n == 1
termina la recursión. Este proceso recursivo en realidad está generando una multiplicación (puede ver la información de impresión de la función):
n * (n-1) * (n-2) * ... * 2 * 1
In [169]: f = factorial(5)
5 * 4 * 3 * 2 * 1
In [170]: f = factorial(10)
10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
Resumen
Defina los elementos de la función: nombre de la función, parámetro, función función de llamada del cuerpo de la función nota: tipo de parámetro, número de la función del número del parámetro, finalmente use la declaración de return
, luego devuelva None
defecto
La función devuelve uno o más valores por return
, y múltiples valores se devuelven como tuplas.
Practica
Vuelva a escribir la función recursiva anterior en una función implementada en un bucle y piense en la relación entre recursión y bucle.
留言
張貼留言