【发布时间】:2023-02-26 03:10:31
【问题描述】:
如果循环变量可以是数字或字符串或列表,是否有更好的方法来编写 for 循环?
例如原始代码:
foo(x)
x 接受一个数字 ex: 7,或一个字符串 ex:'hello'。
要在向后兼容的同时升级代码以获取列表(或 range() ),我首先检查类型:
if type(x) != list and type(x) != range:
x = [x]
for i in x:
foo(i)
想知道是否有更好的方法或函数来处理这种情况而不检查类型?
【问题讨论】:
-
不检查类型- 但是代码仍然需要一些类型的推断
-
“更好的方法”是首先避免这种情况。一旦您处于那种情况,那么这种(或类似的)方法确实是唯一的方法。所以,既然听起来你决定这样做,那么最好的解决办法就是不这样做。