2016-01-18 54 views
-2

我對Python很新,我想知道return和定義一個新函數時()裏面的東西。我不要想運行if __name__ == '__main__':裏面的任何代碼。我想要一個功能來做到這一點。爲什麼這不工作?在其他函數中使用返回的變量

def money(): 
    coins = 100 
    return coins 
def doubleMoney(coins): 
    doubleCoins = int(coins * 2) 
    return doubleCoins 
def printMoney(doubleCoins): 
    print("Your coins doubled are:", doubleCoins) 
if __name__ == '__main__': 
    money() 
    doubleMoney(coins) 
    printMoney(doubleCoins) 
+1

你是什麼意思的「工作」?它不會做任何事情,因爲你從來不會調用任何函數。 – BrenBarn

+0

對不起。我只是修復它。 – retep

+1

你需要更多像'printMoney(doubleMoney(money()))'。 – eskaev

回答

2

不,這是行不通的。將功能想象成一臺機器。你把東西放在一端(參數,又叫做定義一個新函數的()中的東西),然後你在另一端得到一些東西,你得到的是一個的值它不會創建一個變量

所以如果你想使用doubleMoney(coins)的值,你必須要做一些事情,在你的例子中,你只需要調用doubleMoney(coins)這會產生一個值,但是你不會如果你想讓一個函數使用另一個函數返回的值,你必須以某種方式將它們聯繫起來,你可能要找的東西就像這樣:

coins = money() 
doubleCoins = doubleMoney(coins) 
printMoney(doubleCoins) 

你也可以在一行printMoney(doubleMoney(money()))

他們關鍵的一點是,僅僅因爲你所做return coins創建時money()回報並不意味着與的變量。僅返回;如果你想創建一個變量,你必須在函數之外自己做這個,就像我之前展示的例子。

+0

我想在運行時不需要實際定義任何內容。我想要這個功能。 – retep

+0

@retep:你可以通過創建全局變量來實現,但這與返回值無關,也不是一個好主意。或者你可以做我在我的第二個單行示例中所說的話。 – BrenBarn

+0

我用全局變量創建了一個程序,我試圖刪除它們。那就是問題所在。看到http://codereview.stackexchange.com/questions/117070/python-blackjack-program – retep