栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

反引号对python解释器意味着什么:`num`

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

反引号对python解释器意味着什么:`num`

反引号是不推荐使用的别名

repr()
。不再使用它们,该语法已在Python 3.0中删除。

使用反引号似乎快于使用

repr(num)
num.__repr__()
在版本2.x中 我猜这是因为分别需要在全局名称空间(for
repr
)或对象的名称空间(for
__repr__
)中进行额外的字典查找。


使用该

dis
模块证明了我的假设:

def f1(a):    return repr(a)def f2(a):    return a.__repr__()def f3(a):    return `a`

拆解节目:

>>> import dis>>> dis.dis(f1)  30 LOAD_GLOBAL   0 (repr)   3 LOAD_FAST     0 (a)   6 CALL_FUNCTION 1   9 RETURN_VALUE>>> dis.dis(f2)  60 LOAD_FAST     0 (a)   3 LOAD_ATTR     0 (__repr__)   6 CALL_FUNCTION 0   9 RETURN_VALUE        >>> dis.dis(f3)  90 LOAD_FAST     0 (a)   3 UNARY_ConVERT          4 RETURN_VALUE

f1
涉及到的全局查找
repr
f2
的属性查找
__repr__
,而反引号运算符在单独的操作码中实现。由于没有字典查找(
LOAD_GLOBAL
/
LOAD_ATTR
)和函数调用(
CALL_FUNCTION
)的开销,因此反引号会更快。

我猜想,Python专家认为

repr()
不值得为此单独进行一个低级操作,并且同时使用
repr()
反引号会违反该原理

“应该有一种-最好只有一种-显而易见的方法”

因此该功能已在Python 3.0中删除。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633645.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号