如何在Python中嵌套单行语句?

如何在Python中嵌套单行语句?,python,syntax,nested,Python,Syntax,Nested,一个简单的问题。首先,我注意到在Python中,我可以通过更改以下简短语句使事情更加简洁: if some_condition: do_something() 为此: if some_condition: do_something() if some_condition: if other_condition: do_something() 当然,只有当if语句中的代码只包含一行时,这种更改才起作用 但是,如果有多个嵌套的“构造”(我指的是if-else、for、while或try

一个简单的问题。首先,我注意到在Python中,我可以通过更改以下简短语句使事情更加简洁:

if some_condition:
    do_something()
为此:

if some_condition: do_something()
if some_condition: if other_condition: do_something()
当然,只有当if语句中的代码只包含一行时,这种更改才起作用

但是,如果有多个嵌套的“构造”(我指的是if-else、for、while或try-except语句),则会出现语法错误。例如,我无法更改以下内容:

if some_condition:
    if other_condition:
        do_something()
为此:

if some_condition: do_something()
if some_condition: if other_condition: do_something()
甚至这个:

if some_condition: if other_condition:
    do_something()
但这确实有效:

if some_condition:
    if other_condition: do_something()
我的猜测是,这样做的原因是在一行上有两个结构会产生某种歧义。我想知道是否有某种方法,我仍然可以把两个语句放在一行,但它的工作。例如,可能与此类似:

if some_condition: (if other_condition: do_something())
当然,这是行不通的。然而,希望它能让我更清楚地知道我到底想做什么。除了“你不应该这样做”之外,任何想法都会受到欢迎


在我听到你们这些纯粹主义者蜂拥而至,鼓吹这不是Pythonic或其他什么之前,是的,我知道这不是用Python编写代码的最佳方式。认为这是一个研究问题。我只是想知道我要找的东西是否可行。

不可能在一行上放多个冒号

无论如何,建议始终在冒号后面加新行。在大多数情况下,最好遵循此指南


正如@Suven Pandey所指出的,
if
语句可以使用嵌套的三元运算符嵌套在一行上,但请不要在一行上使用多个语句。在这一点上,代码非常难看且不可读。

在某些情况下,您可以执行以下操作:

a = 7
b = 4
print(a) if a == 7 else 3 if b ==4 else 0 #print a 
print(a) if a == 27 else 3 if b ==4 else 0 #print 3
print(a) if a == 27 else 3 if b ==44 else 0 #print 0
如果a==7,这与print(a)类似 else(如果b==4,则为3)#如果a!=但b=4 否则0#均为假
但这会让人困惑,而且通常是个坏主意,违反了python的禅宗思想。

只要在要执行的字符串中提供正确的换行符和制表符组合,就可以使用exec函数在一行上组合嵌套的构造

exec ('a=7\nif a>3:\n\tfor x in range(a):\n\t\tif x != 5:\n\t\t\tprint("Wow!")')

可能重复您知道可以将条件与
链接,对吗?这些是三元运算符语句。它们只适用于if语句是的,它们看起来确实很难看,但示例中包括just-if语句。是的,你说得对。我以为问题是关于一行中的多个语句