Python 是“;具有两个值之一的表达式,具体取决于条件;条件表达式的精确定义?
在Think Python,第二版中,作者将条件表达式定义为“一个具有两个值之一的表达式,取决于一个条件。”但在我考虑过它之后,我认为该定义的准确性可能有问题。下面是一个使用条件表达式编写的函数:Python 是“;具有两个值之一的表达式,具体取决于条件;条件表达式的精确定义?,python,python-3.x,conditional,conditional-statements,definition,Python,Python 3.x,Conditional,Conditional Statements,Definition,在Think Python,第二版中,作者将条件表达式定义为“一个具有两个值之一的表达式,取决于一个条件。”但在我考虑过它之后,我认为该定义的准确性可能有问题。下面是一个使用条件表达式编写的函数: def get_sign(n): """Returns 1 if n is a positive number, -1 if n is a negative number, or 0 if n is a zero """ return 1 if n > 0 els
def get_sign(n):
"""Returns 1 if n is a positive number, -1 if n is a negative number,
or 0 if n is a zero
"""
return 1 if n > 0 else -1 if n < 0 else 0
def get_符号(n):
“”“如果n是正数,则返回1;如果n是负数,则返回-1,
如果n是零,则为0
"""
如果n>0,则返回1;如果n<0,则返回1;否则返回0
这里的条件表达式是1 if n>0 else-1 if n<0 else 0
。关于这一点,有两个观察结果:
- 表达式有三个可能值之一,即
、1
或-1
0
- 该值取决于两个条件,即
,和n>0
n<0
那么,作者的定义准确吗?为什么准确,为什么不准确?是一个表达式,其值取决于一个或多个条件,并且具有多个值(至少两个)中的一个。一个更准确的条件表达式定义,为什么和为什么不?您仍然有两个结果。这两个结果中的一个本身依赖于另一个条件表达式并不能改变这一点 我在这里添加了括号来说明我的观点:
1 if n > 0 else (-1 if n < 0 else 0)
将立即打印
instant
,不会调用sleep10secs()
函数。您仍然有两种结果。这两个结果中的一个本身依赖于另一个条件表达式并不能改变这一点
我在这里添加了括号来说明我的观点:
1 if n > 0 else (-1 if n < 0 else 0)
将立即打印
instant
,不会调用sleep10secs()
函数。对于每个条件表达式,只有两个结果。碰巧第一个表达式的结果之一是另一个条件表达式。根据条件计算两个子表达式之一的表达式。@StevenRumbalski这是一个非常好的定义!这有助于理清思路。谢谢。对于每个条件表达式,只有两个结果。碰巧第一个表达式的结果之一是另一个条件表达式。根据条件计算两个子表达式之一的表达式。@StevenRumbalski这是一个非常好的定义!这有助于理清思路。非常感谢。