簡體   English   中英

Python對於范圍(len(str))中的i:最后一次迭代不打印

[英]Python For i in range(len(str)): last iteration prints None

def fun(str):
    for i in range(len(str)):
        print(i)

string = 'abc'

print(fun(string))

打印結果是

0
1
2
None

如果我改變

for i in range(len(str)-1):

最后的結果仍然是None

為什么是這樣? 我該如何阻止它?

當你調用print(fun('abc'))你首先調用fun ,這的確打印123 ,一次fun完成,打印其返回值。 由於您沒有明確返回任何內容,因此Python會為您隱式返回None

長話短說-不要將print稱為fun ,只需調用fun

string = 'abc'

fun(string) # Here

您將從fun函數的print語句中獲取0, 1, 2None的打印方式為:

print(fun(string))

由於默認情況下python函數返回None ,這就是為什么要在這里獲取它。 您可以直接調用它,而無需打印語句。

fun(string)

這是因為您使用了print(fun(string)),並且函數中有一條print語句。 因此,它將在函數內部執行打印,並且在函數沒有返回值的情況下執行另一次打印,因此執行None。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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