我有一长行代码,我想在多行中分解。 我使用什么,语法是什么?

例如,添加一串字符串,

e = 'a' + 'b' + 'c' + 'd'

并分成两行,如下所示:

e = 'a' + 'b' +

'c' + 'd'

#1楼

您可以在括号和花括号之间打断线。 此外,您可以将反斜杠字符\\附加到一行以显式断开它:

x = (tuples_first_value,

second_value)

y = 1 + \

2

#2楼

这可能不是Python的方式,但是我通常使用带有join函数的列表来编写长字符串,例如SQL查询:

query = " ".join([

'SELECT * FROM "TableName"',

'WHERE "SomeColumn1"=VALUE',

'ORDER BY "SomeColumn2"',

'LIMIT 5;'

])

#3楼

在行的末尾添加\\或将该语句括在括号中( .. ) 。 从IBM :

b = ((i1 < 20) and

(i2 < 30) and

(i3 < 40))

要么

b = (i1 < 20) and \

(i2 < 30) and \

(i3 < 40)

#4楼

什么线? 您只需在下一行就有参数就不会有任何问题:

a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5,

blahblah6, blahblah7)

否则,您可以执行以下操作:

if a == True and \

b == False

查看样式指南以获取更多信息。

从示例行中:

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

'4' + '5'

要么:

a = ('1' + '2' + '3' +

'4' + '5')

请注意,样式指南指出,最好使用带括号的隐式连续符,但是在这种特殊情况下,仅在表达式周围加上括号可能是错误的方法。

#5楼

从马口中: 显式线连接

可以使用反斜杠字符( \\ )将两条或更多条物理行连接为逻辑行,如下所示:当一条物理行以不包含在字符串文字或注释中的反斜杠结尾时,将其与以下行合并成一个逻辑行,删除反斜杠和以下行尾字符。 例如:

if 1900 < year < 2100 and 1 <= month <= 12 \\ and 1 <= day <= 31 and 0 <= hour < 24 \\ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date return 1

以反斜杠结尾的行不能带有注释。 反斜杠不会继续发表评论。 除字符串文字外,反斜杠不会延续标记(即,字符串文字以外的其他标记无法使用反斜杠在物理行之间分割)。 反斜杠在字符串文字之外的其他行上是非法的。

#6楼

从PEP 8-Python代码样式指南 :

包装长行的首选方法是在括号,方括号和花括号内使用Python的隐含行连续性。 通过将表达式包装在括号中,可以将长行分成多行。 应优先使用这些,而不是使用反斜杠进行行连续。

有时反斜杠可能仍然合适。 例如,长的多个with语句不能使用隐式连续,因此反斜杠是可以接受的:

with open('/path/to/some/file/you/want/to/read') as file_1, \\ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())

另一种此类情况是使用assert语句。

确保适当缩进续行。 围绕二进制运算符的首选位置是在运算符之后 ,而不是在运算符之前。 一些例子:

class Rectangle(Blob): def __init__(self, width, height, color='black', emphasis=None, highlight=0): if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100): raise ValueError("sorry, you lose") if width == 0 and height == 0 and (color == 'red' or emphasis is None): raise ValueError("I don't think so -- values are %s, %s" % (width, height)) Blob.__init__(self, width, height, color, emphasis, highlight)

现在,PEP8建议数学家及其发布者使用相反的约定 (用于在二进制运算中中断),以提高可读性。

唐纳德·克努斯(Donald Knuth) 在二元运算符垂直对齐之前先断后合的风格,从而在确定要添加和减去的项时减少了工作量。

从PEP8:换行符应该在二进制运算符之前还是之后? :

唐纳德·克努斯(Donald Knuth)在他的《计算机和排版》系列中解释了传统规则:“尽管段落中的公式总是在二进制运算和关系之后中断,但是显示的公式总是在二进制运算之前中断” [3]。

遵循数学的传统通常会导致代码更具可读性:

# Yes: easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)

在Python代码中,只要约定在本地是一致的,就可以在二进制运算符之前或之后中断。 对于新代码,建议使用Knuth的样式。

[3]:Donald Knuth的The TeXBook,第195和196页

#7楼

摘自《 The Hitchhiker's Guide to Python( Line Continuation )》:

当逻辑代码行长于可接受的限制时,您需要将其划分为多条物理行。 如果该行的最后一个字符是反斜杠,则Python解释器将连接连续的行。 在某些情况下这很有用,但由于其易碎性通常应避免使用:在反斜杠后的行末添加空格将破坏代码并可能产生意外结果。

更好的解决方案是在元素周围使用括号。 在行尾留有未封闭的括号,Python解释器将加入下一行,直到括号被封闭。 花括号和方括号的行为相同。

但是 ,通常情况下,必须分开一条较长的逻辑线表明您正在尝试同时执行太多操作,这可能会影响可读性。

话虽如此,这是一个考虑多次导入的示例(当超出行限制时,在PEP-8上定义 ),通常也适用于字符串:

from app import (

app, abort, make_response, redirect, render_template, request, session

)

#8楼

使用反斜杠结束行的危险在于,如果在反斜杠之后添加空格(当然很难看到),则反斜杠将不再执行您原本的想法。

有关更多信息,请参见Python习语和反习语(对于Python 2或Python 3 )。

python交互式换行_如何在Python中进行换行(换行)?相关推荐

  1. python中如何不换行_如何在Python中不换行输出

    如何在Python中不换行输出 发布时间:2020-09-22 15:04:14 来源:亿速云 阅读:161 作者:小新 小编给大家分享一下如何在Python中不换行输出,希望大家阅读完这篇文章后大所 ...

  2. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  3. unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?

    Python是增长最快的主要通用编程语言.原因有很多,比如它的可读性和灵活性,易于学习和使用,可靠和高效. 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的 ...

  4. python进程暂停_如何在Python中暂停多进程?

    我希望用户能够在怎么开始的实现它?在 我的代码是:# -*- coding: utf-8 -*- from PySide import QtCore, QtGui from Ui_MainWindow ...

  5. python 拟合正态分布_如何在Python中拟合双高斯分布?

    我试图使用Python获得数据(link)的双高斯分布.原始数据的格式为: 对于给定的数据,我想获得图中所示峰值的两个高斯分布.我用以下代码(source)进行了尝试:from sklearn imp ...

  6. python 概率分布函数_如何在Python中实现这五类强大的概率分布

    匿名用户 1级 2016-04-25 回答 首页 所有文章 观点与动态 基础知识 系列教程 实践项目 工具与框架应用 工具资源 伯乐在线 > Python - 伯乐在线 > 所有文章 &g ...

  7. python mqtt库_如何在 Python 中使用 MQTT

    Python 是一种广泛使用的解释型.高级编程.通用型编程语言.Python 的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词).Python 让开发者能 ...

  8. python 获取当前目录_如何在Python中获取当前的工作目录?

    python 获取当前目录 To get the current working directory in Python, there is a library function getcwd() i ...

  9. eclipse配置python开发环境_如何在Eclipse中配置python开发环境

    展开全部 步骤1: 下载用于在2113Eclipse中开发Python的插件PyDev. 步骤2: 解压5261python.将解压后的features和plugins文件4102夹中的1653内容拷 ...

  10. win10系统64位安装python什么版本_如何在win10中安装Python

    本文主要讲解win10如何安装python,希望对初学的小伙伴有帮助.环境:win 10 64位操作系统1.python下载https://www.python.org/downloads/2.x和3 ...

最新文章

  1. pytorch下载时出现错误:EOFError: Compressed file ended before the end-of-stream marker was reached
  2. FPGA中状态机实现需要注意的地方
  3. CTFshow 信息收集 web15
  4. Python学习教程(Python学习路线):Day08-面向对象编程基础
  5. hybrid app、web app与native app工具
  6. 移动端去除横向滚动条
  7. 反射笔记-----------------------------
  8. 【问题记录】 Linux分区磁盘占满,导致ssh登陆闪退
  9. 大数据之-Hadoop源码编译_编译hadoop源码前_需要准备的软件_以及编译步骤---大数据之hadoop工作笔记0045
  10. OPPO Reno6系列和Reno5系列有啥区别?价格差不多?
  11. 高德地图获取经纬度并逆定位获取地理位置名称(原生)
  12. C#路径中使用斜杠/和反斜杠\的区别
  13. 七阶拉丁方阵_关于拉丁方阵教学的思考
  14. 测试:如何测试微信朋友圈的点赞功能
  15. 个人关于颈椎病治疗和保养的一些经验总结!
  16. matlab中ode指令,matlab中ode5函数编写.doc
  17. SpringCloud熔断机制大概什么意思
  18. 如何将1000页PPT单独导出为1000个单独的文件?又如何快速把多个PPT合成一个?
  19. elementUI的input使用扫描枪,回显值后重新刷新页面
  20. 【网络编程实践--陈硕】2.4.3 使用procmon观察dummyload

热门文章

  1. Python 多线程-共享全局变量问题 -args参数 同步的概念
  2. 190715每日一句
  3. 类中不写成员函数易犯错误模型
  4. 190414每日一句
  5. CHI 2016 2017 Paper Shared Gaze for Remote Collaboration
  6. RBG-D深度相机的相关资料
  7. Atitit 财政赤字解决方案
  8. paip.手机ROOT过程总结
  9. 对冲基金很需要:K、Q在哪里?
  10. Rust:mod、crate、super、self、pub use等模块系统用法梳理