【发布时间】:2017-04-17 11:20:53
【问题描述】:
您通常希望使用None 作为函数的返回值。如果函数返回None 并且如果不使用函数的结果,则如果您想做一件事,是否有避免调用函数两次的 Python 习惯用法。下面是一个愚蠢的例子。
def foo(a, b):
if b == 0:
return(None)
else:
return(a/b)
a = b = 2
if foo(a, b) is None: #Do one thing. 1st call to function.
print('b cannot be null')
else: #Use the result of function. 2nd function call.
print('The result is: ' + str(foo(a,b)) )
这种有状态的方式是另一种选择吗(只有一个函数调用,但需要将可能很大的结果分配给变量)?:
res = foo(a, b)
if res is not None:
print('The result is: ' + str(res) )
else:
print('b cannot be null')
【问题讨论】:
-
您为什么不直接在 foo 中执行您需要的操作?如果您打印 b 或在 foo.h 中打印结果。结果在函数 foo 的范围和上下文中。
-
是的——这是一个很好的建议(——也许很明显,但是,嘿,我想在这里学习)
-
结果是否巨大并不重要,将其分配给变量并不是一项昂贵的操作。但另一种方法可能是抛出异常而不是返回
None。 -
我明白了 - 因为异常不会停止/破坏程序?
标签: python function if-statement