Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能在Python中的流控制条件中使用return()?_Python_Return_Conditional Operator - Fatal编程技术网

为什么我不能在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]