Python For i在范围内(len(str)):最后一次迭代打印无

Python For i在范围内(len(str)):最后一次迭代打印无,python,string,for-loop,Python,String,For Loop,打印结果为 def fun(str): for i in range(len(str)): print(i) string = 'abc' print(fun(string)) 如果我改变 0 1 2 None 最后的结果仍然是零 为什么会这样? 当你调用print(fun('abc'))时,你首先调用fun,它确实会打印1、2和3,一旦fun完成,你就打印它的返回值。由于没有显式返回任何内容,Python隐式地为您返回None 长话短说-不要在fun上调用pri

打印结果为

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

string = 'abc'

print(fun(string))
如果我改变

0
1
2
None
最后的结果仍然是零

为什么会这样? 当你调用
print(fun('abc'))
时,你首先调用
fun
,它确实会打印
1
2
3
,一旦
fun
完成,你就打印它的返回值。由于没有显式返回任何内容,Python隐式地为您返回
None

长话短说-不要在
fun
上调用
print
,只要调用
fun

for i in range(len(str)-1):
当你调用
print(fun('abc'))
时,你首先调用
fun
,它确实会打印
1
2
3
,一旦
fun
完成,你就打印它的返回值。由于没有显式返回任何内容,Python隐式地为您返回
None

长话短说-不要在
fun
上调用
print
,只要调用
fun

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

您从
fun
函数中的print语句中获得
0,1,2
,而
None
通过以下方式获得打印:

string = 'abc'

fun(string) # Here
因为,在默认情况下,python函数返回
None
,这就是为什么在这里得到它。您可以直接调用它,而无需打印语句

print(fun(string))

您从
fun
函数中的print语句中获得
0,1,2
,而
None
通过以下方式获得打印:

string = 'abc'

fun(string) # Here
因为,在默认情况下,python函数返回
None
,这就是为什么在这里得到它。您可以直接调用它,而无需打印语句

print(fun(string))

这是因为您使用print(fun(string))并且在函数中有一个print语句。因此,它在函数中执行print,在函数中执行另一个没有返回值的print,因此为None。

这是因为您使用print(fun(string))并且函数中有一个print语句。因此,它在您的函数中执行打印,并在没有函数返回值的情况下执行另一个打印,因此无。

ahh我明白了。我用print在ctci中调试一个算法,它一直让我不高兴。谢谢你啊,我明白了。我正在用print调试ctci中的一个算法,它一直让我很不高兴。谢谢