转换为整数:“int(k)”或“_ = int(k)”?

时间:2015-12-10 09:35:30

标签: python

从这个page,我发现代码转换成如下的整数

try:
    # let's see if k can be cast to an integer;
    # if so, make our alphabet a list
    _ = int(k)
    alphabet = list(map(str, range(k)))

except (ValueError, TypeError):
    alphabet = k
    k = len(k)

如果我们使用int(k)替换_ = int(k)会怎样?

然后我在这里做一些测试

$ python -m timeit "k = '2'" "_=int(k)"
1000000 loops, best of 3: 0.878 usec per loop
$ python -m timeit "k = '2'" "int(k)"
1000000 loops, best of 3: 0.71 usec per loop

似乎int(k)的效果优于_ = int(k)

根据我的知识,另一个问题是ValueError引发的_ = int(k)。如果我们完全删除此行_ = int(k)怎么办?

try:
    alphabet = list(map(str, range(k)))
except TypeError:
    alphabet = k
    k = len(k)

1 个答案:

答案 0 :(得分:4)

int(k)足以触发您正在寻找的异常 - 无需分配一次性变量(以及该版本较慢的原因)。

你是对的,你可以完全删除int()的显式检查,因为如果range(k)不是整数,TypeError会抛出k

然而,使用

会更加pythonic
try:
    alphabet = [str(item) for item in range(k)]
except TypeError:
    alphabet = k
    k = len(k)