6.10. Composition
Como ya hemos visto, puede llamar a una función desde otra. Esta capacidad de construir funciones mediante el uso de otras funciones se llama composición.
Como ejemplo, escribiremos una función que toma dos puntos, el centro del Círculo y un punto en el perímetro y calcula el área del círculo.
Suponga que el punto central se almacena en las variables xc
y yc
, y
El punto perimetral está en xp
y yp
. El primer paso es encontrar el
Radio del círculo, que es la distancia entre los dos puntos.
Afortunadamente, acabamos de escribir una función, distance
, eso hace exactamente eso,
Así que ahora todo lo que tenemos que hacer es usarlo:
radius = distance(xc, yc, xp, yp)
El segundo paso es encontrar el área de un círculo con ese radio y devolverlo. Nuevamente usaremos una de nuestras funciones anteriores:
result = area(radius)
return result
Envolviendo eso en una función, obtenemos:
>>def distance(x1, y1, x2, y2):
>> dx = x2 - x1
>> dy = y2 - y1
>> dsquared = dx**2 + dy**2
>> result = dsquared**0.5
>> return result
>>def area(radius):
>> b = 3.14159 * radius**2
>> return b
>>def area2(xc, yc, xp, yp):
>> radius = distance(xc, yc, xp, yp)
>> result = area(radius)
>> return result
>>print(area2(0,0,1,1))
Llamamos a esta función area2
para distinguirlo del area
función
definido anteriormente. Solo puede haber una función con un nombre de pila dentro de un
módulo.
Tenga en cuenta que podríamos haber escrito la composición sin almacenar los resultados intermedios.
>>def area2(xc, yc, xp, yp):
>> return area(distance(xc, yc, xp, yp))
No hay comentarios.:
Publicar un comentario