В Python есть особое значение — `None`. Оно обозначает "ничего" или "отсутствие значения". Это не ноль, не пустая строка и не `False`, а совершенно самостоятельный объект. Понимание `None` и других "пустых" или ложноподобных значений — ключ к написанию надежного и читаемого кода. Вы научитесь использовать `None` в качестве заглушки, возвращаемого значения из функций и аргумента по умолчанию. Эти задания помогут вам разобраться, как Python определяет "истинность" и "ложность" разных типов данных, что является фундаментальной концепцией для управления логикой программы. Пройдя тренажер, вы сможете уверенно отличать `None` от `0` или пустых коллекций и правильно использовать их в своих проектах.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Присваивание значения None
В Python существует специальное значение `None` для обозначения отсутствия чего-либо. Это как пустая ячейка, которая ждет, чтобы ее заполнили. Ваша задача — присвоить переменной `user_status` значение `None`, чтобы показать, что статус пользователя пока не определен.
# Статус пользователя еще не определен
user_status = input1S
print(user_status)None в логических выражениях
Значение `None` в логическом контексте (например, в условии `if`) интерпретируется как `False`. Проанализируйте код и напишите, что он выведет на экран.
result_from_db = None
if result_from_db:
print("Данные получены")
else:
print("Данных нет в базе")Правильная проверка на None
Сравнивать переменную с `None` через оператор `==` хоть и работает, но не является рекомендуемой практикой (согласно PEP 8). Правильный способ — использовать оператор `is`. Исправьте выделенную строку кода, чтобы проверка на `None` соответствовала лучшим практикам Python.
def check_value(value): if value == None: print("Значение не задано.") else: print(f"Значение: {value}") check_value(None)None — это не False
Хотя `None` и `False` оба ведут себя как ложь в условиях `if`, это два совершенно разных объекта с разными типами. Что выведет код, который проверяет их идентичность с помощью оператора `is`?
print(None is False)Истинные и ложные значения
В Python многие "пустые" или "нулевые" значения ведут себя как `False` в логических выражениях. Их называют "ложноподобными" (falsy). Распределите предложенные значения по двум категориям в зависимости от того, как они поведут себя в условии `if`.
Функция с None в качестве аргумента
`None` часто используется в качестве значения по умолчанию для изменяемых аргументов (как списки или словари). Это позволяет избежать неожиданного поведения. Расставьте строки в правильном порядке, чтобы создать функцию, которая добавляет тег в список. Если список тегов не передан, функция должна создать новый.
tags_list.append(tag) if tags_list is None:def add_tag(tag, tags_list=None): return tags_list tags_list = []Возвращение None из функции
Функции часто возвращают `None`, чтобы показать, что операция не удалась или результат не был найден. Заполните пропуски в функции `get_config`, которая ищет значение в словаре. Если ключ найден, функция должна вернуть его значение. В противном случае — `None`.
config = {'host': 'localhost', 'port': 8080}
def get_config(key):
if key in config:
return input1S
else:
return input2S
# Пытаемся получить пароль, которого нет
password = get_config('password')
print(password)Пустые значения и их типы
В Python существует несколько видов "пустых" значений, помимо `None`. Каждое из них относится к своему типу данных. Сопоставьте литерал пустого значения в левой колонке с его правильным типом в правой.
""[]{}()0Использование `or` для значений по умолчанию
Оператор `or` возвращает первый истинный операнд или последний ложный, если все ложны. Это часто используется для задания значений по умолчанию. В коде допущена ошибка: `username` получает пустое значение `config_name`. Исправьте строку присваивания `username`, чтобы она получала `default_name`, если `config_name` пустое.
# Имя пользователя из конфига (может быть пустым)config_name = ""default_name = "Guest" # Если config_name пусто, нужно использовать default_nameusername = config_name print(username)