Skip to main content
 首页 » 编程设计

python之冗余函数调用会发生什么

2025年05月04日19tuyile006

很简单的问题,但对我来说是一个好奇...

假设我们有一个字符串项目列表。如果我们在列表中的每个元素上调用内置函数 str,这似乎是多余的,因为这些项目已经是字符串。幕后会发生什么,特别是针对 Python,但也对其他语言感兴趣。解释器是否已经看到该项目是一个字符串而不调用 str 函数?或者它会这样做并返回一个字符串,一个字符串的字符串是什么意思?

请您参考如下方法:

测试很简单:

>>> a = 'a' 
>>> id(a) 
4298835424 
>>> id(str(a)) 
4298835424 
>>> a is str(a) 
True 

是同一个对象。

经过测试并适用于 CPython 2.7.、3.3.、PyP 1.9.、IronPython 2.0

不是否与 Jython 2.5 一起工作:

Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)  
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_45 
Type "help", "copyright", "credits" or "license" for more information. 
>>> a = 'a' 
>>> id(a) 
2 
>>> id(str(a)) 
3 
>>> id(str(a)) 
4 
>>> a is str(a) 
False