为什么我不能在Python中的流控制条件中使用return()?
考虑这一功能:为什么我不能在Python中的流控制条件中使用return()?,python,return,conditional-operator,Python,Return,Conditional Operator,考虑这一功能: def parity(num): num % 2 == 0 and return "that is even" return "that is odd" 函数的第一行是语法错误,我使用的是v3.7.3。为什么?看来你应该可以从你想去的任何地方回来 注意:我意识到在这种情况下,我可以使用 return "that is even" if num % 0 == 0 else "that is odd" 那不是我的问题。我的问题是,如果你写下以下内容,它会更紧凑,更
def parity(num):
num % 2 == 0 and return "that is even"
return "that is odd"
函数的第一行是语法错误,我使用的是v3.7.3。为什么?看来你应该可以从你想去的任何地方回来
注意:我意识到在这种情况下,我可以使用
return "that is even" if num % 0 == 0 else "that is odd"
那不是我的问题。我的问题是,如果你写下以下内容,它会更紧凑,更容易阅读流程:
condition 1 or return "condition one was not met"
condition 2 or return "condition two was not met"
condition 3 or return "contition three what not met"
[rest of the function goes here]
比:
除了对简洁性/可读性的偏好之外,我认为不能在代码中的那个位置执行返回对我来说毫无意义。报告说:
7.6。返回语句
return_stmt ::= "return" [expression_list]
返回只能在语法上嵌套在函数定义中,
不在嵌套类定义中
如果存在表达式列表,则对其求值,否则不求值
替换
return将当前函数调用与表达式列表或
无作为返回值
当return用finally将控件从try语句中传递出去时
子句,该finally子句在真正离开
功能
在生成器函数中,return语句表示
生成器已完成,并将引发StopIteration。这个
返回值(如果有)用作构造的参数
StopIteration并成为StopIteration.value属性
在异步生成器函数中,一种空的返回语句
指示异步生成器已完成并将导致
停止要引发的迭代。非空返回语句是
异步生成器函数中存在语法错误
在我看来,这个定义并没有排除我正在尝试的用法。这里有什么我不明白的吗?这里的区别是语句和表达式之间的区别。A if B else C表达式要求A、B和C为表达式。return是一个语句,因此它在那里不起作用-与break或raise相同。原因就在它的名称中。这是一份声明。陈述和表达是不同的。可以将多个表达式组合成一个更大的表达式。但声明却并非如此;语句的定义特征是它不能是更大表达式的一部分,部分原因是它的行为与通常控制流的行为不同,部分原因是它不会产生可以组成更大表达式的值 我想指出,如果不满足条件1:返回条件1未满足,则可以将所有内容放在一行上,这可能适用于您所需的流程是的,您丢失了,请点击您自己查看条款,即。。当你到达目的地时,你会明白你不能在那里放一个回车,因为语法不允许它-
return_stmt ::= "return" [expression_list]