微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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)

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。