Проблема, как правило, в том, как вы звоните mul2()
.То, что вы делаете, вычисляет следующее:
mul2(5)
Учитывая ваше определение mul2()
, эффект строки h *= h
заключается в сохранении h * 5
в h
, а с h
это 5
, то, что вы получите, это h = 5 * 5
, и, следовательно, ваш 25
будет напечатан.
Что вы, вероятно, хотите сделать, это что-то вроде:
def mul2(h, n=5):
h *= n
print(h) # not sure you really want this inside your function besides for debugging purposes, and even then...
Это вы бывызовите как:
mul2(h, 5)
, и вы получите что-то похожее на mul(h)
.
Если вы хотите, чтобы ваш исходный ввод не был изменен, вы можете сделать что-то вроде:
def mul3(h, n=5):
g = h.copy()
g *= n
print(g) # see above
или даже лучше:
def mul3(h, n=5):
return h * n
Это создаст копию массива в h
с включенной модификацией, которую вы можете print()
или делать с любым другим.
Обратите внимание, что не рекомендуется изменять ввод функции.Конечно, есть варианты использования для этого, но я бы посоветовал вам очень хорошо это документировать.