Python str()vs.'' - 这是首选

Mar*_*ark 7 python

我使用了一些使用str()的示例代码而不是我常用的''表示空字符串的习惯.使用str()有一些优势吗?例如:

 # .....
 d = dict()
 # .....
 # .....
 if v is None:
     d[c.name] = str()
 else:
     d[c.name] = v
Run Code Online (Sandbox Code Playgroud)

它看起来似乎更慢.

$ python -m timeit "'.'.join(str(n)+'' for n in range(100))"
100000 loops, best of 3: 12.9 usec per loop
$ python -m timeit "'.'.join(str(n)+str() for n in range(100))"
100000 loops, best of 3: 17.2 usec per loop
Run Code Online (Sandbox Code Playgroud)

Bur*_*lid 6

参考Python手册 str()用于以下情况:

  1. 您想要对象的字符串表示形式
  2. 您想要将bytes(或其他字节序列,例如bytearray)转换为字符串

在所有其他情况下,您应该使用''.

空调用返回空白字符串这一事实str()是副作用,而不是该方法的预期主要用途。


Ign*_*ams 5

唯一的好处是,如果str在本地重新定义,str()则将使用该定义,而''不会。否则,它们是等效的(尽管不相等,因为在一种情况下编译器将发出函数调用,而在另一种情况下将发出常量)。

  • 注意:从性能的角度来看,尤其是对于像``''这样的不可变常量,文字快*快*(在本地微基准测试中,时间减少了约10倍)。`''存储在函数常量中,加载它实际上只是在C数组中查找并增加引用计数。使用`str()`涉及一个内置的查找(先检查globals'dict`,然后是内建的dict'),然后是一个通用的调用字节码(最终会遍历对象构造的所有繁琐过程,只是意识到它需要空字符串并返回它)。使用`''`/`“”`。 (6认同)