How do I write a function that returns another function?

前端 未结 4 1779
悲&欢浪女
悲&欢浪女 2020-12-07 15:32

In Python, I\'d like to write a function make_cylinder_volume(r) which returns another function. That returned function should be callable with a parameter

4条回答
  •  醉话见心
    2020-12-07 16:12

    Try this, using Python:

    import math
    def make_cylinder_volume_func(r):
        def volume(h):
            return math.pi * r * r * h
        return volume
    

    Use it like this, for example with radius=10 and height=5:

    volume_radius_10 = make_cylinder_volume_func(10)
    volume_radius_10(5)
    => 1570.7963267948967
    

    Notice that returning a function was a simple matter of defining a new function inside the function, and returning it at the end - being careful to pass the appropriate parameters for each function. FYI, the technique of returning a function from another function is known as currying.

提交回复
热议问题