簡體   English   中英

為什么這也返回None

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM