Python 多行字符串会占用内存空间吗?

问题描述

Guido van Rossum tweeted

Python 提示:您可以使用多行字符串作为多行注释。 除非用作文档字符串,否则它们不会生成任何代码! :-)

下面的多行字符串在不用作 docstring 时是否会占用一些内存空间?

'''
Hello,folks!
This is a multi-line string.
'''

解决方法

很容易确认,如果您自己编写一个字符串而不将其分配给变量或将其用作另一个语句或表达式的一部分,那么该字符串 (1) 不会生成任何 CPython 字节码,并且 (2) 会没有出现在代码对象的常量元组中:

>>> code = 'x = 1; "bar"; x = 2;'
>>> from dis import dis
>>> dis(code)
  1           0 LOAD_CONST               0 (1)
              2 STORE_NAME               0 (x)
              4 LOAD_CONST               1 (2)
              6 STORE_NAME               0 (x)
              8 LOAD_CONST               2 (None)
             10 RETURN_VALUE
>>> compile(code,'<string>','exec').co_consts
(1,2,None)

所以字符串在编译时就像注释一样被丢弃,因此在运行时不能出现在内存中。请注意,这适用于所有文字值,而不仅仅是多行字符串。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...