Python执行print("hello")时是否会先创建堆上字符串对象再打印?
Python
print("hello")执行逻辑解答 - Python的核心设计规则是一切皆对象,不存在脱离对象的原生数据,因此执行
print("hello")时一定会先创建字符串对象,不会直接跳过对象创建步骤执行打印。 - 具体的创建时机分两种场景:
- 运行预先写好的
.py脚本时,"hello"作为字符串字面量会在脚本的编译阶段就完成str类型实例的创建,存放在堆内存中,执行到print语句时,只是把这个字符串对象的引用传给print函数完成输出。 - 在Python交互解释器中逐行输入代码时,按下回车后解释器会先解析生成
"hello"字符串对象,再调用print执行打印操作。
- 运行预先写好的
- 你可以通过以下代码验证字符串对象的存在:
运行后两次输出的id完全相同,也能证明字符串对象是提前创建好、不会在打印时临时生成的。# 打印字符串字面量的内存地址标识 print(id("hello")) # 相同内容的字符串字面量会触发驻留机制,复用同一个对象 print(id("hello"))
内容的提问来源于stack exchange,提问作者user2494912
相关产品推荐
相关产品推荐

