【发布时间】:2017-11-05 05:24:20
【问题描述】:
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
这是为什么? 我该如何阻止它?
【问题讨论】:
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,它确实打印1、2 和3,一旦fun 完成,您打印它的返回值。由于您没有显式返回任何内容,因此 Python 会为您隐式返回 None。
长话短说-不要在fun上拨打print,只需拨打fun即可:
string = 'abc'
fun(string) # Here
【讨论】:
您从fun 函数的打印语句中获得0, 1, 2,而None 正在由以下人员打印:
print(fun(string))
因为,默认情况下,python 函数返回None,这就是你在这里得到它的原因。不用打印语句直接调用即可。
fun(string)
【讨论】:
这是因为你使用 print(fun(string)) 并且你的函数中有一个 print 语句。所以它会在你的函数内部执行打印,并在函数中执行另一个没有返回值的打印,所以没有。
【讨论】: