为什么在定义函数时使用 *args 只存储一个值
Why using *args in defining functions is storing just one value
我在定义的函数中使用 *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 将在仅发生一次追加后立即退出该函数。将 return
放在与 for
相同的缩进处允许 for
在最终 returning value_list
之前完成执行
我在定义的函数中使用 *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 将在仅发生一次追加后立即退出该函数。将 return
放在与 for
相同的缩进处允许 for
在最终 returning value_list