Python for i in range(len(str)):last iteration打印None

时间:2017-06-04 07:59:18

标签: python string for-loop

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):

最后的结果仍然是无

这是为什么? 我怎么阻止它?

3 个答案:

答案 0 :(得分:4)

当您致电print(fun('abc'))时,首先拨打fun1确实打印23funNone完成后,你打印它的返回值。由于您没有显式返回任何内容,因此Python会隐式返回print

长话短说 - 不要在fun致电fun,只需致电string = 'abc' fun(string) # Here

0, 1, 2

答案 1 :(得分:3)

fun函数中的print语句从None获取print(fun(string)) ,而None正在打印:

fun(string)

因为默认情况下python函数返回if (!query.length) return callback(); ,这就是你在这里得到它的原因。您可以直接调用它而无需打印语句。

if (query.length < 3) return callback();

答案 2 :(得分:1)

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