是否有可能在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"