函数返回引用自己的Python

时间:2014-05-20 07:32:43

标签: python function reference

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

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

甚至:

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

1 个答案:

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