【发布时间】:2021-06-14 18:13:29
【问题描述】:
我有一个函数,它接受可变数量的参数并返回总和。我希望它能够接受所有可以转换为整数的类型(字符串、浮点数等)
看起来像这样:
def addition(*numbers: int):
return sum(numbers)
当我只使用整数时它可以工作:
>>> addition(1, 2, 3)
6
但是一旦我开始使用字符串或混合类型,我就会得到一个错误:
>>> addition("1", "2", 3)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
*numbers: int 类型转换对变量参数不起作用还是我做错了什么?当然,我可以遍历参数列表并显式转换,但如果可以避免的话,我宁愿不这样做。
【问题讨论】:
-
sum(map(int, numbers)) -
这不是类型转换。它是类型提示,这意味着它不会自动为您进行转换。
-
而且提示错误,应该是
List[int] -
所以它不进行转换是因为它是一个参数列表还是因为我的提示错误?我做了
numbers: typing.Iterable[int]也没有用。不过,@Jab 的解决方案确实做到了 -
再次阅读贾斯汀的评论。类型提示就是这样;它不是转换命令。
标签: python type-conversion arguments