在Python中,是否有可能将一行长的代码分成多行?
在Python中,如果想要将一个长字符串赋值给变量,可以按照以下方式操作:
net_weights_pathname = ( '/home/acgtyrant/BigDatas/' 'model_configs/lenet_iter_10000.caffemodel')
不要添加逗号,否则你将得到一个包含多个字符串的元组!这个方法之所以可行,是因为Python会自动将括号内的字符串连接起来,而不需要使用+
运算符。
如果要进行字符串插值操作,可以在每个短字符串前面加上f
,例如uri = (f"example.com/version8.2/apps/{self.market}" f"/app/{self.product_name}/ranks?start_date={self.week_ago_str}&end_date={self.today_str}")
如果把所有的字符串放在一个多行字符串中,即三个引号之间,例如("""line 1 line2"""),也能很好地工作,并且可能不会带来"逗号风险" 🙂
在Python中,有多种方法可以将一行长代码分为多行。首先是使用反斜杠\
来实现行继续,比如:
>>> def print_something(): print 'This is a really long line,', \ 'but we can make it across multiple lines.'
这种方式可以将一行代码拆分成多行,通过反斜杠来连接每一行。
其次是使用括号来实现行继续,例如:
>>> def print_something(): print ('Wow, this also works?', 'I never knew!')
这种方式可以将多个括号内的内容作为一行代码,实现行继续的效果。
另外,也可以再次使用反斜杠来实现行继续,例如:
>>> x = 10 >>> if x == 10 or x > 0 or \ x < 100: print 'True'
这种方式可以将一行代码分成多行,通过反斜杠连接每一行。
根据PEP8的建议,最好的方式是在括号、方括号和花括号内使用Python的隐式行继续。如果有必要,可以在表达式周围添加额外的括号,但有时使用反斜杠看起来更好。请确保适当地缩进继续的行。在二元运算符周围断开的首选位置是在运算符之后,而不是之前。
这个问题是在PyOhio的一次代码风格讨论中提出的,我们得出结论,使用括号是一个很好的标准方式。虽然它不是完美的,因为修改文本不是很容易,但至少读起来还不错。
还有一个问题是关于在代码中使用三引号'''
来实现多行,这是否是一个好习惯。另外,第二个方法在Python 2.7中打印出一个元组,而第一个方法在IDLE(v.3.5)中会报语法错误,为什么?如果我不以括号开头,会得到缺少括号的错误。使用括号后没有任何错误。
最后一句提到在运算符之后断开,这与PEP8中建议的在运算符之前断开的方式相对立。
不清楚PEP8是否有所更改,但你引用的内容并不存在,而且与PEP8的建议正好相反。对于新代码,PEP8建议在运算符之前进行换行。
在Python中,有时候需要将一行较长的代码拆分成多行以提高可读性。根据PEP 8中的建议,可以使用括号、方括号和大括号来实现隐式的行续。如果有必要,可以在表达式周围添加额外的括号,但有时使用反斜杠会更好看。在续行时要注意正确缩进。
例如,可以使用隐式行续来拆分一行较长的代码:
a = some_function( '1' + '2' + '3' - '4')
关于二元运算符周围的换行,PEP 8中指出:
几十年来,推荐的编码风格是在二元运算符之后换行。但这样做会影响可读性:运算符在屏幕上会分散在不同的列上,而且每个运算符都会跳到前一行的位置。
在Python代码中,允许在二元运算符之前或之后换行,只要在局部保持一致即可。建议在新代码中采用Knuth的风格(在运算符之前换行)。
例如,可以使用显式行续来拆分一行较长的代码:
a = '1' \ + '2' \ + '3' \ - '4'
对于第二个例子,不能在`\`后面加空格(虽然你看不见)。这个问题不仅仅发生在Python中;例如,在编写Shell脚本时,比如用于创建目录的`for`循环:
for i in dir1\ dir2\ dir3\ ... mkdir $i
为了使这个脚本运行,`\`后面不能有空格。实际上,除了换行符之外,不允许有任何字符(包括注释)出现在`\`后面。