Проверка формы Javascript

Проверка формы — основная и самая важная часть процесса веб-разработки. Обычно проверка формы выполняется на стороне сервера. Проверка формы помогает отображать сообщения об ошибках для пользователя, если есть какие-либо ненужные или неправильные данные, или если обязательное поле остается пустым. Если сервер обнаруживает какую-либо ошибку, он возвращает эту ошибку; затем мы показываем пользователю сообщение об ошибке. Но мы можем использовать javascript в интерфейсе, чтобы проверить данные формы и сразу показать ошибки. В этой статье мы изучим основную проверку формы в javascript. Итак, давайте сразу перейдем к примерам и посмотрим, как это сделать в javascript.

 

Примеры

Прежде всего, мы предполагаем форму с именем «testForm», в которой у нас есть поле ввода с меткой «Имя пользователя», а тип ввода отправляется в наш HTML-файл. В теге формы мы создали событие onsubmit, в котором мы закрываем и возвращаем функцию validateFunc () .

<form action="" method="get" name="testForm" onsubmit="return(validationFunc())">

<label for="name">Имя</label>

<input type="text" name="name"><br><input type="submit" value="Submit">

</form>

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

Итак, чтобы проверить поле имени пользователя. Сначала мы назначаем переменную document.testForm, чтобы код выглядел чистым и понятным. Затем в определении функции мы напишем код для проверки. Мы напишем оператор if, чтобы проверить пустое поле формы. Если поле имени пользователя пусто, мы покажем окно предупреждения, чтобы показать ошибку, снова сфокусируемся на поле имени пользователя и вернем false, чтобы форма не была отправлена. В противном случае, если он пройдет проверку и данные будут проверены, мы вернем true функции.

var theForm = document.testForm;



// Код проверки формы

function validationFunc() {

if (theForm.name.value == "") {

alert( "пустое имя" );

theForm.name.focus();

return false;

}



return (true);

}




После написания всего этого кода. Если мы запустим код и нажмем кнопку отправки, ничего не написав в поле формы.

Как вы можете видеть на скриншоте ниже, в окне предупреждения возникает ошибка.

Это очень простой, но хороший пример для начала реализации проверки формы. Для дальнейшей реализации, например, проверки нескольких форм или если вы хотите проверить длину символа.

Для этой цели мы сначала предполагаем два поля формы в теге формы с метками «электронная почта» и «пароль» в нашем HTML-файле.

<form action="" method="get" name="testForm" onsubmit="return(validationFunc())">

<label for="name">Имя</label>

<input type="text" name="name"><br><label for="email">Электронная почта</label>

<input type="email" name="email" id=""><br><label for="password">Пароль</label>

<input type="password" name="password" id=""><br><br>



<input type="submit" value="Submit">

</form>




Для проверки в javascript мы снова добавим оператор if для проверки полей формы электронной почты и пароля в определение функции файла сценария. Предположим, мы хотим применить несколько проверок к полю электронной почты, например, поле не должно быть пустым, а его длина не должна быть меньше 10 символов. Итак, мы можем использовать OR «||» в операторе if. Если возникнет какая-либо из этих ошибок, отобразится окно предупреждения с сообщением об ошибке, которое мы хотим показать, сфокусируемся на поле формы электронной почты и вернем false функции. Точно так же, если мы хотим применить проверку длины символа в поле пароля, мы можем это сделать.

var theForm = document.testForm;



// Код проверки формы

function validationFunc() {

if (theForm.name.value == "") {

alert( "пустое имя" );

theForm.name.focus();

return false;

}



if (theForm.email.value == "" || theForm.email.value.length < 10) {

alert( "Пустая почта" );

theForm.email.focus();

return false;

}



if (theForm.password.value.length < 6) {

alert( "Пароль должен быть длиной 6 символов" );

theForm.password.focus();

return false;

}



return (true);

}




После написания всего этого кода перезагрузите страницу, чтобы обновить код. Теперь либо оставим пустое поле электронной почты, либо напишем письмо длиной менее 10 символов. В обоих случаях будет отображаться сообщение об ошибке «Неправильный адрес электронной почты».

Итак, вот как мы можем применить базовую проверку формы в JavaScript. Мы также можем применить проверку данных на стороне клиента с помощью Regex или написав нашу собственную функцию. Предположим, мы хотим применить проверку данных к полю электронной почты. Регулярное выражение будет таким для проверки электронной почты.

if (/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/.

test(theForm.email.value)) {

alert( "Неправильная почта" );

theForm.email.focus() ;

return false;

}

 

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

 

Вывод

В этой статье рассматривается базовая проверка формы в javascript. Мы также попробовали и прокрались в проверке данных с помощью регулярного выражения.



2020-11-26T21:47:57
Программирование

Как преобразовать целое число в строку в Python

Python имеет несколько встроенных типов данных. Иногда при написании кода Python вам может потребоваться преобразовать один тип данных в другой. Например, объедините строку и целое число, сначала вам нужно преобразовать целое число в строку.

В этой статье объясняется, как преобразовать целое число Python в строку.

 

Функция str() в Python

В Python мы можем преобразовывать целые числа и другие типы данных в строки с помощью встроенной функции str().

Функция str() возвращает строковую версию данного объекта. Он принимает следующие формы:

class str(object='')

class str(object=b'', encoding='utf-8', errors='strict')


  • object — Объект, который нужно преобразовать в строку.

Функция принимает три аргумента, но обычно при преобразовании целого числа в строку вы передаете функции только один аргумент (object).

 

Преобразование целого числа Python в строку

Чтобы преобразовать целое число 23 в строковую версию, просто передайте это число в функцию str():

str(23)

type(days)


'23'

<class 'str'>


 

Кавычки около 23 указывают на то, что число не является целым числом, а является объектом строкового типа. Также функция type() показывает, что объект является строкой.

В Python строки объявляются с использованием одинарных (‘), двойных («) или тройных кавычек («»»).

 

Объединение строк и целых чисел

Попробуем объединить строки и целые числа с помощью оператора + и распечатать результат:

number = 6

lang = "Python"

quote = "Есть " + number + " операторов в " + lang + "."

print(quote)


 

Python выдаст ошибку исключения TypeError, потому что он не может объединить строки и целые числа:

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: can only concatenate str (not "int") to str


 

Чтобы преобразовать целое число в строку, передайте целое число в функцию str():

number = 6

lang = "Python"

quote = "Есть " + str(number) + " операторов в " + lang + "."

print(quote)


Теперь, когда вы запустите код, он будет успешно выполнен:

Есть 6 операторов в Python.


 

Есть и другие способы объединения строк и чисел.

Встроенный строковый класс предоставляет метод format(), который форматирует заданную строку, используя произвольный набор позиционных и ключевых аргументов:

number = 6

lang = "Python"

quote = "Есть {} операторов в {}.".format(number, lang)

print(quote)


Есть 6 операторов в Python.


 

В Python 3.6 и новее вы можете использовать f-строки, которые представляют собой буквальные строки с префиксом ‘f’, содержащие выражения в фигурных скобках:

number = 6

lang = "Python"

quote = f"Есть {number} операторов в {lang}."

print(quote)


Есть 6 операторов в Python.


 

Наконец, вы можете использовать старое% -форматирование:

number = 6

lang = "Python"

quote = "Есть %s операторов в %s." % (number, lang)

print(quote)


Есть 6 операторов в Python.


 

Вывод

В Python вы можете преобразовать целое число в строку с помощью функции str().

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-11-26T12:30:20
Python

Андроид не видит сим-карту, что делать?

Есть разные причины, по которым ваше устройство Android не читает SIM-карту. Некоторые возможные причины могут заключаться в том, что вы неправильно вставили SIM-карту или на вашем устройстве Android возникла проблема с программным обеспечением. Какой бы ни была причина, решение нужно найти быстро, когда ваш телефон сообщает: «SIM-карта не обнаружена».

Вот несколько исправлений для тех случаев, когда ваш телефон Android не может обнаружить SIM-карту.

Если перезагрузка не удалась, выключите телефон

Если причиной ошибки вашей SIM-карты является проблема программного обеспечения, иногда для решения проблемы достаточно простой перезагрузки. Нажмите и удерживайте кнопку питания, пока не появится всплывающее окно с опцией «Перезагрузка». Нажмите на него, чтобы перезагрузить телефон.

Это может решить множество проблем, но в последнее время пользователи сетей Sprint и Verizon сообщали, что перезагрузки недостаточно, чтобы исправить ошибку «Нет SIM-карты», и даже перезагрузка может вызвать ошибку «SIM-карта не обнаружена». Решение заключалось в том, чтобы выключить их телефоны (подождать 30 секунд), а затем снова запустить их.

Если это решит вашу проблему, вам следует придерживаться выключения, а затем включения телефона вместо перезагрузки, пока не будет выпущено обновление Android или обновление настроек оператора, чтобы решить проблему.

Включите SIM-карту

Еще одно простое решение ошибки SIM-карты в более поздних версиях Android — проверить, действительно ли ваша SIM-карта включена. Для этого перейдите в «Настройки -> Сеть и Интернет -> SIM-карты», затем коснитесь ползунка рядом с вашей SIM-картой, чтобы он был «Вкл.».

Если у вас установлена ​​две SIM-карты, это также экран, на котором вы можете убедиться, что SIM-карта, которую вы хотите использовать, включена.

Измените сетевой режим на автоматический

Вы также можете попробовать изменить сетевой режим на автоматический. Вы можете сделать это, перейдя в «Настройки -> Мобильные сети -> Сетевой режим» и выбрав первый вариант, которым будет LTE/WCDMA/GSM (автоматическое подключение).

Выберите правильного оператора сети

Если ваш сетевой оператор не тот, который выбран в настройках вашего Android-устройства, вы обязательно получите ошибку SIM-карты. Чтобы убедиться, что у вас есть нужный, перейдите в «Настройки -> Мобильные сети -> Операторы сети -> Поисковые сети». Когда ваше устройство Android завершит поиск и отобразит результаты, нажмите на своего оператора.

Введите настройки APN вашей сети вручную

Если два вышеуказанных метода не работают, возможно, ваша SIM-карта полностью потеряла связь с сетью, к которой она должна подключаться. Если это произошло, вам может потребоваться ввести настройки APN вашего оператора сети вручную.

На современном устройстве Android (начиная с версии 9.0 Pie) для этого перейдите в «Настройки -> Сеть и Интернет -> Мобильная сеть -> Дополнительно -> Имена точек доступа», а затем нажмите значок «+» в правом верхнем углу.

На этом этапе вам нужно либо обратиться к своему сетевому провайдеру, чтобы получить необходимые настройки APN, чтобы ввести здесь, либо проверить в Интернете, опубликованы ли ваши сетевые провайдеры. Также может быть хорошей идеей сделать снимок экрана и сохранить настройки APN, чтобы вы могли быстро обратиться к ним, если снова столкнетесь с проблемой.

Извлеките SIM-карту и аккумулятор.

Еще одно базовое решение, которое вы можете попробовать, — это извлечь аккумулятор (если он съемный) и SIM-карту из лотка для SIM-карты. Прежде чем сделать это, убедитесь, что вы выключили свое устройство Android. После того, как вы все удалили, подождите примерно одну минуту и ​​снова вставьте все заново.

Обычная практика — бросить телефон, но даже если он не пострадал, SIM-карта могла сдвинуться с места. Дешевый и уникальный метод, который пробовали многие, — это добавить немного бумаги или даже ленты, чтобы плотнее прилегать. Обычно это позволяет установить SIM-карту плотно и плотно и решить проблему.

Попробуйте использовать свой телефон в безопасном режиме

К сожалению, не все устанавливаемые вами приложения работают хорошо. Некоторые приложения могут причинить больше вреда, чем пользы, и будут вызывать эту ошибку. Загрузите ваше устройство в безопасном режиме.

Оставайтесь в безопасном режиме на несколько часов и посмотрите, сохраняется ли у вас эта проблема. Если нет, попробуйте вспомнить несколько последних установленных вами приложений и удалите их. Выйдите из безопасного режима и посмотрите, сохраняется ли у вас эта проблема.

Решение для режима полета

Если вы попробовали все вышеперечисленные базовые исправления и уверены, что SIM-карта не виновата, пора попробовать решение для режима полета. Проведите пальцем вниз от верхнего края дисплея (один или два раза в зависимости от того, где вы разместили значок), и включите его.

В зависимости от вашей версии Android вы можете получить или не получить предупреждающее сообщение при включении режима полета. Включите его и оставьте примерно на тридцать секунд. Когда вы его выключите, ваше устройство Android начнет поиск сети, и, надеюсь, ошибка SIM-карты будет исправлена.

Исправьте ошибку SIM-карты, очистив кеш

Очистить кеш вашего Android, чтобы попытаться исправить ошибку отсутствия SIM-карты, чрезвычайно просто. Перейдите в «Настройки -> Хранилище -> Внутреннее хранилище -> Кэшированные данные». Когда вы нажмете на кешированные данные, вы увидите всплывающее окно с сообщением, что это очистит кеш для всех приложений на вашем устройстве. Просто нажмите «Удалить», чтобы продолжить.

Если бы существовал только способ с самого начала узнать, что вызывает ошибку отсутствия SIM-карты, не было бы необходимости тратить время на попытки использовать различные методы. К сожалению, до тех пор, пока на устройстве Android не появится сообщение о причине, метод проб и ошибок — это все, что у вас есть. Эта проблема с сим-картой также может повлиять на ваши сотовые данные.



2020-11-26T10:07:41
Вопросы читателей

Что такое Conhost.exe и насколько это безопасно?

Когда работает ПК с Windows, происходят миллионы вычислений, сообщающих компьютеру, как делать все, от загрузки веб-страницы до открытия части программного обеспечения. Для этого процесса требуется любое количество системных служб, которые доставят вас из пункта А в пункт Б, с такими процессами, как ntoskrnl.exe, предназначенными для участия в общем взаимодействии с пользователем.

Сюда входит conhost.exe, системный процесс, который появляется каждый раз, когда вы открываете окно командной строки. Но что такое conhost.exe? И безопасно ли оставить этот процесс запущенным на вашем ПК? Это руководство объяснит все, что вам нужно знать о conhost.exe, включая то, как определить поддельный системный процесс.

Что такое Conhost.exe?

Процесс conhost.exe , также известный как процесс Console Window Host, возник в Windows XP как способ взаимодействия командной строки (cmd.exe) с другими элементами Windows, включая проводник Windows как часть системы времени выполнения клиент-сервера. Сервис (csrss.exe).

Например, если вы решили перетащить файл в окно командной строки, CSRSS обеспечит правильное отображение местоположения файла в строке командной строки.

К сожалению, это серьезный системный процесс, который представляет огромные риски для безопасности. Разрешение командной строки (с полным контролем над вашим компьютером) такого доступа к файловой системе может вывести ваш компьютер из строя. Эта угроза безопасности вынудила Microsoft внести изменения в работу системы.

Windows Vista предлагала большую безопасность, но с ограниченной функциональностью, что делало невозможным перетаскивание файлов в окно командной строки. Для Windows 10 Microsoft представила процесс conhost.exe , который (наряду с гораздо меньшим процессом csrss.exe) позволяет командной строке безопасно работать с другими процессами без того же уровня рисков безопасности, который csrss.exe представлял в Windows XP. .

Это позволяет Microsoft более тесно интегрировать процессы, такие как командная строка, в Windows 10 с современными темами и функциями перетаскивания, подобными тем, которые присутствуют в версии csrss.exe для XP. Если вы используете современную Windows Powershell, вы увидите еще большую безопасность, поскольку csrss.exe и conhost.exe полностью игнорируются.

Может ли Conhost.exe стать причиной высокой загрузки ЦП, ОЗУ или других ресурсов системы?

Хотя это маловероятно, сообщалось, что conhost.exe вызывает высокую загрузку ЦП или ОЗУ (или в целом высокую загрузку системных ресурсов) на ПК с Windows 10. Если это произойдет с вами, это может указывать на более серьезную проблему с вашим компьютером.

В нормальных условиях conhost.exe не должен вызывать чрезмерное использование системных ресурсов. Он должен появляться только в том случае, если вы (или фоновое приложение) используете командную строку. Поскольку Windows PowerShell теперь является инструментом терминала по умолчанию в Windows, вам вообще не нужно открывать cmd.exe.

Однако это не исключает возможности того, что другие фоновые приложения могут по-прежнему использовать скрытую командную строку для запуска. Хотя игра в старые игры DOS вряд ли вызовет всплеск использования системных ресурсов, некоторые новые системные приложения могут вызвать проблемы.

Чтобы найти виновника, вы можете использовать приложение Process Explorer, разработанное Microsoft. Это позволяет увидеть, какие запущенные приложения могут взаимодействовать с conhost.exe и вызывать высокую загрузку ЦП.

  1. Для этого загрузите и запустите Process Explorer с веб-сайта Microsoft. В окне Process Explorer выберите Find > Find Handle или DLL, чтобы открыть окно поиска. Или нажмите Ctrl + F на клавиатуре.

  2. В поле поиска Process Explorer найдите conhost, затем нажмите кнопку Search. В списке выберите один из результатов. Обозреватель процессов немедленно изменит вид, чтобы выделить элемент.

  3. Сделайте это для каждого примера conhost.exe, запущенного на вашем компьютере. Если использование системных ресурсов (например, ЦП в столбце ЦП) слишком велико, вы можете завершить процесс, щелкнув правой кнопкой мыши и выбрав параметр «Завершить процесс».

Если вы обнаружите, что conhost.exe взаимодействует с другим приложением или службой, которые вы не знаете, это может указывать на заражение вредоносным ПО. Если это произойдет, просканируйте свой компьютер на наличие вредоносных программ, чтобы убедиться, что ваш компьютер безопасен в использовании.

Как удалить Conhost.exe из Windows 10

Интерфейс, который conhost.exe предоставляет для фоновых приложений, продолжает оставаться важным, даже несмотря на то, что командная строка становится менее важной в Windows 10. Как важный системный процесс сам по себе, вы не можете удалить conhost.exe из запущенного. И попытка сделать это может помешать запуску других приложений и служб.

Для большинства пользователей процесс conhost.exe не вызывает никаких проблем, и его можно оставить запущенным. Если он работает, он работает в фоновом режиме, позволяя другим приложениям взаимодействовать с более низкими уровнями операционной системы Windows.

Если вы запускаете его самостоятельно, это все равно не должно быть проблемой, хотя мы все же рекомендуем в долгосрочной перспективе перейти на более новую оболочку PowerShell . Однако проблема с conhost.exe может возникнуть в том случае, если он используется мошенническим программным обеспечением.

Некоторые вредоносные программы будут запускать поддельные процессы (используя имя conhost.exe), чтобы замаскироваться, в то время как другие будут взаимодействовать с conhost.exe, чтобы получить дополнительный контроль над вашим компьютером и его ресурсами. Если вас это беспокоит (даже после сканирования на наличие вредоносных программ ), вы можете проверить, является ли conhost.exe законным системным процессом.

Как проверить, является ли Conhost.exe реальным и безопасным

Почти во всех случаях системные процессы, такие как conhost.exe и msmpeng.exe, должны запускаться только из одного места на вашем ПК: из папки Windows (C:Windows) или одной из ее подпапок (например, C:WindowsSystem32). Хотя есть исключения для упакованных приложений UWP, таких как yourphonexe.exe , для conhost.exe это все еще верно.

Это позволяет легко определить, является ли conhost.exe безопасным и законным или поддельным, используя диспетчер задач Windows, чтобы открыть расположение любых запущенных процессов conhost.exe. Если вы хотите быть уверены, что conhost не взаимодействует с вредоносными программами, вы можете сначала проверить с помощью Process Explorer (как описано выше).

  1. Чтобы проверить, безопасен ли conhost.exe, щелкните правой кнопкой мыши панель задач и выберите параметр «Диспетчер задач».

  2. На вкладке «Процессы» окна диспетчера задач найдите процесс «Хост окна консоли». Возможно, вам придется нажимать значок стрелки рядом с каждым процессом, чтобы найти его в списке другого процесса. Вы также можете найти conhost.exe на вкладке «Подробности».

  3. Чтобы проверить, является ли процесс conhost.exe настоящим, щелкните его правой кнопкой мыши на вкладке «Процессы» или «Сведения», затем выберите параметр «Открыть расположение файла».

  4. Это откроет папку C:WindowsSystem32 в проводнике Windows. Если это не так, значит, запущенный в данный момент процесс conhost.exe является поддельным. Вам нужно будет выполнить сканирование вашего компьютера, чтобы избавиться от вероятного заражения вредоносным ПО, если это так.

Безопасность системы Windows 10

Conhost.exe — это лишь один из множества различных системных процессов, которые играют роль в правильной работе всей операционной системы Windows. Выполнив указанные выше действия, вы можете быть уверены, что процессы, на которых основан ваш компьютер, безопасны для запуска и использования без необходимости их останавливать или удалять.

Это не означает, что все процессы, запущенные на вашем компьютере, безопасны. Если вы беспокоитесь, вы можете запланировать сканирование Защитника Windows на уровне загрузки, чтобы проверить все файлы на вашем компьютере на наличие вредоносных программ. И, если это не сработает, существует множество сторонних приложений, которые могут вместо этого удалять устойчивые вредоносные программы.



2020-11-26T08:54:50
Вопросы читателей

Получаем сертификаты Let’s Encrypt для домена.

Сегодня в статье разберем установку SSL сертификата от Let’s Encrypt для домена, при помощи cerbot на Ubuntu или Debian системы.

Certbot – это клиент протокола ACME предназначенный для автоматического управления SSL-сертификатами от Let’s Encrypt, он позволяет полностью автоматизировать процесс получения и продления сертификата, а при использовании соответствующих плагинов даже может автоматически конфигурировать веб-сервер или иное, использующее сертификат приложение.

Дальнейшие инструкции будут предназначены для операционных систем Debian и Ubuntu, но многое будет справедливо и для иных дистрибутивов Linux. Читать

Python. Класс словаря defaultdict

Python предлагает множество встроенных структур данных, таких как списки, кортежи и словари, для эффективного сохранения данных и управления ими. Словари позволяют легко сохранять данные в виде пар «ключ-значение». Ключ действует как индекс и используется для извлечения данных. Ключи должны быть уникальными и неизменными во всем словаре. Ключи в основном представляют собой строки и целые числа, хотя значение ключа может быть любого типа, например целое число, строка, число с плавающей запятой или комплексное число. Между тем, словарь может содержать коллекцию, такую ​​как список, кортеж или какой-либо другой тип словаря. Словарь в Python создается с помощью пары фигурных скобок, в которых каждая пара «ключ-значение» разделяется запятой.

Что, если вы попытаетесь получить доступ или изменить определенный ключ в несуществующем словаре? Что ж, в этом случае интерпретатор Python вызовет ошибку «KeyError» и прекратит выполнение программы.

Давайте посмотрим на пример ошибки KeyError.

#Создание списка

my_dict= {1:"Hello",2:"Welcome",3:"AndreyEx"}

#доступ к несуществующему ключу

my_dict[4]

 

Для обработки этой ошибки Python предоставляет тип defaultdict, класс словаря, который можно найти в модуле коллекций. В этой статье подробно рассматривается Python defaultdict.

 

Объяснение и примеры defaultdict

Defaultdict — это альтернатива словарю Python. Он возвращает объекты типа словаря. Defaultdict — это подкласс dict. В случае отсутствия ключа вместо того, чтобы вызывать ошибку «KeyError», значение по умолчанию предоставляется для несуществующего ключа. Синтаксис defaultdict следующий:

defaultdict(default_factory)

Функция defaultdict принимает в качестве аргумента параметр default_factory. Функция default_factory возвращает значение по умолчанию для определенного defaultdict. Если мы попытаемся получить доступ или изменить отсутствующий ключ, то функция default_factory в качестве результата вернет значение по умолчанию. Если функция default_factory отсутствует, defaultdic вызовет ошибку «KeyError», если будут отсутствовать какие-либо ключи.

Во-первых, мы реализуем defaultdic в нашем скрипте Python для доступа как к существующим, так и к отсутствующим ключам.

# импортировать defaultdict из модуля коллекции

from collections import defaultdict

# определение функции, возвращающей значение по умолчанию

def my_func():

print("Ключ не определен")

# создание defualtdict 

# передача my_func() в качестве аргумента для defaultdict

my_dict=defaultdict(my_func)

# определение ключей и значений

my_dict[1]="Привет"

my_dict[2]="Добро пожаловать"

my_dict[3]="AndreyEx" 

#доступ к значениям с помощью ключей

print(my_dict [1])

print(my_dict [2])

print(my_dict [3]) 

# доступ к отсутствующему или не определенному ключу

my_dict [4]

 

[4] — это недостающий ключ. Таким образом, вместо того, чтобы вызвать ошибку «KeyError», он вызывает функцию default_factory, которая возвращает значение по умолчанию.

Лямбда-функция, известная как анонимная функция, также может использоваться в качестве параметра default_factory.

Затем мы реализуем лямбда-функцию и передадим ее в качестве аргумента defaultdict.

# импортировать defaultdict из модуля коллекции

from collections import defaultdict

# создать defualtdict

# передать функцию Lamnda в качестве аргумента defaultdict

my_dict=defaultdict(lambda:"Ключ не определен")

# определение ключей и значений

my_dict[1]="Привет"

my_dict[2]="Добро пожаловать"

my_dict[3]="AndreyEx" 

#доступ к значениям с помощью ключей

print(my_dict[1])

print(my_dict [2])

print(my_dict [3]) 

#доступ к отсутствующему или не определенному ключу

print(my_dict [4])

 

Defaultdict вызывает default_factory для предоставления значения по умолчанию, но функция __missing () __ предоставляет значение по умолчанию. Функция __missing () __ — это встроенная функция в Python, которая принимает в качестве аргумента параметр default_factory. Если параметр default_factory не определен, функция __missing () __ вызывает ошибку «KeyError».

Здесь мы будем использовать функцию __missing () __ в нашем скрипте Python.

# импортировать defaultdict из модуля коллекции

from collections import defaultdict

# определение функции для возврата значения по умолчанию

def my_func() :

print("Ключ не определен")

# создание defualtdict 

#передача my_func() в качестве аргумента для defaultdict

my_dict=defaultdict(my_func)

# определение ключей и значений

my_dict[1]="AndreyEx" 

# доступ к значениям с помощью ключей

print(my_dict [1]) 

# доступ к отсутствующему или не определенному ключу

my_dict.__missing__(2)

 

Классы list и int также могут использоваться как параметры default_factory с defaultdict.

 

Список как параметр default_factory

Defaultdict создается со значениями списка, когда классу списка передается параметр default_factory.

# импортировать defaultdict из модуля коллекции

from collections import defaultdict

# определение класса списка передачи defaultdict

# как default_factory

my_dict=defaultdict(list)

for i in range(7):

my_dict[i].append(i)

#печать значений

print(my_dict)

 

На выходе отображаются значения в списке. Как видите, был создан defaultdict, содержащий ключ и значения.

 

Целые числа как параметр default_factory

Если мы передадим класс int в качестве параметра default_factory, мы сможем создать defaultdict, который будет содержать только целые числа. Мы создадим список целых чисел и сохраним его в defaultdict.

# импортировать defaultdict из модуля коллекции

from collections import defaultdict

# определение defaultdict

# передача класса int как default_factory

my_dict=defaultdict(int)

# создание списка целых чисел

my_list=[1,2,3]

for i in my_list:

my_dict[i]+=1

#печать значений

print(my_dict)

 

В данном выводе целые значения перед двоеточием (:) являются ключами, а целые значения после двоеточия — значениями.

 

Вывод

Dafualtdict — это подобный словарю класс, присутствующий в модуле коллекций. Он работает как словарь Python, но не вызывает ошибку «KeyError», если ключ не найден. Эта статья подробно объясняет defaultdict с различными примерами.



2020-11-25T12:42:58
Python