在Python中,str和int之间的哪种转换方式更快?
假设我有几个数值变量将在整个代码中使用,比如在Python中,str和int之间的哪种转换方式更快?,python,performance,casting,python-3.5,Python,Performance,Casting,Python 3.5,假设我有几个数值变量将在整个代码中使用,比如int和str对象。所以我想知道,我应该使用哪种类型来存储它们 下面是一个例子: class 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
对象。所以我想知道,我应该使用哪种类型来存储它们
下面是一个例子:
class 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
使用IPython的%timeit
进行的一些简短研究表明,性能大致相同,int
到str
的速度稍微快一点:
In [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
调用实际上只调用对象的\uuuu str\uuuu
方法,而将字符串作为数字读取可能更复杂。有什么真正的区别吗?背后的原因是什么
我说的是Python 3.5,尤其是如果您的程序使用数值,您当然应该将它们存储为type
int
。数字类型几乎总是比字符串类型快,即使您的用例意味着字符串表示更快,其他好处也是值得的。举几个例子:
- 你可以免费得到健康检查。如果有人试图在你的程序中输入“5”,如果你将其存储为整数,那么你会很早得到一个错误。如果您存储为字符串,那么您的错误可能更难解释
- 任何拿起你的程序的人都希望数值以数字类型存储
- 同样,将事物存储为数字类型几乎总是更快