为什么在定义函数时使用*args只存储一个值



我在定义的函数中使用*args时遇到问题。以下是一个代码示例:

def feet_to_meter(*args):
"""
:param *args: numeric values in feet
:output: returns list of values in meter
"""

value_list = [ ]
conversion_factor = 0.3048

for arg in args:
try:
value_list.append(arg * conversion_factor)
except TypeError:
print(str(arg) + "is not a number")
return value_list

print ("Function call with 3 values: ")
print(feet_to_meter(3, 1, 10))

我知道代码应该转换这3个值,但不知怎么的,在执行程序后,我只得到了第一个值的结果。我正在使用Pydroid 3。

提前感谢

return value_list需要少一个选项卡。工作版本如下。

def feet_to_meter(*args):
"""
:param *args: numeric values in feet
:output: returns list of values in meter
"""

value_list = [ ]
conversion_factor = 0.3048

for arg in args:
try:
value_list.append(arg * conversion_factor)
except TypeError:
print(str(arg) + "is not a number")
return value_list

之所以会发生这种情况,是因为return语句在for的每次迭代中都会执行,但在只发生一次追加后,返回将立即退出函数。将return放置在与for相同的缩进处允许for在最终返回value_list之前完成执行

最新更新