How come that this syntax doesn't hold in python?
Possible Duplicate:
Conditional operator in Python?
众所周知,这可能是世界上最好的语言。
但我意识到这种语法不适用?!
我在这里做错了什么?
1
| <condition> ? <operation> : <operation> |
- 请不要说"世界上最好的语言"这样的话,它对于某些特定的程序员来说是"最好的"。您可能不会在python中构建操作系统内核。就像你不会用锤子割绳子一样。
- 你在期待什么?那个python遵循C语法?
- @amit the op的意思可能是"总体上,考虑到整个事情……";-)
- @语言是工具。你拥有的工具越多,你就能更好地完成你想做的事情。就像锤子不比剪刀好一样,python也不比c好。如果你同时掌握了它们(或者一般说,大部分),并使用正确的工具完成正确的任务,你可能是最好的。另外,由于我怀疑欧佩克会说所有的语言,他不能说它比其他语言更好。
- -1:做假设,然后问为什么不遵循假设是一个特别糟糕的问题。为什么不(从COBOL)请求alter语句呢?为什么不要求标签和Goto?为什么不要求随机语言的任何其他随机特性呢?
Python中的语法不同。
1
| <operation> if <condition> else <operation> |
例如,
大致相同:
- 我在某个地方也看到了:[, ][condition]的优点是它还可以将操作分组在一起,但是在左侧而不是在右侧,就像在操作代码中那样
- @Joaquin:这会对列表中的两个语句进行评估,所以这与if没什么区别。
- 哦,我明白你的意思了。当b=0时,这个x = [10, 3 / b][b > 0]失败了。
- @华金:试试这个:x = [sys.exit(0), None][True]对x = None if True else sys.exit(0)。
- @Dietrichepp成功了!谢谢!
- 要做到这一点,老的skool方法是:[condition and true_option or false_option][0]。
- @本:不正确。首先,括号是无关的,与condition and true_option or false_option相同。第二,这是错误的:当true_option为假时,它将失败。例如,True and"" or"False"将对"False"进行评估,而"" if True else"False"将对""进行评估。
- 是的,我知道我忘了什么:(condition and [true_option] or [false_option])[0]。自从引入t if c else f语法以来,我已经忘记了它的发展方向。
Python的设计理念之一似乎是尽可能使用单词而不是符号。在这种情况下,最好使用if和else。但这些话已经被采纳了。所以python有点作弊,并使用语法来消除if版本的歧义,该版本控制来自返回值的if版本的流。