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

Python字符串格式:%与串联

臧威
2023-03-14
问题内容

我正在开发一个应用程序,在其中执行一些请求以获取对象ID。在它们每个之后,我调用一个方法(get_actor_info())将此id作为参数传递(请参见下面的代码)。

ACTOR_CACHE_KEY_PREFIX = 'actor_'

def get_actor_info(actor_id):
    cache_key = ACTOR_CACHE_KEY_PREFIX + str(actor_id)

可以注意到,我正在将其转换actor_idstring前缀并将其与前缀连接。但是,我知道我能做到这一点的多种其他方式(.format()或者'%s%d',例如),并在我的问题的结果:将'%s%d'超过字符串连接更好的可读性,代码约定和效率方面?

谢谢


问题答案:

这很容易成为基于意见的主题,但是我发现格式在大多数情况下更具可读性,并且更易于维护。可视化最终字符串的外观会更容易,而无需执行“心理串联”。例如,以下哪个更易读?

errorString = "Exception occurred ({}) while executing '{}': {}".format(
    e.__class__.__name__, task.name, str(e)
)

要么:

errorString = "Exception occurred (" + e.__class__.__name__
    + ") while executing '" + task.name + "': " + str(e)

至于是否使用%或者.format(),我可以回答更客观:使用.format()%是“旧样式”,并且根据Python文档,它们可能很快会被删除:

由于str.format()是相当新的东西,因此许多Python代码仍然使用%运算符。但是,由于最终会从该语言中删除这种旧的格式设置样式,str.format()因此通常应使用。

文档的更高版本已不再提及,但这仍然.format()是未来的方式。用它!

串联速度更快,但这不必担心。首先,使您的代码具有可读性和可维护性,然后优化以后需要优化的部分。过早的优化是万恶之源;)



 类似资料:
  • 问题内容: 我看到许多人使用这样的格式字符串: 而不是像这样简单地串联字符串: 格式字符串是否具有更好的性能,还是仅用于外观? 问题答案: 这只是为了外观。您可以一眼看出格式是什么。我们中的许多人都比微优化更喜欢可读性。 让我们看看IPython的意思:

  • 主要内容:指定最小输出宽度,指定对齐方式,指定小数精度我们在《 第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。 print() 函数使用以 开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

  • 问题内容: 我想知道使用模板字符串而不是新的高级字符串格式是否有优势? 问题答案: 模板要比通常的字符串格式更简单,但会降低表达力。PEP 292 的基本原理将模板与Python的-style字符串格式进行了比较: Python当前支持基于C的‘%’格式字符的字符串替换语法。尽管格式非常丰富,但即使对于有经验的Python程序员,%格式的代码也容易出错。一个常见的错误是忽略了尾随的格式字符,例如i

  • 问题内容: Python 2.6引入的方法与现有%运算符的语法略有不同。哪个更好,什么情况下适合? 以下使用每种方法并具有相同的结果,那么有什么区别? 此外,何时在Python中进行字符串格式化?例如,如果我的日志记录级别设置为,那么执行以下操作是否还会对我有所帮助?如果是这样,有办法避免这种情况吗? 问题答案: 第一个问题在许多方面似乎都更加复杂。一个令人烦恼的事情是它如何可以接受变量或元组。你

  • 问题内容: 我正在尝试找到格式化sql查询字符串的最佳方法。在调试应用程序时,我想记录所有sql查询字符串的文件,并且正确格式化字符串很重要。 选项1 这对于打印sql字符串很有用。 如果字符串太长且不适合80个字符的标准宽度,则不是一个好的解决方案。 选项2 这里的代码很清楚,但是当您打印sql查询字符串时,会得到所有这些烦人的空格。 的u ‘\ n选取FIELD1,FIELD2,字段3,字段4

  • 问题内容: 在Python中,什么时候以及什么时候使用字符串连接与字符串替换比较容易。由于字符串连接的性能有了很大的提高,这(成为更多)是一种风格上的决定,而不是一种实际的决定吗? 举一个具体的例子,如何处理灵活的URI: 编辑:也有关于加入字符串列表和使用命名替换的建议。这些是中心主题的变体,即在什么时候做正确的方法?感谢您的回复! 问题答案: 根据我的机器,连接的速度(明显)更快。但是从风格上