2014-01-31 122 views
2

我很簡單的python函數返回「無」在它的結束,我不知道爲什麼相當。我看了一些其他帖子,仍然無法弄清楚。 任何幫助表示讚賞。Python函數返回無

這裏是我的代碼:

def printmult(n): 
    i = 1 
    while i <= 10: 
     print (n * i, end = ' ') 
     i += 1 

print(printmult(30)) 
+4

因爲你不會返回任何東西。 – BrenBarn

+3

讓我猜猜,你是一個Ruby程序員,你已經習慣了在方法返回的最後一條語句(不使用'return'關鍵字);) – alfasin

+0

作爲BrenBarn說,你不返回任何值,所以函數返回'None',爲了解決你的代碼問題,你需要用'printmult(30)'替換最後一行。 – 2014-01-31 03:37:19

回答

2

你是不是在功能printmult返回任何東西,因此,當您打印結果printmult(30)這將是None(這是默認值時傳回的功能不會顯式返回任何東西)。

因爲你的方法有print聲明內,它不應該返回的東西(通常當一個方法名是一樣的東西printSomething(),它不返回任何東西),你應該叫它爲:

printmult(30) 

print(printmult(30)) 
2

因爲在Python中,每一個函數返回一個值,而None是,如果你不明確指定別的什麼返回。

你究竟做了什麼預計print(printmult(30))要做什麼?你已經要求它評估printmult(30),然後print無論結果如何。 東西必須由它產生,對吧?或者你是否期待某種異常會被提出?

請確定您知道打印和退貨不是同一件東西

2

其他答案在指出錯誤的位置方面做得很好,即您需要了解打印和返回不一樣。如果你希望你的函數返回一個值,然後可以在可變印刷或商店,你想是這樣的:

def returnmult(n): 
    i = 1 
    result_string = '' 
    while i <= 10: 
     result_string += str(n * i) + ' ' 
     i += 1 
    return result_string 

print(returnmult(30)) 
0

我從紅寶石之際,以及和它起初似乎很奇怪。

如果你print東西有一個print聲明,它返回的最後一件事是None

如果你只是返回的值,然後調用print上的函數它不會輸出None

希望這會有所幫助:)