python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?

如何设置这样的长行格式?我想让它的宽度不超过80个字符:

logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))

这是我最好的选择吗?

url ="Skipping {0} because its thumbnail was already in our system as {1}."

logger.info(url.format(line[indexes['url']], video.title))

似乎是个不错的选择。你不喜欢什么?

有点主观,不是吗?:)

相关:stackoverflow.com/questions/1940710/…(python中的字符串串联)

您可以通过删除"it's"中不正确的"it's"来保存字符。

我修正了我的语法错误。TY

indexes:index的正确复数形式为indices。

这是一个开始。在使用它们的代码之外定义更长的字符串并不是一个坏习惯。这是一种分离数据和行为的方法。第一种选择是通过使字符串文本彼此相邻来将它们隐式地连接在一起:

("This is the first line of my text,"

"which will be joined to a second.")

或者在行尾延续的情况下,这种延续有点脆弱,因为这是可行的:

"This is the first line of my text," \

"which will be joined to a second."

但这并不是:

"This is the first line of my text," \

"which will be joined to a second."

看到区别了吗?不?当这是你的代码时,你也不会。

隐式连接的缺点是它只与字符串文本一起使用,而不与取自变量,这样重构时事情会变得更加复杂。此外,只能对组合字符串整体插入格式。

或者,可以使用串联运算符(+显式联接:

("This is the first line of my text," +

"which will be joined to a second.")

正如python的禅所说,显式优于隐式,但是这会创建三个字符串而不是一个字符串,并且使用的内存是写的两个字符串的两倍:加上一个字符串,这两个字符串连接在一起,所以您必须知道何时忽略禅。好处是您可以将格式应用于每一行单独的子字符串,或从括号外到整批的子字符串。

最后,您可以使用三重引号字符串:

"""This is the first line of my text

which will be joined to a second."""

这通常是我的最爱,尽管它的行为与换行稍有不同,并且在随后的行中任何前导空格都将显示在最后的字符串中。可以用转义反斜杠消除换行符。

"""This is the first line of my text \

which will be joined to a second."""

这与上面的相同技术有相同的问题,因为正确的代码与不正确的代码之间只有不可见的空白。

哪一个是"最好的"取决于你的特殊情况,但答案不仅仅是审美上的,而是一种微妙的不同行为。

cpython编译器尽可能优化文本操作,这意味着添加两个字符串文本只会在字节码中产生一个字符串文本。

虽然我收到的所有答案都很有帮助,但你的答案肯定能帮助我理解所有打破僵局的方法。结束的""行的问题是后面有空格吗?

我看不出这里的区别,但那主要是因为so的语法着色相当原始。(一些非常好的代码实际上是不可读的,但仅仅是因为它不在语法非常接近C的语言中。)让您的编辑器令人讨厌地突出显示尾随空格并不罕见,因为它们很少有用(或有意)。-)

@盖茨特——是的。你抓住了。当您选择文本时,它会显示出来。是的,好的文本编辑器/IDES可以帮助解决这个问题。

我有一次掉进了那个&40;白色空间)的流浪汉。可怕的经历。

如果文本本身包含引号,则不起作用。例如。

@khurshidalam您可以使用单引号'来包含该字符串,或者转义字符串中的双引号,或者使用三双引号"""。包含引号的带引号字符串的问题与使用单行或多行定义文本字符串的问题相同。

连续的字符串文本由编译器联接,带括号的表达式被认为是一行代码:

logger.info("Skipping {0} because it's thumbnail was"

"already in our system as {1}.".format(line[indexes['url']],

video.title))

就我个人而言,我不喜欢挂开放块,所以我将其格式化为:

logger.info(

'Skipping {0} because its thumbnail was already in our system as {1}.'

.format(line[indexes['url']], video.title)

)

一般来说,我不会费太大的力气使代码完全适合80列的行。这是值得保持线长度合理的水平,但硬80限制是过去的事情。

这不是过去的事。python标准库仍然使用pep8作为它的风格指南,所以这个规则仍然存在,并且很多人(包括我自己)都遵循它。这是一个方便画线的地方。

我想知道有多少项目仍然遵循80个字符的规则。对于我使用的平均窗口大小,我认为100-120比80个字符更有效率。

是的,不过我也用了这个长度的线[恐怖!亵渎神灵!]我使用比例字体,所以精确的行长并不是那么重要。它更多的是一个例子,一行中有多少逻辑是可读的,而不是有多少字符,例如…如果我有一长串没人需要读的数据,我很乐意让它溢出120。

比例字体的代码-我和你在一起,兄弟。从我曾经和他们共事过的所有人对他们的厌恶来看,世界还没有准备好。

@波宾斯:你为什么用比例字体?优势是什么?

@格雷格:这和为什么在其他类型的文本中使用比例字体一样:可读性。当然,您需要选择一种具有良好特征的字体,比如1/L/O/0区分,但单空间字体也是如此。

大约80个字符还可以更容易地在同一屏幕上并排区分2个文件。另外,如果您在服务器控制台上的紧急情况下调试某些东西,您会非常感激80个字符的限制!:)

如果我要解决合并冲突,那80个字符很快就会变成240个字符的行(+滚动条,+行号,+差异标记)。即使我有足够的屏幕空间将其扩展到300个字符或更多,它也会使窗口变得非常巨大。

fwiw在我的浏览器中,你的段落的第一行是"一般来说,我不会费太大的力气让代码完全适合80列的行。它是"。"一共103个字符。

可以使用textwarp模块将其拆分为多行

import textwrap

str="ABCDEFGHIJKLIMNO"

print("

".join(textwrap.wrap(str,8)))

ABCDEFGH

IJKLIMNO

从文档中:

textwrap.wrap(text[, width[, ...]])

Wraps the single paragraph in text (a string) so every line is at most width characters long. Returns a list of output lines, without final newlines.

Optional keyword arguments correspond to the instance attributes of TextWrapper, documented below. width defaults to 70.

See the TextWrapper.wrap() method for additional details on how wrap() behaves.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NodeJS中resolve添加地址无效

今天一个朋友在群里问了这样一个问题,他使用url.resolve()添加地址无效,我看了一下,发现是他没有注意细节, resolve可以在二级目录下增加,他使用的时候只是一级目录,所以添加会有问题。他使用的是如下这种…

centos配置jdk的环境变量

1、首先呢,centos下的JDK环境配置分两种情况,一直是root用户级别的jdk配置,另一种是其他用户组级别的配置。这里讲解的是root用户级别的配置。 我们已经下载解压好了jdk的目录。如下 2、编辑环境变量的配置文件: vi /etc/profile…

Python之字符串转换为日期、结合时区的日期操作

一、字符串转换为日期 方法一 s 2019-01-20 print(datetime.strptime(s, %Y-%m-%d)) # 2019-01-20 00:00:00 方法二 def parse_ymd(s):year_s, mon_s, day_s s.split(-)return datetime(int(year_s), int(mon_s), int(day_s)) s 2019-01-20 res parse_ymd(s) print(res) …

项目学生:带有Jersey的Web服务客户端

这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client , 业务层和带有Spring Data的持久性 。 RESTful Web应用程序洋葱的第一层是Web服务客户端。 它可以用来模仿包含AJAX内容的网页,也可以被webapp的编程用户用来模仿。 注意&am…

华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全

看点:华为好望的求索启示录!如何让老百姓用上实惠的AI?你也许不知道,高空抛物已是城市生活中的一大难以治理的安全隐患。一个小小的烟头、水果从高处扔下来,就可能引起严重火灾、人员伤亡、财物破坏,事发后…

在WebGL场景中进行棋盘操作的实验

这篇文章讨论如何在基于Babylon.js的WebGL场景中,建立棋盘状的地块和多个可选择的棋子对象,在点选棋子时显示棋子的移动范围,并且在点击移动范围内的空白地块时向目标地块移动棋子。在这一过程中要考虑不同棋子的移动力和影响范围不同&#x…

em算法python代码_EM算法的python实现的方法步骤

导读热词前言:前一篇文章大概说了EM算法的整个理解以及一些相关的公式神马的,那些数学公式啥的看完真的是忘完了,那就来用代码记忆记忆吧!接下来将会对python版本的EM算法进行一些分析。EM的python实现和解析引入问题(双硬币问题)…

第一阶段·Linux运维基础-第2章·Linux系统目录结构介绍

01 变量与PS1 02 添加用户 03 关闭SELinux 04 关闭iptables 05 显示中文乱码排查过程 06 总结 07 目录结构课程内容 08 Linux目录结构特点 09 Linux核心目录简介 10 Linux目录文件之配置文件 11 Linux核心目录文件之DNS及屌丝逃离洗浴中心之路 12 Linux核心目录文件…

使用junit-drools进行JBoss Drools单元测试

最近,我一直在大量使用JBoss Drools进行项目。 我不是Drools专家-我也不太相信这个框架,或者可能不是只相信该项目中的特定用例-我发现很难为基于Drools的业务规则编写简单,可维护的单元测试 。 这就是junit-drools诞生的方式-简单的帮助程序…

scrapy 采集网页出现丢失url的问题

url_list ["http://www.icoat.cc/news/list_18_3.html", "http://www.icoat.cc/news/list_18.html", "http://www.icoat.cc/news/list_18_2.html", ] for ls in url_list:   yield scrapy.Request(urlls, headersheader, callbackself.parseL…

java中重新加载指定文件_java-更改后重新加载属性文件

我将属性文件加载到一个类中,然后在整个应用程序中使用该类来获取它们.public class PropertiesUtil extends PropertyPlaceholderConfigurer {private static Map properties new HashMap();Overrideprotected void loadProperties(final Properties props) throws IOExcepti…

plsql 为空显示 0 的函数_不加班只加薪!从0到1教你制作出入库进销存表格

出入库表应用十分广泛,是每个公司都用到的表格,下面我们来看看怎么从一张空白表一步一步实现《出入库表》的制作,目的是做到只需要记录出库入库流水,自动对库存及累计出入库数量进行计算、实时统计。出入库表构成做一个出入库表&a…

eShopOnContainers学习系列(一):Swagger的使用

最近在看eShopOnContainer项目,抽取一下其中的基础知识点,做个记录,有兴趣的可以看下。 新建一个.net core API项目,添加Nuget包 Swashbuckle.AspNetCore.SwaggerGen、Swashbuckle.AspNetCore.SwaggerUI: 然后在启动文…

结合WebSocket编写WebGL综合场景示例

在WebGL场景中导入多个Babylon骨骼模型,在局域网用WebSocket实现多用户交互控制。 首先是场景截图: 上图在场景中导入一个Babylon骨骼模型,使用asdw、空格、鼠标控制加速度移动,在移动时播放骨骼动画。 上图在场景中加入更多的骨…

awk----基本用法

awk具体的请看这个 https://www.cnblogs.com/bwbfight/p/9402738.html awk 竟然自诩一种语言,ok.... 牛 既然这样就学习一下吧 awk -F‘[指定多个分隔符]’ 比如 awk -F[ :]表示指定:空格为分隔符 涉及多个重复分割符可以这样指定 awk -F[ :] 表示多个空…

java按条件查询结果为空_mybatis中查询结果为空时不同返回类型对应返回值问题...

今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时…

object picker 微信小程序_微信小程序 demo分享

选择器示例demo:1.普通选择器 2.多列选择器 3.时间选择器 4.日期选择器 5.省市区选择器wxml普通选择器:(普通数组)当前选择:{{array[index]}}普通选择器2:(普通json格式数组)当前选择:{{objectArray[objectIndex].name…

项目学生:分片集成测试数据

这是Project Student的一部分。 其他职位包括带有Jersey的 Web服务 客户端,带有Jersey的 Web服务服务器 , 业务层和带有Spring Data的持久性 。 到目前为止,所有集成测试都使用了内存嵌入式数据库,该数据库无法一次又一次地保留信…

BZOJ1036 树的统计(树链剖分+线段树)

【题目描述】 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问…

Unity插件Gaia使用介绍

零基础创建Unity精美场景地形(使用插件Gaia)一、先上最终效果图二、软件环境搭建1.Unity5.6.0下载链接https://unity3d.com/cn/get-unity/download/archive?_ga2.110664517.1175563345.1516068066-173539005.15020707552.Gaia Unity地形制作插件下载链…