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

时间:2012-02-14 04:08:26

标签: python

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

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

如何在一行with语句后执行if阻止?

2 个答案:

答案 0 :(得分: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

见这里:

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

  

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

if test1: if test2: print x

答案 1 :(得分:3)

您无需在bash脚本中提供单行输入。这是一个bash脚本,它将多行命令传递给python

$ less wibble.sh
python -c "
x = 1
if x:
    if x:
        print x
"

这就是它正在运行

$ bash wibble.sh
1