当前位置: 首页 > 面试题库 >

如何在Python中打破这条漫长的路线?

牧熙云
2023-03-14
问题内容

您将如何格式化这样的长行?我希望宽度不超过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))

问题答案:

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

("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.")

正如zen
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."""

这与上面的相同技术具有相同的问题,因为正确的代码与不正确的代码仅因不可见的空格而不同。

哪一个“最佳”取决于您的特定情况,但答案不只是简单的美学,而是微妙的不同行为之一。



 类似资料:
  • 我正在编写代码,拍摄屏幕的图片,然后逐个像素地检查某个RGB值。然后,我想让它在RGB值上单击一次,然后中断,但由于某种原因,循环一直在所有像素上运行,忽略我输入的中断命令,单击该颜色的所有像素,而不是单击一次。有什么解决办法吗?

  • 问题内容: 我试图为我在shell脚本编写过程中经常使用的路径设置“别名”。我尝试了一下,但是失败了: 我该如何运作? 但是,可行。 问题答案: 由于它是一个环境变量(别名在中具有不同的定义),因此您需要使用类似以下内容的值对其进行评估: 要么: 但是实际上,如果您只想轻松切换到该目录,则可以创建一个 真实的 别名(在诸如的启动文件之一中),这样我可以更容易地保存击键: 然后,您可以使用(不使用)

  • 问题内容: 我遇到的情况是,可能有很长的单词(如“ hellowordsometext”)或整数(如“1234567891122”)之间没有任何空格。 达到div宽度后,如何将其分成下一行。现在发生的是,它与div一起扩展 问题答案: 您需要的是,此属性将强制使非空格字符串在

  • 游戏策划(非文案) offer: 西山居seed训练营 网易互娱-暗黑破坏神不朽项目组(暂定) 个人情况: 华五大三,参加过未来信号空间站+腾讯游策公开课项目,有三款已完成minigame,两款在研独立游戏(其中一款为动作游戏),主要发展方向为战斗策划,对Roguelike、开放世界、魂like有一定理解。会用Dragonbones做骨骼动画,用MAYA做三维动画,对Unity开发流程有初步了解。

  • 我的应用程序不想进入我的游戏控制器。php函数。它确实在group函数中,我用vardump对其进行了测试。它会一直走下去,直到它撞上“游戏”路线,然后它就不想走这条路线。 routes.php: GameController.php: AuthenticationController。php: 目标是当我的用户登录时转到游戏页面,这是因为Laravel会话cookie已经制作完成(我检查过),我

  • 问题内容: 来自Python,我不习惯看到超过80列的代码行。所以当我遇到这个: 我试图打破它 但是我明白了 我还尝试过按回车键并在末尾加分号来打破界限: 但是我再次得到: 所以我想知道用什么语言来做到这一点? 问题答案: 首先介绍一些背景。Go的正式语法在许多产品中都使用分号作为终止符,但是Go程序可能会省略大多数(它们应该有一个更清晰易读的源;也可以删除不必要的分号)。 该规范列出了确切的规则