函数返回引用自己的Python

以下是否在
Python中有任何实际用途?

>>> def a(n):
        print(n)
        return a

甚至:

>>> def a(n):
        print(n)
        return b
>>> def b(n):
        print(n+3)
        return a

最佳答案 这是常见的做法,可能与功能不同,但在OOP中广泛使用.基本上,每当您不使用getter(返回对象属性的方法)或返回特定内容时,返回对象本身都没有成本.但它允许压缩代码,如同

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()

会“打开门”.这可能不是这种情况的最佳示例,但我现在提到的东西只是为了表明可能会使用返回“其他对象”.但是,最后一种情况可能更好

door = new Door('red')
house.addDoor(door)
door.open()
点赞