python中两个参数的乘法

USe*_*299 3 python casting

我试图使用Python,我创建了一个简短的方法:

def mul(x,y):
    print(x*y)
Run Code Online (Sandbox Code Playgroud)

通过运行mul(2,"23"),我得到了这个出色的输出:2323

有人可以解释一下吗?

Ter*_*ryA 10

因为你将一个字符串和一个整数相乘:

>>> print '23' * 2
2323
Run Code Online (Sandbox Code Playgroud)

这相当于'23' + '23'.

不要mul(2, int('23'))'23'成整数,或刚刚摆脱周围的引号的23.

顺便说一句,这个功能已经存在于operator模块中:

operator.mul(2, 23)
Run Code Online (Sandbox Code Playgroud)


Sud*_*pta 5

在您的乘法函数中,首先根据您的要求将输入转换为 int 或 float。

def mul(x,y):
    print(int(x)*int(y))
Run Code Online (Sandbox Code Playgroud)

乘法就是重复加法。 在您的情况下,如果一个字符串被传递给您的函数,那么它会被多次“添加”。

此外,如果两个输入都是字符串,那么它会抛出错误。

TypeError: can't multiply sequence by non-int of type 'str'
Run Code Online (Sandbox Code Playgroud)

所以在乘法之前先转换它们是最安全的。