在一行中的if()条件之后用()语句处理

the*_*eta 0 python

这行没有多大意义,但我想知道它为什么会引发语法错误:

x = 1; if x: with open("x.txt") as f: f.write(x)

如何在一行中执行with块后if语句?

wim*_*wim 6

with声明是一个红色的鲱鱼.甚至以下是语法错误:

>>> x = 1; if x: if x: print x
  File "<stdin>", line 1
    x = 1; if x: if x: print x
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

看这里:

http://docs.python.org/reference/compound_stmts.html

套件可以是与标题位于同一行的一个或多个以分号分隔的简单语句,位于标题的冒号后面,也可以是后续行中的一个或多个缩进语句.只有后一种形式的套件才能包含嵌套的复合语句; 以下是非法的,主要是因为if以下else条款属于哪个条款并不清楚:

if test1: if test2: print x
Run Code Online (Sandbox Code Playgroud)