Проверка возврата непустого значения
Кидаю GET-запрос. Получаю ответ в виде ключ-значение. Это тест и надо, чтоб он падал, если одно из значений пустое. Подскажите, как?
r = requests.get(url + 'api/v1/currency/RUB/USD/CASH/') reqs = r.content.decode('utf-8') print(r.status_code) print(reqs) dict = json.loads(reqs) print(dict) print(dict["data"]["rate_kind"]) print(dict["data"]["curr_buy"])
Отслеживать
задан 11 апр 2019 в 6:42
Сергей Богданов Сергей Богданов
353 7 7 серебряных знаков 22 22 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Через if и get проверяйте элементы у словаря. Т.к. если запрашивать через квадратные скобки rs[‘data’] , то при отсутствии элемента будет выброшено исключение KeyError, а при запросе через get rs.get(‘data’) при отсутствии ключа вернется None :
rs = json.loads(reqs) print('Ответ:', rs) if not rs: raise Exception('Пустой ответ!') if not rs.get("data"): raise Exception('В ответе отсутствует или пустое поле "data"') if not rs.get("data").get("rate_kind"): raise Exception('В ответе отсутствует или пустое поле "data/rate_kind"') if not rs.get("data").get("curr_buy"): raise Exception('В ответе отсутствует или пустое поле "data/curr_buy"') print(rs["data"]["rate_kind"]) print(rs["data"]["curr_buy"])
Оператор if not . тут сможет проверить элемент на пустоту (пустая строка «» , пустой список [] , пустой словарь <> , отсутствует None , и т.п.)
PS. не используйте в качестве имени переменной dict , т.к. это название встроенной функции (вот список) и после объявления этой переменной не сможете использовать эту функцию
None (null), или немного о типе NoneType

Ключевое слово null обычно используется во многих языках программирования, таких как Java, C++, C# и JavaScript. Это значение, которое присваивается переменной.
Концепция ключевого слова null в том, что она дает переменной нейтральное или «нулевое» поведение.
А что же в Python?
Эквивалент null в Python: None
Он был разработан таким образом, по двум причинам:
Многие утверждают, что слово null несколько эзотерично. Это не наиболее дружелюбное слово для новичков. Кроме того, None относится именно к требуемой функциональности — это ничего, и не имеет поведения.
Присвоить переменной значение None очень просто:
Существует много случаев, когда следует использовать None.
Часто вы хотите выполнить действие, которое может работать либо завершиться неудачно. Используя None, вы можете проверить успех действия. Вот пример:
Python является объектно-ориентированным, и поэтому None - тоже объект, и имеет свой тип.
Проверка на None
Есть (формально) два способа проверить, на равенство None.
Один из способов — с помощью ключевого слова is.
Второй — с помощью == (но никогда не пользуйтесь вторым способом, и я попробую объяснить, почему).
Посмотрим на примеры:
Данный код выведет:
Отлично, так они делают одно и то же! Однако, не совсем. Для встроенных типов - да. Но с пользовательскими классами вы должны быть осторожны. Python предоставляет возможность переопределения операторов сравнения в пользовательских классах. Таким образом, вы можете сравнить классы, например, MyObject == MyOtherObject.
И получаем немного неожиданный результат:
Интересно, не правда ли? Вот поэтому нужно проверять на None с помощью ключевого слова is.
А ещё (для некоторых классов) вызов метода __eq__ может занимать много времени, и is будет просто-напросто быстрее.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как проверить, пуст ли список в Python
Списки являются одной из четырех наиболее часто используемых структур данных в Python, и в основном они используются для хранения набора данных.
Решение 1. Использование рекомендованного стиля PEP 8.
В этом подходе мы будем проверять, пуст ли список в Python, используя его логическое значение. Его также называют проверкой истинности.
Согласно официальным документам, вот большинство встроенных объектов, которые считаются ложными:
- константы, определенные как ложные: None и False .
- ноль любого числового типа: 0, 0.0, 0j, Decimal (0), Fraction(0, 1)
- пустые последовательности и коллекции: ", (), [], <>, set(), range(0)
Поскольку пустой список — это просто пустая коллекция, он будет преобразован в логическое значение False .
Мы можем проверить это двумя способами. Давайте возьмем пример, чтобы продемонстрировать оба метода.
В первом подходе, если список содержит значение, тогда условие if оценивается как True, и блок if выполняется, в противном случае условие оценивается как False и переходит к блоку else .
my_list = [] if my_list: print("List is not Empty") else: print("List is Empty")
List is Empty
Второй подход аналогичен, но мы просто делаем инверсию, используя not условие if . В этом случае, если список пуст, условие оценивается как True . Это лучший способ написания кода, а также повышает читабельность кода.
my_list = [] if not my_list: print("List is Empty") else: print("List is not Empty")
List is Empty
Решение 2. Использование метода bool()
Другой подход состоит в том, чтобы проверить, пуст ли список или нет, используя метод bool() . Функция bool() возвращает логическое значение объекта, т. е. либо True , либо False .
Этот подход менее распространен, поскольку мы можем достичь желаемых результатов, не используя метод bool() , как показано в рекомендуемом стиле PEP-8.
my_list = [] if bool(my_list): print("List is not Empty") else: print("List is Empty")
List is Empty
Решение 3. Использование метода len().
Метод len() — еще один популярный способ проверить, пуст ли список в Python. Он возвращает длину переданного ему аргумента. Если длина равна 0, это означает, что список пуст.
Здесь можно использовать две техники.
Первый метод заключается в использовании проверки истинности. Если список пуст, метод len() возвращает 0, который внутренне приводится к логическому значению False .
my_list = [] if len(my_list): print("List is not Empty") else: print("List is Empty")
List is Empty
Вторая техника довольно проста. Мы будем использовать оператор сравнения, чтобы проверить, равна ли длина списка 0. Основное преимущество этого метода заключается в том, что код становится более читаемым и понятным для новичков в Python.
Если длина списка равна 0, то условие выполняется, и можно сделать вывод, что это пустой список.
my_list = [] if len(my_list) == 0: print("List is Empty") else: print("List is not Empty")
List is Empty
Решение 4. Сравнение с пустым списком []
Этот подход довольно прост для начинающих. Здесь мы сравниваем существующий список с новым пустым списком [] внутри условия if. Если условие удовлетворяется, это означает, что список пуст и выполняется блок if, в противном случае выполняется блок else.
my_list = [] if my_list == []: print("List is Empty") else: print("List is not Empty")
List is Empty
Вывод
В Python есть несколько способов проверить, пуст ли список, самый питонический способ — использовать подход в стиле PEP-8, который называется «Проверкой истинности» . Другой альтернативный подход заключается в использовании метода len() с оператором сравнения или методом bool() .
Переменные в Python
Переменные — важная часть любого языка программирования. Они позволяют хранить, использовать и передавать данные.
Переменные позволяют не только удобно манипулировать данными, но и разделять их на типы, с которыми можно работать по определённым правилам. В Python они подчиняются концепциям, используемым в других языках программирования, однако они также имеют особенности, например, тип явно не объявляется.
Создание и присвоение значений
Создание переменной в Python 3 отличается от других языков программирования. Её не нужно заранее объявлять, указывать её тип, она создается в момент присваивания значения.
Чтобы создать переменную, используется символ равенства «=». Слева от которого пишут наименование, а справа — значение нужного типа. Пример:
name = "Александр" # Типа str (строка) age = 15 # Типа int (целое число)
Динамическая типизация
Такое создание переменных возможно благодаря динамической типизации.
Переменную не нужно объявлять заранее, потому что тип определяется по присвоенному значению, кроме того, при повторном присваивании значения другого типа, не нужно переопределять тип.
Множественное присваивание и обмен значениями
Python позволяет программисту присвоить одно и то же значение нескольким переменным:
a = b = c = 5 # Все (a, b и с) хранят значение 5
Кроме того, в отличие от других языков программирования Python позволяет обменять значения двух переменных —
a = 5, b = 3, с = 7 a, b = b, a # Теперь a = 3, а b = 5 a, b, c = c, a, b # Можно обменивать значения не только для двух
Такая операция возможна, потому что Python используется кортеж, в который помещает значения, чтобы можно было поменять их местами.
Если использовать классический способ, применяемый в других языках, необходимо вводить дополнительную переменную, которая по сути является буфером для временного хранения значений.
Имена
В именах переменных в Python 3 можно использовать только буквы, цифры и символы подчеркивания. Цифры можно использовать в любой части имени, кроме начала.
И если синтаксис накладывает на программиста мало ограничений, то IT сообщество требует «хороших» имён для переменных:
- Имя должно описывать назначение. Так как код может перечитываться и изменяться множество раз, названия переменных должны быть такими, чтобы по ним можно было понять, что она хранит и для чего используется.
- Не нужно использовать транслит. Если программист хочет создать переменную, хранящую возраст программиста, он должен писать не «vozrast», а «age». Это обусловлено тем, что английский — самый используемый язык в IT, название на английском поймут все, в любом случае, можно воспользоваться переводчиком.
- Приемлемая длина. Имя должно не только отражать суть, но и быть коротким, слишком длинные названия увеличивают объем кода и ухудшают его восприятие.
Для создания хороших имён используются следующие методы:
- CamelCase (верблюжий регистр): первое слово начинается с маленькой буквы, а следующие за ним с большой. В Python CamelCase принято использовать для имён классов. Например: WorkersOfFactory .
- Snake Case: имя состоит из слов, разделенных символом подчеркивания «_», каждое слово пишут с маленькой буквы, например, hello_world . В Python Snake Case используется для имён функций, модулей и переменных. Такой стиль записи воспринимается лучше, чем CamelCase. Кроме того, он имеет несколько вариаций, которые не используются в Python: таких как запись через дефис «-» (kind-of-animals) и запись каждого слова с большой буквы (Sorted-Array-Of-Names).
Зарезервированные имена (ключевые слова)
Нельзя назвать переменную именем, которое уже зарезервировано, как ключевое слово. В Python есть около 33 зарезервированных имён: def, True, False, break и так далее.
Полный список ключевых слов можно посмотреть, набрав в интерпретаторе Python команду: help("keywords") .
Вывод в консоль
Чтобы вывести переменную на экран, используют функцию print(). С её помощью можно вывести значение одной или нескольких переменных в форматированном выводе. Есть несколько вариантов синтаксиса вывода:
- print(«<> — число, <> — слово».format(number, word)). Например, переменная number хранит значение 5, а word хранит «пять», тогда на экран выведется: «5 — число, пять — слово».
- Можно обойтись без использования .format, достаточно писать составные части вывода через запятую: print(number, » — число», word, » — слово»).
Вывод обоих способов будет одинаковым, кроме того, не нужно указывать тип переменной, интерпретатор определит его сам.
Пустая переменная
Переменная — это ссылка на какой-то объект, она не может не содержать совсем ничего. Если программист хочет сделать его пустой (условно пустой), он присваивает ей значение None .
None используется в случаях, когда значение не определено, не существует. И хотя он не эквивалентен какому-либо значению типа bool, строке или числу, он также является объектом.
При необходимости, можно проверить содержимое переменной следующим образом:
a = None if a is None: print('значение равно None') else: print('другое значение')
Может использоваться, например, когда мы в переменной храним указатель на открытый файл. И когда мы этот файл закрываем, то присваиваем указателю значение None. В дальнейшем можно проверять будет перед записью или чтением данных, является ли переменная пустой.
Области видимости
В Python есть глобальная и локальная область видимости. Объявление переменных в разных областях видимости помогает избежать пересечения имён, открывает программисту новые уровни взаимодействий между ними и делает код более безопасным, делая невозможным несанкционированный доступ к механизмам работы функций.
Глобальная область видимости — это тело исполняемого скрипта. К любой переменной, объявленной в ней, можно получить доступ из любой части программы, даже из другого модуля.
Чтобы получить доступ к глобальной переменной из функции, необходимо использовать ключевое слово global, оно показывает интерпретатору, что нужно использовать находящуюся в глобальной области видимости. Кроме того, если функция не находит в своём теле нужную переменную, она автоматически ищет её в глобальной области видимости скрипта и использует.
Локальная область видимости недоступна для редактирования из вне, любая переменная, объявленная внутри функции будет находиться в локальной области видимости, это позволяет использовать одно и то же имя много раз в одной программе, защитить функцию от ненужных изменений и упростить написание кода.
В 3 версии Python было добавлено ключевое слово nonlocal . Оно позволяет получить доступ к переменной из локальной области видимости функции, при условии, что программист пытается получить доступ из другой вложенной функции. Пример:
def count(): n = 0 def inc(): n += 1 # Вызовется ошибка, функция не может получить доступ nonlocal n n += 1 # К n из внешней функции прибавится 1 return n inc() return n # будет равна 1 (если закомментировать строку с ошибкой)
Удаление
Для удаления переменной в Python 3 можно воспользоваться функцией del() , в качестве аргумента в которую нужно передать её имя. Пример:
a = 5 del(a) print(a) # Произойдёт исключение
Заключение
Python даёт программисту все необходимое для работы с переменными, он предоставляет и такие инструменты, которых нет в других языках программирования, например, обмен значений.
Python делает работу с переменными очень простой, он позволяет не объявлять их типы, присваивать уже существующей значение другого типа и поддерживает работу с областями видимости.