在Python中,str和int之间的转换方式更快?

时间:2016-12-03 19:05:09

标签: python performance casting python-3.5

假设我有一些数字变量将在整个代码中使用,例如strclass Nums: a = 1 # stored as int b = '2' # stored as str print(int(Nums.b) + 5) # 7 print(str(Nums.a) + 'Hello') # 1Hello 个对象。所以我想知道,我应该使用哪种类型来存储它们?

以下是一个例子:

int

如您所见,存储和示例用途有两种选择。但是用法不会像在这里那样定义。例如,我将迭代类变量并将它们连接在一个字符串中,并计算它们的产品。我应该将它们存储为str并在我需要连接时转换为str,还是int并在乘法之前将它们转换为%timeit

使用IPython int的一些简短研究表明,性能大致相同,strIn [3]: %timeit int('56') The slowest run took 12.92 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 360 ns per loop In [4]: %timeit str(56) The slowest run took 8.36 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 353 ns per loop 的速度要快一点:

str

我希望这个结果,因为__str__调用真的只是调用对象的UserDefaults方法,而将字符串作为数字读取可能会更复杂。有什么真正的区别,背后的原因是什么?

我正在谈论Python 3.5,特别是

1 个答案:

答案 0 :(得分:1)

如果你的程序使用数值,你当然应该将它们存储为int类型。数字类型几乎总是比字符串类型更快,即使您的用例意味着字符串表示更快,其他好处也是值得的。仅举几例:

  • 你可以免费获得健康检查。如果有人试图将“五”推入你的程序,如果你以整数存储,你会很早就收到错误。如果你以字符串形式存储,你的错误可能更难以推理。
  • 任何拿起程序的人都希望将数值存储为数字类型
  • 再次,将内容存储为数字类型几乎总是更快