在其他函数中获取函数的返回值?

时间:2016-09-22 01:11:38

标签: python function

有没有办法在其他函数中访问函数的返回值?

可能下一个代码会解释我想要做的更多。

class perro:
    def coqueta(self, num1, num2):
        self.num1 = num1
        self.num2 = num2
        return self.num1 + self.num2

    def otro_perro(self, coqueta):
        print otro_perro




mascota = perro()
ejemplo = mascota.coqueta(5,5)
mascota.otro_perro()

print ejemplo 

如何在第二个函数(def)中返回要打印的第一个coquetaotro_perro)?

3 个答案:

答案 0 :(得分:2)

将方法coqueta()的返回值传递到otro_perro(),或直接调用otro_perro() coqueta()。您的代码表明您希望首先执行此操作,因此请按以下方式编写:

class Perro:
    def coqueta(self, num1, num2):
        result = big_maths_calculation(num1, num2)
        return result

    def otro_perro(self, coqueta):
        print coqueta

mascota = Perro()
ejemplo = mascota.coqueta(5, 5)
mascota.otro_perro(ejemplo)

或者,您可以从coqueta()致电otro_perro()

    def otro_perro(self, num1, num2):
        print self.coqueta(num1, num2)

但这也要求您同时将num1num2的值传递到otro_perro()

或许num1num2可以被视为班级Perro的属性?在这种情况下,您可以在创建类时指定它们:

class Perro:
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2

    def coqueta(self):
        result = big_maths_calculation(self.num1, self.num2)
        return result

    def otro_perro(self, coqueta):
        print self.coqueta()    # N.B. method call

或者另一种可能性是缓存“大计算”的结果:

class Perro:
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2
        self.result = None

    def coqueta(self):
        if self.result is None:
            self.result = big_maths_calculation(self.num1, self.num2)
        return self.result

    def otro_perro(self, coqueta):
        print self.coqueta()    # N.B. method call

现在昂贵的计算只在需要时执行一次,其结果存储起来供以后使用,无需重新计算。

答案 1 :(得分:0)

这有什么不对吗?

mascota = perro()
ejemplo = mascota.coqueta(5,5)
mascota.otro_perro(ejemplo)

或,

mascota = perro()
mascota.otro_perro(mascota.coqueta(5,5))

答案 2 :(得分:0)

只需将其设为csv<-data.frame(c(100,50,100),c(1,1,1),c(NA,12,NA)) csv$complete<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && complete.cases(x)}) #check that column_1==100, and column_2=1, and no missing values in the row csv$complete2<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && anyNA(x, recursive = FALSE)}) > csv c.100..50..100. c.1..1..1. c.NA..12..NA. complete complete2 1 100 1 NA TRUE TRUE 2 50 1 12 FALSE FALSE 3 100 1 NA TRUE TRUE 类的属性即可。这真的是课堂的重点,模块化,组织和封装你的数据,而不是在任何地方使用perro

global

我在class perro: def coqueta(self, num1, num2): self.num1 = num1 self.num2 = num2 self._otro_perro = self.num1 + self.num2 def otro_perro(self): print self._otro_perro mascota = perro() mascota.coqueta(5,5) mascota.otro_perro() # will print the value of self._orto_perro 之前添加了额外的下划线,因为您已经为该方法使用了该名称。作为一个不相关的旁注,类命名为Python中的大写字母。因此orto_perro将成为perro