Es importante comprender que cada una de las funciones que escribimos se puede usar y llamado desde otras funciones que escribimos. Este es uno de los más importantes formas en que los científicos informáticos toman un gran problema y lo dividen en un grupo de problemas más pequeños. Este proceso de romper un problema en más pequeños subproblemas se llama descomposición funcional.
Aquí hay un ejemplo simple de descomposición funcional utilizando dos funciones. El
Primera función llamada square
Simplemente calcula el cuadrado de un número dado.
La segunda función llamó sum_of_squares
utiliza el cuadrado para calcular
La suma de tres números que han sido cuadrados.
>>
def square(x):
2 y = x * x
3 return y
4
5 def sum_of_squares(x, y, z):
6 a = square(x)
7 b = square(y)
8 c = square(z)
9
10 return a + b + c
11
12 a = -5
13 b = 2
14 c = 10
15 result = sum_of_squares(a, b, c)
16 print(result)
>>
Aunque esta es una idea bastante simple, en la práctica este ejemplo
ilustra muchos conceptos de Python muy importantes, incluidos los locales y globales
Variables junto con el paso de parámetros. Tenga en cuenta que cuando atraviesas esto
Ejemplo, Codelens Bolds Line 1 y Line 5 a medida que se definen las funciones. El
cuerpo de cuadrado no se ejecuta hasta que se llama desde el sum_of_squares
función por primera vez en la línea 6. También tenga en cuenta que cuando square
es
llamado hay dos grupos de variables locales, uno para square
y uno
para sum_of_squares
. A medida que avance, notará que x
, y y
son variables locales en ambas funciones e incluso pueden tener
diferentes valores. Esto ilustra que a pesar de que se denominan iguales,
De hecho, son muy diferentes.
Ahora veremos otro ejemplo que usa dos funciones. Este ejemplo ilustra un importante técnica de resolución de problemas de informática llamada generalización . Suponga que queremos escribir una función para dibujar un cuadrado. El paso de generalización es darse cuenta de que un Square es solo un tipo especial de rectángulo.
Para dibujar un rectángulo necesitamos poder llamar a una función con diferente Argumentos de ancho y altura. A diferencia del caso de la plaza, No podemos repetir lo mismo 4 veces, porque los cuatro lados no son iguales. Sin embargo, es el caso que dibujar los lados inferior y derecho son los La misma secuencia que dibujar los lados superior e izquierdo. Entonces finalmente se nos ocurrió Este código bastante bonito que puede dibujar un rectángulo.
>>def drawRectangle(t, w, h):
>> """Get turtle t to draw a rectangle of width w and height h."""
>> for i in range(2):
>> t.forward(w)
>> t.left(90)
>> t.forward(h)
>> t.left(90)
Los nombres de los parámetros se eligen como letras individuales para la concisión. En programas reales, insistiremos en mejores nombres de variables que este. El punto es que el programa no "entiende" que estás dibujando un rectángulo o que el Los parámetros representan el ancho y la altura. Conceptos como rectángulo, ancho y altura son significativos para humanos. No son conceptos que el programa o la computadora entiendan.
Pensar como un científico informático implica buscar patrones y relaciones. En el código anterior, lo hemos hecho hasta cierto punto. Hicimos No solo dibuja cuatro lados. En cambio, vimos que podríamos dibujar el Rectángulo como dos mitades y usó un bucle para repetir ese patrón dos veces.
Pero ahora podríamos detectar que un cuadrado es un tipo especial de rectángulo. Un cuadrado Simplemente usa el mismo valor tanto para la altura como para el ancho. Ya tenemos una función que dibuja un rectángulo, por lo que podemos usarla para dibujar nuestra plaza.
>>def drawSquare(tx, sz): # a new version of drawSquare
>> drawRectangle(tx, sz, sz)
Aquí está el ejemplo completo con el código de configuración necesario.
No hay comentarios.:
Publicar un comentario