是否有可能在Python中打破多行

就像C一样,你可以将一条长线分成多条短线。 但在Python中 ,如果我这样做,会有一个缩进错误…是否有可能?

从PEP 8 – Python的风格指南代码 :

包装长行的首选方法是在括号,括号和大括号内使用Python的隐含行连续。 如有必要,可以在expression式的周围添加一对额外的括号,但有时使用反斜杠看起来更好。 确保适当缩进续行。

隐式行连续的例子:

a = some_function( '1' + '2' + '3' - '4') 

关于二元运算符的换行符,它继续说:

数十年来,推荐的风格是打破二元运算符。 但是这样做可能会以两种方式影响可读性:操作员往往会在屏幕上的不同列上分散,每个操作员都会从操作数移动到前一行。

在Python代码中,只要约定在本地是一致的,就可以在二元运算符之前或之后中断。 对于新的代码Knuth的风格(在运营商之前的换行符)被build议。

显式行继续的例子:

 a = '1' \ + '2' \ + '3' \ - '4' 

有不止一种方法来做到这一点。

1)。 长话:

 >>> def print_something(): print 'This is a really long line,', \ 'but we can make it across multiple lines.' 

2)。 使用括号:

 >>> def print_something(): print ('Wow, this also works?', 'I never knew!') 

3)。 再次使用\

 >>> x = 10 >>> if x == 10 or x > 0 or \ x < 100: print 'True' 

引用PEP8 :

包装长行的首选方法是在括号,括号和大括号内使用Python的隐含行连续。 如有必要,可以在expression式的周围添加一对额外的括号,但有时使用反斜杠看起来更好。 确保适当缩进续行。 打破二元运算符的首选位置是运算符之后 ,而不是在它之前。

它也适用于Python:

 >>> 1+\ 2+\ 3 6 >>> (1+ 2+ 3) 6 

如果你想分配一个长的variables,你可以这样做,如下所示:

 net_weights_pathname = ( '/home/acgtyrant/BigDatas/' 'model_configs/lenet_iter_10000.caffemodel') 

不要添加任何逗号,否则你会得到一个包含许多strs的元组!

据我所知,这是可以做到的。 对于三引号string( """like this""" ),Python有隐式行连续(括号,括号和string),并且连续行的缩进并不重要。 欲了解更多信息,你可能想阅读这篇关于词法分析的文章,从python.org。

当试图input连续的文本(比如一个查询)时,不要在行尾加上逗号,否则会得到一个string列表而不是一个长string:

 queryText= "SELECT * FROM TABLE1 AS T1"\ "JOIN TABLE2 AS T2 ON T1.SOMETHING = T2.SOMETHING"\ "JOIN TABLE3 AS T3 ON T3.SOMETHING = T2.SOMETHING"\ "WHERE SOMETHING BETWEEN <WHATEVER> AND <WHATEVER ELSE>"\ "ORDER BY WHATEVERS DESC" 

有点像这样

acgtyrant有这样的评论,对不起,没有看到。 :/

数据库相关的代码看起来更容易在多行中的眼睛,由一对三重引号括起来:

 SQL = """SELECT id, fld_1, fld_2, fld_3, ...... FROM some_tbl""" 

比以下一条巨型长线:

 SQL = "SELECT id, fld_1, fld_2, fld_3, .................................... FROM some_tbl"