如何从具有多个输出的函数中获取单个输出?

时间:2015-09-08 16:52:12

标签: python function return

我有以下简单的功能:

extension UIView {
    func toImage() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)

        drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

如果我访问变量def divide(x, y): quotient = x/y remainder = x % y return quotient, remainder x = divide(22, 7) ,我得到:

x

有没有办法只获得商余数?

3 个答案:

答案 0 :(得分:3)

你实际上是在返回一个元组,这是一个我们可以索引的可迭代元素,所以在上面的例子中:

print x[0]将返回商和

print x[1]将返回余数

答案 1 :(得分:2)

您有两个广泛的选择:

  1. 修改函数以根据需要返回其中一个或两个,例如:

    def divide(x, y, output=(True, True)):
        quot, rem = x // y, x % y
        if all(output):
            return quot, rem
        elif output[0]:
            return quot
        return rem
    
    quot = divide(x, y, (True, False))
    
  2. 保持函数不变,但显式忽略其中一个或另一个返回值:

    quot, _ = divide(x, y)  # assign one to _, which means ignore by convention
    rem = divide(x, y)[1]  # select one by index
    
  3. 我强烈推荐后一种配方之一;它的很多更简单!

答案 2 :(得分:1)

您可以在调用方法时解压缩返回值:

x, y = divide(22, 7)

或者你可以抓住第一个返回值:

x = divide(22, 7)[0]