在 Python 函数 returns 中使用括号的最佳实践?

Best practice for using parentheses in Python function returns?

我正在学习 Python,到目前为止,我非常喜欢它。关于它的一切。

我只有一个关于函数 return 中看似不一致的问题,我有兴趣了解规则背后的逻辑。

如果我 return 在函数 return 中输入文字或变量,则不需要括号:

def fun_with_functions(a, b):
    total = a + b
    return total

但是,当我 returning 另一个函数调用的结果时,该函数包含在一组括号中。即:

 def lets_have_fun():
     return(fun_with_functions(42, 9000))

至少,这是我被教导的方式,使用 A Smarter Way to Learn Python book. I came across this discrepancy and it was given without an explanation. You can see the online exercise here(跳到练习 10)。

有人可以向我解释为什么这是必要的吗?甚至有必要吗?还有我应该注意的括号语法的其他类似变化吗?

编辑:我改写了问题的标题以反映答复。返回括号内的结果不是强制性的,正如我最初认为的那样,但它通常被认为是最佳实践,正如我现在了解到的那样。

我认为这不是强制性的。在 python2 和 python3 中都尝试过,并且在 lets_have_fun() return 子句中没有括号定义的无函数工作得很好。所以正如jack6e所说,只是一种偏好。

如果你

return ("something,)   # , is important, the ( ) are optional, thx @roganjosh

你正在返回一个元组。

如果您要返回

return someFunction(4,9) 

return (someFunction(4,9))

没有区别。要进行测试,请使用:

def f(i,g):    
    return i * g

def r():    
    return f(4,6)

def q():
    return (f(4,6))

print (type(r()))
print (type(q()))

输出:

<type 'int'>
<type 'int'>

没必要。使用括号有多种原因,其中一个原因是代码风格:

example = some_really_long_function_name() or another_really_function_name()

所以你可以使用:

example = (some_really_long_function_name()
           or
           another_really_function_name())

它的另一种用法就像在数学中一样,强制先于求值。所以你要确保之前括号之间的执行。我想函数 return 是另一个函数的结果,确保第一个函数的执行只是最佳实践,但没有必要。