在没有参数的函数中调用函数

时间:2016-03-07 21:08:44

标签: python function python-3.x

快速提问:

我想调用一个没有任何参数的main函数,并且在main函数中,我还有其他几个有参数的函数。我该怎么做呢?

以下是多个功能:

 # Takes the Portfolio dictionay, unpacks the multiple tuples, and calculates
 # the total price of the shares at time of purchase

def total_purchase_price(portfolio):
    totalprice = 0
    totalpurprice = 0
    for item in portfolio:
        purdate, purprice, numshares, sym, curprice = item
        totalprice += purprice * numshares
        totalpurprice = totalprice
    return totalpurprice

# Takes the Portfolio dictionay, unpacks the multiple tuples, and calculates
# the current total value of the shares

def total_value(portfolio):
    totalprice = 0
    totalvalueprice = 0
    for item in portfolio:
        purdate, purprice, numshares, sym, curprice = item
        totalprice += curprice * numshares
        totalvalueprice = totalprice
    return totalvalueprice   

# Takes the previous two functions, and subtracts them to get the total
# gain/lost of the shares

def total_gain(total_purchase_price, total_value, portfolio):
    gainlost = total_value - total_purchase_price
    return gainlost

离。我现在所拥有的(注意:我知道这不会起作用,只是因为每个函数都会返回一个值,因此我会想要它):

def testQ1(total_purchase_price, total_value, total_gain, portfolio):
    print("Total Cost =", total_purchase_price)
    print("Current Value =", total_value)
    print("Total gain/lost =", total_gain)
    return

离。我想要实现的目标:

def testQ2():
    total_purchase_price(portfolio)
    total_value(portfolio)
    total_gain(total_purchase_price, total_value, portfolio)
    print("Total Cost =", total_purchase_price)
    print("Current Value =", total_value)
    print("Total gain/lost =", total_gain)
    return   

我该怎么做?感谢

2 个答案:

答案 0 :(得分:3)

使用类可能更容易:

class PortfolioParser:
    def __init__(self, portfolio):
        self.portfolio = portfolio
        self.price = self.total_purchase_price()
        self.value = self.total_value()
        self.gain = self.total_gain()

    def total_purchase_price(self):
        # Takes the Portfolio dictionay, unpacks the multiple tuples, and calculates
        # the total price of the shares at time of purchase
        totalprice = 0
        totalpurprice = 0
        for item in self.portfolio:
            purdate, purprice, numshares, sym, curprice = item
            totalprice += purprice * numshares
            totalpurprice = totalprice
        return totalpurprice      

    def total_value(self):
        # Takes the Portfolio dictionay, unpacks the multiple tuples, and calculates
        # the current total value of the shares
        totalprice = 0
        totalvalueprice = 0
        for item in self.portfolio:
            purdate, purprice, numshares, sym, curprice = item
            totalprice += curprice * numshares
            totalvalueprice = totalprice
        return totalvalueprice   

    def total_gain(self):
        # Takes the previous two functions, and subtracts them to get the total
        # gain/lost of the shares
        return self.value- self.price

    def testQ2(self):
        print("Total Cost = {0}\nCurrent Value = {1}\nTotal Gains = {2}".format(self.price, self.value, self.gain))

然后你会像这样使用它:

myPortfolio = # The portfolio to parse
parser = PortfolioParser(myPortfolio)
parser.testQ2()

答案 1 :(得分:1)

投资组合是唯一不在testQ2中计算的参数。你需要有一个全局值,或者读入它(可能在另一个函数中)。计算完毕后,按适当的顺序返回值。

def testQ2():
    portfolio = getPortfolio()
    tp = total_purchase_price(portfolio)
    tv = total_value(portfolio)
    tg = total_gain(tp, tv, portfolio)
    print("Total Cost =", tp)
    print("Current Value =", tv)
    print("Total gain/lost =", tg)
    return portfolio, tp, tv, tg