Python 函数将参数视为字符串而不是整数
我是python新手,在定义一个函数时遇到了一些问题。我决定在我的函数中使用*numbers(*args),这样我的函数就可以接受任意数量的参数。然而,在定义函数时使用*数字时,我的参数似乎被视为字符串而不是整数。正如您在下面看到的,我在输入参数“4”时收到了输出4、4、4、4、4、4。 我想要的输出实际上是32,但是我似乎无法得到这个输出,因为我无法将我的参数当作整数来处理。我尝试在函数中包含int(数字),但没有效果。是否有任何细微的变化,我可以得到我想要的输出Python 函数将参数视为字符串而不是整数,python,string,function,integer,args,Python,String,Function,Integer,Args,我是python新手,在定义一个函数时遇到了一些问题。我决定在我的函数中使用*numbers(*args),这样我的函数就可以接受任意数量的参数。然而,在定义函数时使用*数字时,我的参数似乎被视为字符串而不是整数。正如您在下面看到的,我在输入参数“4”时收到了输出4、4、4、4、4、4。 我想要的输出实际上是32,但是我似乎无法得到这个输出,因为我无法将我的参数当作整数来处理。我尝试在函数中包含int(数字),但没有效果。是否有任何细微的变化,我可以得到我想要的输出 def multiply_m
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)
输入被理解为一个元组
print(multiply_machine(4))
def multiply_machine(numbers=(4,)):
multiplied_number=3*(4,)
m_numbers=5*(4,)
return (4, 4, 4) + (4, 4, 4, 4, 4)
因此,为了获得预期的结果,您应该像处理元组一样处理它。我不清楚你到底想达到什么目的。您可能希望编辑您的问题以使其更清晰。您可以利用“*numbers”提供的“iter”属性 选择1
def multiply_machine(*numbers): # preferable use args
print(hasattr(numbers, '__iter__'))
multiply_machine(4,3,4,4,5)
输出
True
32 16 24 32 40
因此,您可以通过
def multiply_machine(*numbers): # preferable use args
multiplied_number = [3 * x for x in numbers]
m_numbers = [5 * x for x in numbers]
summed = [x + y for x, y in zip(multiplied_number,m_numbers)]
return summed
print(multiply_machine(4))
print(multiply_machine(4,2,1))
输出:注意它返回为
[32]
[32, 16, 8]
备选案文2:
您可以将函数转换为生成器,如下所示:
def multiply_machine(*numbers): # preferable use args
yield from numbers
for i in multiply_machine(4,2,3,4,5):
summed = (5*i) + (3*i)
print(summed, end=' ')
输出
True
32 16 24 32 40
“我的参数似乎被当作字符串而不是整数处理。”不,不,不是。任何地方都没有显示字符串。发生的情况是,
*args
将变量应用的参数作为元组提供。你还指望它还能起什么作用?如果您使用multiply\u machine(1,2)
,您认为numbers
会是什么?因此,要获得所需的输出,只需使用def multiply\u machine(numbers)
…感谢您的及时响应,我知道如果不使用*args,只需使用“def multiply\u machine(numbers)”,我就可以获得所需的输出。然而,这将我的函数限制为只接受一个参数。是否有一种方法可以稍微调整初始函数,以便进行打印(乘法机器(4,2,1))并获得输出32,16,8当然,参数将以元组的形式提供。所以type(args)是tuple
,如果使用multiply\u machine(4,2,1)
则args==(4,2,1)