- Класс None в Python
- 1. Отсутствие объявления и назначения
- 2. Печать «type» переменной, присвоенной None
- 3. Сравнение переменной со значением None
- 4. Использование с условными операторами
- 5. Отсутствие возврата из функции
- Заключение
- Как «проверить» NoneType в python?
- 7 ответов
- Python `if x is not None` or `if not x is None`? [closed]
- 9 Answers 9
- Python if x is not None or if not x is None ?
- Readability
- Parsing and Compiling the Bytecode
- В Python как проверить, является ли переменная None, True или False
- 5 ответов
- None(null) в Python
- Что такое объект NONE в Python?
- Синтаксис NONE
- Реализация NONE на примерах
- Пример NONE с Set
Класс None в Python
В Python ничего не используется для определения нулевых переменных и объектов. None не является экземпляром класса NoneType.
Этот класс является одноэлементным, что означает, что может быть только один его экземпляр. Фактически, все переменные, которым присвоено значение none, указывают на один и тот же объект в Python.
1. Отсутствие объявления и назначения
Начнем с объявления переменной и присвоения ей значения None. Запустите следующую строку кода в записной книжке Python.
Теперь мы можем продолжить и напечатать значение переменной.
На выходе мы получаем «None».
2. Печать «type» переменной, присвоенной None
Как вы думаете, какой тип переменной должен быть назначен None?
Распечатаем его, используя следующую строку кода:
Мы получаем результат как:
Это соответствует тому, что мы обсуждали выше. Переменная, присвоенная None, указывает на экземпляр класса NoneType.
Существует только один экземпляр класса NoneType, поэтому все переменные, для которых установлено значение NULL, указывают на один и тот же объект.
Фактически, мы можем сравнить идентификаторы двух разных переменных, для которых установлено значение None.
Мы видим, что None, a и b имеют одинаковые идентификаторы объектов.
3. Сравнение переменной со значением None
Давайте воспользуемся оператором ‘==’ и ‘is’ для сравнения переменной, для которой установлено значение None.
Вы также можете использовать None в качестве условия в операторах if. Посмотрим, как это сделать.
4. Использование с условными операторами
Давайте использовать переменные, для которых установлено значение None в условиях If.
Мы видим, что переменная, установленная как None, работает как false. Мы можем использовать это для проверки переменных, для которых установлено значение None в наших программах.
Вы также можете использовать условие с «Not».
5. Отсутствие возврата из функции
Если мы не устанавливаем возвращаемое значение для функции, то по умолчанию возвращается None.
Мы можем проверить это с помощью следующего фрагмента кода:
Идентификатор в выходных данных такой же, как идентификаторы, которые были напечатаны выше.
Заключение
Это краткое руководство было посвящено None in Python. Мы установили, что все переменные, для которых установлено значение None, указывают на один и тот же экземпляр класса NoneType. Мы также рассмотрели, как использовать тип данных None в качестве условия в операторах If.
Источник
Как «проверить» NoneType в python?
У меня есть метод, который иногда возвращает значение NoneType. Так, как я могу подвергнуть сомнению переменную, которая является NoneType? Мне нужно использовать метод if , например
Я знаю, что это неправильный путь, и я надеюсь, что вы понимаете, что я имел в виду.
7 ответов
Так, как я могу подвергнуть сомнению переменную, которая является NoneType?
Используйте оператор is , вот так
Почему это работает?
Поскольку None является единственным одноэлементным объектом enjveXX>>> в Python, мы можем использовать оператор is , чтобы проверить, имеет ли переменная <
Операторы is и is not проверяют идентичность объекта: x is y имеет значение true, если и только если x и y являются одним и тем же объектом. x is not y возвращает значение обратной истинности.
Поскольку может быть только один экземпляр None , is будет предпочтительным способом проверки None .
Услышь это изо рта лошади
Сравнения с синглетами, такими как None , всегда следует выполнять с is или is not , , а не с операторами равенства .
Это также можно сделать с isinstance согласно ответу Алекса Холла:
isinstance также интуитивно понятен, но есть сложность, требующая строки
Который не нужен для таких типов, как int и float .
Не уверен, что это отвечает на вопрос. Но я знаю, что мне понадобилось время, чтобы понять. Я просматривал веб-сайт, и вдруг имена авторов уже не было. Так что нужно проверить заявление.
В этом случае автор может быть любой переменной, а None может быть любым типом, который вы проверяете.
Как указано в комментарии Аарона Холла:
Поскольку вы не можете создать подкласс NoneType и поскольку None является одноэлементным, isinstance не следует использовать для обнаружения None — вместо этого вы должны делать, как говорится в принятом ответе, и используйте is None или is not None .
Оригинальный ответ.
Однако самый простой способ — без дополнительной строки в дополнение к ответу кардамона вероятно:
isinstance(x, type(None))
Так, как я могу подвергнуть сомнению переменную, которая является NoneType? Мне нужно использовать если метод
Использование isinstance() не требует is внутри if — оператора:
Дополнительная информация
Вы также можете проверить наличие нескольких типов в одной инструкции isinstance() , как указано в документация. Просто напишите типы в виде кортежа.
Надеюсь этот пример будет вам полезен)
Итак, вы можете проверить тип имени переменной
Источник
Python `if x is not None` or `if not x is None`? [closed]
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 12 months ago .
I’ve always thought of the if not x is None version to be more clear, but Google’s style guide and PEP-8 both use if x is not None . Are there any minor performance differences (I’m assuming not), and is there any case where one really doesn’t fit (making the other a clear winner for my convention)?*
*I’m referring to any singleton, rather than just None .
. to compare singletons like None. Use is or is not.
9 Answers 9
There’s no performance difference, as they compile to the same bytecode:
Stylistically, I try to avoid not x is y , a human reader might misunderstand it as (not x) is y . If I write x is not y then there is no ambiguity.
Both Google and Python’s style guide is the best practice:
Using not x can cause unwanted results.
You may be interested to see what literals are evaluated to True or False in Python:
Edit for comment below:
I just did some more testing. not x is None doesn’t negate x first and then compared to None . In fact, it seems the is operator has a higher precedence when used that way:
Therefore, not x is None is just, in my honest opinion, best avoided.
More edit:
I just did more testing and can confirm that bukzor’s comment is correct. (At least, I wasn’t able to prove it otherwise.)
This means if x is not None has the exact result as if not x is None . I stand corrected. Thanks bukzor.
However, my answer still stands: Use the conventional if x is not None . :]
Code should be written to be understandable to the programmer first, and the compiler or interpreter second. The «is not» construct resembles English more closely than «not is».
Python if x is not None or if not x is None ?
TLDR: The bytecode compiler parses them both to x is not None — so for readability’s sake, use if x is not None .
Readability
We use Python because we value things like human readability, useability, and correctness of various paradigms of programming over performance.
Python optimizes for readability, especially in this context.
Parsing and Compiling the Bytecode
The not binds more weakly than is , so there is no logical difference here. See the documentation:
The operators is and is not test for object identity: x is y is true if and only if x and y are the same object. x is not y yields the inverse truth value.
The is not is specifically provided for in the Python grammar as a readability improvement for the language:
And so it is a unitary element of the grammar as well.
Of course, it is not parsed the same:
But then the byte compiler will actually translate the not . is to is not :
So for the sake of readability and using the language as it was intended, please use is not .
To not use it is not wise.
Источник
В Python как проверить, является ли переменная None, True или False
У меня есть функция, которая может вернуть одну из трех вещей:
- успех ( True )
- ошибка ( False )
- ошибка чтения / анализа потока ( None )
У меня вопрос: если я не должен тестировать True или False , как мне узнать, каков результат. Вот как я сейчас это делаю:
Действительно ли это так же просто, как удалить часть == True , или мне следует добавить тип данных tri-bool. Я не хочу, чтобы функция simulate выдавала исключение, поскольку все, что я хочу, чтобы внешняя программа сделала с ошибкой, — это зарегистрируйте ее и продолжайте.
5 ответов
Не бойся исключения! Запустить программу и продолжить ее так же просто, как:
И теперь вы можете получить гораздо более подробный тип уведомления от метода имитации о том, что именно пошло не так, если вы обнаружите, что ошибка / отсутствие ошибок недостаточно информативны.
Я считаю, что исключение — лучшая идея для вашей ситуации. Альтернативой будет метод симуляции для возврата кортежа. Первый элемент будет статусом, а второй — результатом:
Я хотел бы подчеркнуть, что, даже если бывают ситуации, когда if expr : недостаточно, потому что нужно убедиться, что expr равен True , а не просто отличается от 0 / None / что угодно, is предпочтительнее из == по той же причине S.Lott упоминается как избегающий == None .
Это действительно немного более эффективно и, вишня на торте, более читабельно для человека.
Ввод:
Вывод:
Никогда, никогда, никогда не говори
Никогда. Это безумие, поскольку вы избыточно повторяете то, что избыточно указано в качестве правила избыточного условия для оператора if.
Хуже, все же, никогда, никогда, никогда не говори
У вас есть not . Не стесняйтесь использовать его.
Наконец, выполнение a == None неэффективно. Делай a is None . None — это специальный одноэлементный объект, может быть только один. Просто проверьте, есть ли у вас этот объект.
Держите это простым и явным. Конечно, вы можете заранее определить словарь.
Если вы планируете изменить функцию simulate для включения большего количества кодов возврата, поддержание этого кода может стать проблемой.
simulate также может вызвать исключение из-за ошибки синтаксического анализа, и в этом случае вы либо перехватите его здесь, либо позволите распространить его на уровень выше, и бит печати будет уменьшен до однострочного оператора if-else ,
Источник
None(null) в Python
В этой статье мы сосредоточимся на ключевом слове NONE в Python.
Что такое объект NONE в Python?
Python NONE — это объект из мира Python — объектно-ориентированного программирования. Идентично значению NULL в других языках программирования, таких как java или php.
Объект NONE относится к типу данных «NoneType» и, следовательно, не может рассматриваться как значение некоторых примитивных типов данных или логических значений.
Таким образом, мы можем присвоить NONE в качестве значения любой используемой переменной.
Рассмотрим форму входа в систему с серверным языком Python для подключения к базе данных. Если мы хотим проверить, сформировали ли мы соединение с указанной базой данных, мы можем назначить NONE объекту подключения к базе данных и проверить, является ли соединение защищенным или нет.
Синтаксис NONE
Объект NONE не соответствует нормам обычных типов данных.
Более того, присвоение переменной NONE показывает, что конкретная переменная представляет собой нулевое значение.
Реализация NONE на примерах
Давайте посмотрим на пример ниже. Здесь мы присвоили переменной ‘var’ значение NONE.
Пример 1. Назначение объекта NONE переменной Python
Когда мы пытаемся распечатать значение, хранящееся в переменной, отображается следующий результат. Таким образом, становится ясно, что объект NONE представляет значение NONE, которое можно рассматривать как значение NULL.
В приведенном ниже примере мы попытались проверить, представляет ли NONE эквивалентное логическое значение.
Пример: логическая проверка на объект NONE
Как видно ниже, результат — ЛОЖЬ. Таким образом, этот пример проясняет, что объект не похож на логические значения или значения объектов других примитивных типов.
Теперь давайте попробуем объединить примитивный тип и значения NoneType в структуры данных Python, такие как Set, Lists и т. д.
Пример NONE с Set
Когда мы передаем значения других примитивных типов вместе с NONE в структуры данных, такие как наборы, списки и т. д., Мы наблюдаем, что значение NONE возвращает NONE в качестве значения при их печати.
Источник