从这个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)
答案 0 :(得分:4)
int(k)
足以触发您正在寻找的异常 - 无需分配一次性变量(以及该版本较慢的原因)。
你是对的,你可以完全删除int()
的显式检查,因为如果range(k)
不是整数,TypeError
会抛出k
。
然而,使用
会更加pythonictry:
alphabet = [str(item) for item in range(k)]
except TypeError:
alphabet = k
k = len(k)