您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

反引号是不推荐使用的别名repr()。不再使用它们,该语法已在Python 3.0中删除

使用反引号似乎快于使用repr(num)num.__repr__()在版本2.x中 我猜这是因为分别需要在全局名称空间(forrepr)或对象的名称空间(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)
  3           0 LOAD_GLOBAL              0 (repr)
              3 LOAD_FAST                0 (a)
              6 CALL_FUNCTION            1
              9 RETURN_VALUE
>>> dis.dis(f2)
  6           0 LOAD_FAST                0 (a)
              3 LOAD_ATTR                0 (__repr__)
              6 CALL_FUNCTION            0
              9 RETURN_VALUE        
>>> dis.dis(f3)
  9           0 LOAD_FAST                0 (a)
              3 UNARY_CONVERT       
              4 RETURN_VALUE

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

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

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

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

python 2022/1/1 18:36:08 有528人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶