Python str()与''-首选

时间:2018-07-16 02:22:50

标签: python

我使用了一些示例代码,该示例代码使用str()代替了我通常的习惯''来表示一个空字符串。使用str()有一些优势吗?例如:

 # .....
 d = dict()
 # .....
 # .....
 if v is None:
     d[c.name] = str()
 else:
     d[c.name] = v

它似乎慢一些。

$ 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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

在以下情况下使用对Python manual str()的引用:

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

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

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