以下是否在Python中有任何实际用途?
>>> def a(n):
print(n)
return a
甚至:
>>> def a(n):
print(n)
return b
>>> def b(n):
print(n+3)
return a
答案 0 :(得分:2)
这是常见的做法,可能与功能有关,但在OOP中广泛使用。基本上,每当您不使用getter(返回对象属性的方法)或返回特定内容时,就没有 cost 来返回对象本身。但它允许压缩代码,如
house = House()
exits = house.setDoors(2).setWindows(4).getNumberOfEmergencyExitsRequired()
另外,你必须写
house = House()
house.setDoors(2)
house.setWindows(4)
exits = house.getNumberOfEmergencyExistsRequired()
它不是世界末日,但它允许在不降低可读性的情况下压缩代码,因此它是一件好事。
致你的例子
第一个是直接和类似的,它允许压缩代码。第二个实际上不是我个人会做的事情,因为
a(3)(5) == a(3); b(5)
在这个简单的例子中,没有理由说它应该像那样表现并且可能令人困惑。
返回OOP
无论如何,在OOP中,你当然可以想象
class House(object):
def addDoorByColor(self, doorColor):
door = new Door()
door.setColor(doorColor)
self.door = door
return self.door
然后
house = House();
house.addDoorByColor('red').open()
会打开门#34;这可能不是这种情况的最佳示例,但我现在提出的一些事情只是为了表明有可能使用返回"其他对象"。但是,最后一种情况最好由
完成door = new Door('red')
house.addDoor(door)
door.open()