两个代码应如何修改才不会出现None?
def fun1():print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return
fun2()
>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用…
None # 不想出现这行
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return
return fun2()
>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用…
None # 不想出现这行 第一个代码中, fun1() 没有返回值,因此当我们在 print() 语句中调用 fun1() 时,它返回 None 。为了避免出现 None ,我们可以将 fun1() 中的 fun2() 函数的返回值返回给 fun1() 。
修改后的代码如下:
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return fun2()
print(fun1())
第二个代码中, fun1() 中的 return 语句返回的是 fun2() 函数的返回值,但是 fun2() 函数没有返回值,因此 fun1() 的返回值为 None 。为了避免出现 None ,我们可以将 fun2() 函数的返回值改为一个非 None 的值。
修改后的代码如下:
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return 0
return fun2()
print(fun1())
本帖最后由 lzb1001 于 2023-5-25 12:35 编辑
isdkz 发表于 2023-5-25 11:53
第一个代码中, fun1() 没有返回值,因此当我们在 print() 语句中调用 fun1() 时,它返回 None 。为了避免 ...
第一个代码不行吧,看看下面的结果还是有一个None:
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return fun2()
>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用…
None
第二个代码可以直接这样改吧,刚试的:
def fun1():
print('fun1()正在被调用…')
def fun2():
return 'fun2()正在被调用…'
return fun2()
>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用… 第一个代码中,因为`fun1()`没有返回任何值,所以`print(fun1())`会输出`None`。要去掉这行,只需要将`print(fun1())`改为`fun1()`即可。
修改后的代码如下:
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return
fun2()
fun1() # 不需要再加上print
第二个代码中,因为`fun2()`有返回值,但是`fun1()`没有对其进行处理,所以仍然会输出`None`。要去掉这行,只需要将`fun2()`改为`return fun2()`即可。
修改后的代码如下:
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
return
return fun2()
fun1() # 不需要再加上print 最后一行 不要加 print 就好了 本帖最后由 lzb1001 于 2023-5-26 12:31 编辑
sfqxx 发表于 2023-5-25 22:49
第一个代码中,因为`fun1()`没有返回任何值,所以`print(fun1())`会输出`None`。要去掉这行,只需要将`prin ...
感谢解答。
1、第一个代码中,因为`fun1()`没有返回任何值,
----按你发的,代码没有修改,也就是说fun1()`仍然没有返回任何值吧?
2、第二个代码中,因为`fun2()`有返回值,但是`fun1()`没有对其进行处理,所以仍然会输出`None`。要去掉这行,只需要将`fun2()`改为`return fun2()`即可。
---我发的代码中不就是return fun2()嘛?
看了大神的解答,也就是说两个原代码都不用改变,只要改调用的形式即可
即:只要把两个print都去掉就行
对吧? lzb1001 发表于 2023-5-26 12:15
感谢解答。
1、第一个代码中,因为`fun1()`没有返回任何值,
是的,您的理解基本上是正确的。
对于原代码1,因为 fun1() 函数没有返回任何值,所以执行 print(fun1()) 时会先输出 fun1()正在被调用… 和 fun2()正在被调用… 这两行,然后再输出 None,表示函数 fun1() 没有返回值。如果只想输出 fun1()正在被调用… 和 fun2()正在被调用… 这两行,可以直接调用函数 fun1() 而不使用 print(),如下所示:
fun1()
对于原代码2,因为 fun2() 函数有返回值,但是在 fun1() 函数中没有进行处理,所以执行 print(fun1()) 时同样会输出 fun1()正在被调用… 和 fun2()正在被调用… 这两行,然后再输出返回值 None。如果只想输出 fun1()正在被调用… 和 fun2()正在被调用… 这两行,可以将 return fun2() 改为 fun2() 来避免返回值的影响,如下所示:
def fun1():
print('fun1()正在被调用…')
def fun2():
print('fun2()正在被调用…')
fun2()
fun1()
不需要使用 print() 就可以直接调用函数 fun1() 来输出结果。
给我最佳答案呗{:10_254:}
页:
[1]