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

标签 python

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

假设我们有一个字符串项目列表。如果我们在列表中的每个元素上调用内置函数 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     

关于python - 冗余函数调用会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962282/

相关文章:

python - 使用zabbix监视Elasticsearch时出错

python - 如何在 Python 中使用 unDetected_chromedriver 运行 Firefox 浏览器?

python - 使用神经网络的多元线性回归中的系数值

python - 找不到 postgresql 9 plpython2.dll

python - Pandas .read_excel : Accessing the home directory

python - 同时进行 alembic 数据库迁移

python - 这是基于 django 类的 View 的错误使用吗?

python - github 中私有(private)组织的所有存储库列表

javascript - 如何在内容可编辑文本框中模拟 'enter'键盘事件

Python Websockets 创建 pem 文件