【发布时间】:2018-04-11 19:46:00
【问题描述】:
想象一下我有两个功能
def areaSquare(a,b):
print( a * b)
def areaCircle(radius):
print(3.14159 * radius ** 2)
我想创建第三个函数,称为 area。
area(areaCircle,radius = 3, repeat = 5)
# prints 3.14159 * 9 five times
area(areaSquare, a = 2, b = 3, repeat = 6)
# prints 2 * 6 six times
所以函数接受一个函数作为参数。根据作为参数传递给它的函数,它应该需要额外的参数。有没有办法做到这一点?我知道函数重载将是一种选择。但我不想为此定义多个函数。
【问题讨论】:
-
在这种情况下我不会使用函数而是使用类。使用 circle 和 square 方法定义一个类 Area,您可以在其中优雅地传递参数。
-
你应该检查一下 -> stackoverflow.com/questions/6289646/…
-
@JeanRostan:你能详细说明你的意思吗?与 Willem Van Onsem 的答案相比,您的方法有哪些优势。
-
@MrYouMath 我会说代码的可读性,但这可能是个人意见。它也更自然,Willem 的回答是完美的,但对我来说没有类的自定义方法那么快,它允许你干净地做很多黑客,隐藏在类后面。尽管如此,他的回答很有趣,但我建议你检查 OOP(面向对象编程),它最终会对你有用。
标签: python function parameters overloading