Вопрос-Ответ

What causes my function to return None at the end? [duplicate]

Что заставляет мою функцию возвращать None в конце?

Моя очень простая функция python возвращает None в конце, и я не совсем уверен, почему. Я просмотрел несколько других сообщений и все еще не могу понять это.

Вот мой код:

def printmult(n):
i = 1
while i <= 10:
print (n * i, end = ' ')
i += 1

print(printmult(30))
Переведено автоматически
Ответ 1

Потому что в Python каждая функция возвращает значение, и None это то, что возвращается, если вы явно не укажете что-то еще.

Что именно вы ожидали print(printmult(30)) от нее? Вы попросили ее оценить printmult(30), а затем print какие бы результаты это ни дало. Из этого должно получиться что-то, верно? Или, может быть, вы ожидали, что будет вызвано какое-то исключение?

Пожалуйста, убедитесь, что вы понимаете, что печать и возврат - это не одно и то же.

Ответ 2

Вы ничего не возвращаете в функции printmult, поэтому при печати результата printmult(30) это будет None (это значение по умолчанию, возвращаемое, когда функция ничего явно не возвращает).

Поскольку в вашем методе есть print оператор внутри, и он не должен что-то возвращать (обычно, когда метод имеет что-то вроде printSomething() , он ничего не возвращает), вы должны вызвать его как:

printmult(30)

нет

print(printmult(30))
Ответ 3

Другие ответы проделали хорошую работу, указав, где находится ошибка, т. Е. вам нужно понимать, что печать и возврат - это не одно и то же. Если вы хотите, чтобы ваша функция возвращала значение, которое вы затем можете распечатать или сохранить в переменной, вам нужно что-то вроде этого:

def returnmult(n):
i = 1
result_string = ''
while i <= 10:
result_string += str(n * i) + ' '
i += 1
return result_string

print(returnmult(30))
Ответ 4
def printmult(n):
i = 1
while i <= 10:
print (n * i, end = ' ')
i += 1

printmult(30)

Проблема заключалась в том, что вы печатали возвращаемое значение функции, которая ничего не возвращает, которая печатала бы None

python function