Почему я получаю «None» как вывод из оператора print? - PullRequest
0 голосов
/ 10 февраля 2019
def print_name(name):
    print(name)

print(print_name('Annabel Lee'))

Почему я получаю следующий вывод:

Annabel Lee
None

Точнее, откуда пришло слово None?

Ответы [ 5 ]

0 голосов
/ 10 февраля 2019

Функция print() оценивает аргументы в скобках и печатает результат.print(1+1) выведет «2», так как результат 1 + 1 равен 2. Точно так же, print("abcd".upper()) выведет «ABCD».

Когда вы вызываете print(print_name('Annabel Lee')), функция печати пытаетсяоцените аргумент, в данном случае print_name('Annabel Lee').Поскольку функция print_name() не возвращает никакого значения (она просто печатает 'Annabel Lee'), возвращаемое значение равно None.Вот почему функция print() печатает «Нет».

0 голосов
/ 10 февраля 2019

Ваша функция печатает имя, и вам не нужно снова использовать print().

def print_name(name):
    print(name)

print_name('Annabel Lee')

Если вы не используете return в функции, она возвращает None по умолчанию.Ваш код был правильным, если ваша функция была такой:

def print_name(name):
    return name

print(print_name('Annabel Lee'))
0 голосов
/ 10 февраля 2019

У вас есть два вызова print: один внутри print_name и другой вне области действия функции.

Один внутри print_name() печатает переданный name. Один снаружи печатаетчто возвращает print_name функция - это None, поскольку у вас нет return оператора.Предполагая, что вам нужен только один вывод на печать, вы return вместо его печати в функции:

def print_name(name):
    return name

print(print_name('Annabel Lee'))

Или просто вызовите print_name, не заключая его в функцию print.

0 голосов
/ 10 февраля 2019

Ваша функция не возвращает ничего, поэтому она дает None.Невозвратная функция возвращается с None.

0 голосов
/ 10 февраля 2019

Поскольку вы печатаете метод print, возвращаемое имя должно быть имя, а не print(name).

...