我在定义的函数中使用*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
之前完成执行