【发布时间】:2013-03-29 07:30:12
【问题描述】:
考虑这个函数(及其用途)的例子,它接收一个仅作为int 有意义的参数:
def fun(index):
index = int(index)
# do something with index
def main():
print fun(1e6)
我发现我在几个处理整数的函数上不断重复这种模式,因为它确保我确实收到了一些整数(请注意,1e6 是一个浮点实例)。
这有点麻烦,如果忘记它可能会产生问题(有 代码对浮点/整数/字符串/...值的反应不同)。那么这是否可以以某种方式编码在函数签名中?
例如类似于此伪代码的内容:
def fun(int index):
# do something with index
【问题讨论】:
-
这有点无法回答(因为我从未真正与他们合作过),但有一些框架作品(我认为是 zope)可以为你做到这一点
-
类型强制不是 Pythonic。您是否有任何理由避免使用鸭式打字范式?
-
@JoelCornett:与
0相比,舍入误差(源于浮点数的指数符号)会导致问题,并且我有一些循环过冲。 (但我正在学习 Python,来自 C++ 和 Haskell --- 所以我对我无法接受鸭式打字并不感到惊讶。) -
如果您打算使用
index进行循环,请将其用作range(index)。如果你给它一个不能表示为整数的对象,那将引发异常。
标签: python types type-conversion