在python中将对象转换为字符串时,我看到了两种不同的习语:
A: mystring = str(obj)
B: mystring = "%s" % obj
这两者有区别吗?(阅读Python文档,我怀疑没有,因为后一种情况会隐式调用str(obj)转换obj为字符串.
如果是,我什么时候应该使用哪个?
如果不是,在"好"的python代码中我应该选择哪一个?(从蟒蛇哲学"显式过度隐含",A会被认为是更好的吗?)
Mar*_*ers 16
第二个版本做了更多工作.
该%s运营商称str()它插的价值,但它也有先解析模板字符串找到摆在首位的占位符.
除非您的模板字符串包含更多文本,否则要求Python在"%s" % obj表达式上花费更多周期是没有意义的.
然而,矛盾的str()是,实际上转换速度较慢,因为查找名称str()并推动堆栈调用函数需要比字符串解析更多的时间:
>>> from timeit import timeit
>>> timeit('str(obj)', 'obj = 4.524')
0.32349491119384766
>>> timeit('"%s" % obj', 'obj = 4.524')
0.27424097061157227
Run Code Online (Sandbox Code Playgroud)
您可以通过首先绑定str到本地名称来恢复大部分差异:
>>> timeit('_str(obj)', 'obj = 4.524; _str = str')
0.28351712226867676
Run Code Online (Sandbox Code Playgroud)
对于大多数Python开发人员来说,使用字符串模板选项会让人感到困惑,因为str()它更加直截了当.除非你有一个能够进行大量字符串转换的关键部分,否则请坚持使用该功能.
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |