Нет значения / код в автоматизации скучной вещи - PullRequest
0 голосов
/ 02 июня 2019

В тексте говорится следующее:

В Python есть значение None, которое представляет собой отсутствие значения.None - единственное значение типа данных NoneType.(В других языках программирования это значение может называться null, nil или undefined.) Как и значения Boolean True и False, None необходимо вводить с заглавной буквы N.

Это значение без значения может бытьполезно, когда вам нужно хранить что-то, что не будет путать с реальным значением в переменной.Единственное место, где используется None, - это возвращаемое значение print ().Функция print () отображает текст на экране, но ей не нужно ничего возвращать так же, как len () или input ().Но поскольку все вызовы функций должны возвращать возвращаемое значение, print () возвращает None.Чтобы увидеть это в действии, введите в интерактивную оболочку следующее:

>>> spam = print('Hello!')
Hello!
>>> None == spam
True

За кулисами Python добавляет return None в конец любого определения функции без оператора return.Это похоже на то, как цикл while или for неявно заканчивается оператором continue.Кроме того, если вы используете оператор return без значения (то есть само по себе только ключевое слово return), то возвращается None.

Мне кажется, я понимаю, что такое None, но я не понимаюкод.Почему spam тогда равно None, когда ему присвоено значение print('Hello!')?Когда я вписываю spam в интерактивную оболочку сразу после назначения, она ничего не возвращает.У меня такое ощущение, что аргумент Hello! сразу же забывается при вызове print() и возвращает значение, но если я определил spam как функцию print() с аргументом Hello!, который должен быть передан,не всегда возвращаются Hello!?

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Чтобы добавить к комментариям и быть более понятным, ваша print() функция напечатала 'Hello!' на экране и вернула None в программу.Печать и возврат - это не одно и то же - печать для пользователя, возврат для программы.Печать идет только на экран и (как правило) не может быть использована программой в дальнейшем.Возвращенное значение может быть сохранено в переменной, такой как spam, и использовано далее.

Различие между печатью и возвратом достаточно важно, чтобы стандарт Python заключался в том, что если функция печатает что-то, она не должна возвращатьлюбое значение, отличное от None, и если функция возвращает значение, она не должна ничего печатать.Этот стандарт не соблюдается во многих других языках (наиболее известный как C) и не всегда соблюдается в Python, но это различие действительно помогает ясности Python.Если вы хотите изучить эту концепцию дальше, выполните поиск «побочных эффектов» в программировании.

0 голосов
/ 02 июня 2019

Вы присваиваете spam функции print(), которая ничего не возвращает, иначе None

...