【发布时间】:2021-07-17 14:27:07
【问题描述】:
我是 python 新手,我定义的函数有一些问题。我决定在我的函数中使用 *numbers (*args) 以便我的函数可以接受任意数量的参数。但是,在定义我的函数时使用 *numbers 时,似乎我的参数被视为字符串而不是整数。如下所示,当输入参数“4”时,我收到输出 4、4、4、4、4、4、4、4。 我正在寻找的输出实际上是 32 但是我似乎无法获得此输出,因为我无法将我的参数视为整数。我尝试将 int(numbers) 包含在我的函数中,但无济于事。我可以做些细微的改变来获得我想要的输出吗?
def multiply_machine(*numbers):
multiplied_number=3*numbers
m_numbers=5*numbers
return multiplied_number + m_numbers
print(multiply_machine(4))
OUT[1] : (4, 4, 4, 4, 4, 4, 4, 4)
【问题讨论】:
-
" 看来我的参数被视为字符串而不是整数。"不,不,不是。任何地方都没有显示字符串。正在发生的事情是
*args将可变应用的参数作为tuple提供。您还期望它如何工作?如果您使用multiply_machine(1, 2),您认为numbers会是什么? -
所以要得到你想要的输出,只需使用
def multiply_machine(numbers)... -
感谢您的及时回复,我知道如果我不使用 *args 并简单地使用“def multiply_machine(numbers)”,我可以获得我想要的输出。但是,这将我的功能限制为仅采用一个参数。有没有办法可以稍微调整我的初始功能,以便我可以执行 print(multiply_machine(4,2,1)) 并获得输出 32,16,8
-
当然,参数将以
tuple的形式提供。所以type(args) is tuple,如果你这样做multiply_machine(4,2,1),那么args == (4, 2, 1)
标签: python string function integer args