Рубрики
Без рубрики

Пвердые и фальсивые значения в Python: подробное представление

Автор оригинала: Estefania Cassingena Navone.

Добро пожаловать

В этой статье вы узнаете:

  • Какие истинные и ложные ценности являются.
  • Что делает ценность правды или фальсию.
  • Как использовать Bool () функция, чтобы определить, является ли значение правдем или фальсию.
  • Как сделать объекты от заданных пользователем классов правды или фальсификации, используя специальный метод __Bool __ Отказ

Давайте начнем! ✨.

🔹 ценности правды против правдоподобных и фальсифицированных ценностей

Позвольте мне представить вам эти концепции, сравнивая их со значениями Правда и Ложь что мы обычно работаем.

Выражения с операндами и операторами оценивают либо Правда или Ложь И их можно использовать в Если или в то время как Состояние, чтобы определить, должен ли код кода выполняться.

Здесь у нас есть пример:

# Expression 5 < 3
>>> if 5 < 3:
	print("True")
else:
	print("False")

# Output
False

В этом примере все работает, как мы ожидали, потому что мы использовали выражение с двумя операндами и оператором 5 <3 Отказ

Но что вы думаете, что произойдет, если мы попытаемся запустить этот код?

>>> a = 5

>>> if a:
	print(a)

Обратите внимание, что теперь у нас нет типичного выражения рядом с Если Ключевое слово, только переменная:

Удивительно, что вывод:

5

Если мы изменим значение А до нуля, как это:

>>> a = 0

>>> if a:
	print(a)

Нет вывода.

Я уверен, что вы должны задавать это прямо сейчас: Что сделал код успешно запущен?

Переменная А не является типичным выражением. У него нет операторов и операндов, так почему он оценил на Правда или Ложь В зависимости от его стоимости?

Ответ лежит на концепции правдоподобных и фальсифицированных ценностей, которые не являются ценностями правды, но они оценивают либо Правда или Ложь Отказ

🔸truthy и Falsy ценностей

В Python, индивидуальный Значения может оценить либо Правда или Ложь Отказ Они не обязательно должны быть частью большего выражения для оценки ценности правды, потому что у них уже есть тот, который был определен правилами языка Python.

Основные правила:

  • Значения, которые оценивают в Ложь считаются Falsy Отказ
  • Значения, которые оценивают в Правда считаются Правда Отказ

Согласно Документация Python :

🔹 Логический контекст

Когда мы используем значение как часть большего выражения, или как Если или в то время как Состояние, мы используем его в Логический контекст Отказ

Вы можете подумать о булевом контексте как определенную «часть» вашего кода, который требует, чтобы значение было либо Правда или Ложь придавать смысл.

Например, (см. Ниже) Состояние после Если ключевое слово или после в то время как Ключевое слово должно оценить либо Правда или Ложь :

💡 Совет: Значение может быть сохранено в переменной. Мы можем написать имя переменной после Если или в то время как Ключевое слово вместо самого значения. Это обеспечит ту же функциональность.

Теперь, когда вы знаете, какие правдивые и ложные ценности являются и как они работают в булевом контексте, давайте посмотрим на реальные примеры правдоподобных и фальсифицированных ценностей.

🔸 Значения Falsy

Последовательности и сборники:

  • Пустые списки []
  • Пустые кортежи ()
  • Пустые словари {}
  • Пустые наборы набор()
  • Пустые струны "" "
  • Пустые диапазоны Диапазон (0)

Числа

  • Ноль любого числового типа.
  • Целое число: 0.
  • Поплавок: 0.0
  • Комплекс: 0J.

Константы

  • Никто
  • Ложь

Фальсифицированные значения были причиной, почему в нашем первоначальном примере не было вывода, когда значение А был ноль.

Ценность 0 Является ли ложно, так что Если Состояние будет Ложь И условное не будет работать в этом примере:

>>> a = 0
>>> if a:
	print(a)

# No Output	

🔹 правдивые ценности

Согласно Документация Python :

Пвердые значения включают в себя:

  • Непопустые последовательности или коллекции (списки, кортежи, строки, словари, наборы).
  • Числовые значения, которые не являются нуля.
  • Правда

Вот почему значение А был напечатан в нашем первоначальном примере, потому что его значение было 5 (правдоподобное значение):

>>> a = 5

>>> if a:
	print(a)
    
 # Output
 5

🔸 Встроенная функция Bool ()

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

Согласно Документация Python Эта функция:

Вам нужно только пройти значение в качестве аргумента, как это:

>>> bool(5)
True
>>> bool(0)
False
>>> bool([])
False
>>> bool({5, 5})
True
>>> bool(-5)
True
>>> bool(0.0)
False
>>> bool(None)
False
>>> bool(1)
True
>>> bool(range(0))
False
>>> bool(set())
False
>>> bool({5, 6, 2, 5})
True

💡 Совет: Вы также можете пройти переменную в качестве аргумента для проверки, если его значение является правдой или фальсию.

🔹 реальные примеры

Одним из преимуществ использования правдоподобных и фальсифицированных ценностей является то, что они могут помочь вам сделать ваш код более лаконичным и читаемым. Здесь у нас есть два реальных примера.

Пример: У нас есть эта функция print_even () Это принимает аргумент в списке или кортеж, который содержит номера и печатает только значения, которые даже являются. Если аргумент пуст, он печатает описательное сообщение:

def print_even(data):
	if len(data) > 0:
		for value in data:
			if value % 2 == 0:
				print(value)
 	else:
 		print("The argument cannot be empty")

Обратите внимание на эту строку:

if len(data) > 0:

Мы можем сделать состояние гораздо более лаконичнее с правдой и фальсивыми значениями:

if data:

Если список пуст, данные будет оценивать Ложь Отказ Если это не пусто, это будет оценивать Правда Отказ Мы получаем ту же функциональность с более кратным кодом.

Это будет нашей окончательной функцией:

def print_even(data):
	if data:
		for value in data:
			if value % 2 == 0:
				print(value)
 	else:
 		print("The argument cannot be empty")

Пример: Мы также могли бы использовать правдивые и фальсифицировать значения для повышения исключения (ошибка), когда аргумент, передаваемый на функцию, недействителен.

>>> def print_even(data):

	if not data:
		raise ValueError("The argument data cannot be empty")

	for value in data:
		if value % 2 == 0:
			print(value)

В этом случае, используя не данные Как состояние Если Заявление, мы получаем противоположную ценность правды данные для Если условие.

Давайте проанализируем не данные Подробнее:

Если данные пустой:

  • Это будет ложное значение, поэтому данные будет оценивать Ложь Отказ
  • не данные будет эквивалентно не ложь , что это Правда Отказ
  • Состояние будет Правда Отказ
  • Исключение будет повышено.

Если данные не пусто:

  • Это будет правдовая ценность, поэтому он оценивает Правда Отказ
  • не данные будет эквивалентно Не правда , что это Ложь Отказ
  • Состояние будет Ложь Отказ
  • Исключение не будет повышено.

🔸 Изготовление пользовательских объектов правдивых и фальсифицированных ценностями

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

__bool __ ()

С специальным методом __bool __ () , вы можете установить «настроенное» условие, которое определит, когда объект вашего класса будет оценивать на Правда или Ложь Отказ

Согласно Документация Python :

Например, если у нас есть этот очень простой класс:

>>> class Account:
	
	def __init__(self, balance):
		self.balance = balance

Вы можете видеть, что никаких специальных методов не определены, поэтому все объекты, которые вы создаете из этого класса, всегда будут оценивать на Правда :

>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
True

Мы можем настроить это поведение, добавив специальный метод __bool __ () :

>>> class Account:
	def __init__(self, balance):
		self.balance = balance
		
	def __bool__(self):
		return self.balance > 0

Теперь, если баланс счета больше нуля, объект будет оценивать Правда Отказ В противном случае, если баланс счета равен нулю, объект будет оценивать Ложь Отказ

>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
False

💡 Совет: Если __bool __ () не определен в классе, но __лен __ () Метод в том, что значение, возвращенное этим методом, определит, будет ли объект правдивой или фальсию.

🔹 в резюме

  • Пвердые значения – это ценности, которые оценивают Правда в булевом контексте.
  • Значения FALSY – это значения, которые оценивают Ложь в булевом контексте.
  • Значения Falsy включают пустые последовательности (списки, кортежи, строки, словари, наборы), ноль в каждом численном виде, Нет и Ложь Отказ
  • Пвердые значения включают непустые последовательности, цифры (кроме 0 в каждом числовом типе) и в основном каждое значение, которое не является фальсию.
  • Их можно использовать, чтобы ваш код более лаконичным.

Я действительно надеюсь, тебе понравилась моя статья и обнаружила, что это полезно. Теперь вы можете работать с правдоподобными ценностями в ваших проектах Python. Проверьте мои онлайн-курсы Отказ Следуй за мной на Twitter Отказ ⭐️.