[英]Why does this also return None
我有清單x,它是[10,20,30,40,50]
。
所以x的len是5。
因此,以下幾點很有意義:
>>> x=[10,20,30,40,50]
>>> print(list(range(len(x))))
[0, 1, 2, 3, 4]
我已經將以上內容放入function
,並且似乎可以運行。
我在輸出中得到的額外的None
是什么?
def foo(aList):
listLen = len(aList)
for x in list(range(listLen)):
print(x)
x=[10,20,30,40,50]
print(foo(x))
編輯
如果我將以上內容應用於反轉列表的任務,這似乎很好,因此None不會導致問題:
def foo(aList):
newList = []
listLen = len(aList)
for x in list(range(listLen)):
newList.append(aList[listLen-(x+1)])
return newList
x=[10,20,30,40,50]
print(foo(x))
print
將數據發送到標准輸出(通常是終端)。 print
實際上並沒有從函數中“返回”任何東西。 為此,您需要return
關鍵字。 您的函數正在函數中print
結果,並返回None
(默認值)。 然后,函數外部的print
語句將打印返回值None
。
解決方法可能是從函數中返回列表,而不是打印其元素。 然后,您可以在功能之外打印它。 類似於以下內容:
def foo(aList):
listLen = len(aList)
return list(range(listLen))
x=[10,20,30,40,50]
print(foo(x))
print(foo(x))
這將打印foo()函數的返回值。 但是foo()不返回任何內容,這暗含意味着其返回值為None。 所以你最終打印“無”
也許您只是想要這樣:
def foo(aList):
listLen = len(aList)
return list(range(listLen)):
x=[10,20,30,40,50]
print(foo(x))
您從foo打印返回值,並且沒有顯式return語句的函數將返回None。
print(foo(x))
打印出您的函數返回的內容。 您可以使用函數打印列表,但不返回任何內容。
因此,要打印的列表就是您的函數要打印的列表。 打印功能打印無。
此功能應做您想要的。
def foo(aList):
newList = []
listLen = len(aList)
return range(listLen)
然后
x=[10,20,30,40,50]
print foo(x)
您的函數將返回列表,並且print語句將其打印出來。
另一種方法是只調用函數而不打印。
def foo(aList):
listLen = len(aList)
for x in list(range(listLen)):
print(x)
x=[10,20,30,40,50]
foo(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.