2011-04-21 37 views
0

我想在pythton每一行是一个statment,但看看下面:Python的缩进

class Report(p.Report): 
def create(self): 
    self.set(background=sp.LightYellow) 
    self.add(p.Row(p.Text("Trip Name", 
        valign=p.CENTER, 
        font=p.font(weight=p.BOLD)), 
      p.Column(p.Text("Costs", 
        align=p.CENTER))) 

我还以为我们是不允许,除非该语句结束才能到下一行。它在下一行中写入valign = p.CENTER。这怎么可能?我们怎样才能打破界限,继续下一行的陈述? 它也写p.Column在另一条线,但它具有相同的缩进与p.Row,它是一个规则?

+0

有9条语法规则。 http://docs.python.org/reference/lexical_analysis.html#line-structure。这些让你感到困惑?是不是这一个:http://docs.python.org/reference/lexical_analysis.html#implicit-line-joining?请在您的问题中提及这是否是造成混淆的根源。 – 2011-04-21 10:48:01

回答

5

简单地说,一个语句可以只要有一个开括号或括号或大括号,就继续下一行。

有效:

print ("hello " 
     "world" 
     "!") 

无效:

print "hello " 
     "world" 
     "!" 
+1

您忘记了这个:http://docs.python.org/reference/lexical_analysis.html#implicit-line-joining – 2011-04-21 10:48:17

2

你打开一个支架(圆形或方形)所有identation被忽略,直到你关闭一个第二:

print(1, 
      15, 
    4) 

是完全等于

print(1, 15, 4) 
0

线没有关闭,直到所有的()是匹配的。也适用于[]和{}

0

没有,语句可以在几种情况下继续在。在这种情况下,一个开放的括号为参数列表中的存在意味着该声明并没有结束,直到括号关闭。标记列表,元组,字典的开始和结束的括号和元素也是如此。

+0

完美!感谢所有的答案! – alwbtc 2011-04-21 10:48:54

0

不,它允许写声明,对2号线,如果有支架包装。例如,我们可以这样写:

a = ('1' + '2' + '3' + 
    '4' + '5')