Архив рубрики: Публикации

OrderedDict в Python

Структуры данных являются важными компонентами любого языка программирования, которые эффективно хранят данные и управляют ими. Python предоставляет множество встроенных структур данных, например списков, кортежей и словарей, которые помогают программистам создавать эффективные приложения. Словари Python хранят данные в парах ключ-значение. OrderedDict является подклассом класса dict и поддерживает порядок вставленных ключей. Это единственное различие между dict и OrderDict. Диктовка не поддерживает порядок ключей.

OrderedDict сохраняет порядок вставки ключей, и когда мы перебираем OrderedDict, он возвращает ключи в том же порядке. С другой стороны, когда итерация выполняется для dict, ключи возвращаются в случайном порядке. Однако словари теперь упорядочены в версиях Python 3.6 и выше и возвращают значения в том же порядке, в котором они были вставлены. Класс OrderedDict существует в модуле коллекций. Поэтому, чтобы использовать класс OrderedDict, сначала импортируйте модуль collections. Эта статья подробно объясняет Python OrderedDict с примерами.

 

Примеры

Давайте создадим OrderedDict в нашем скрипте Python и добавим данные в виде ключей и значений. Items() — это встроенная функция Python, которая возвращает информацию о ключах и значениях.

# импорт модуля коллекций



import collections



# создание OrderedDict



my_dict = collections.OrderedDict()



my_dict["A"]=1



my_dict["B"]=2



my_dict["C"]=3



my_dict["D"]=4



# объявление цикла for для перебора OrderDict



for i in my_dict.items():



print(i)




В выводе можно заметить, что OrderedDict возвращает ключи и значения в том же виде, что и вставленные.

Теперь давайте создадим еще один OrderDict студента и сохраним в нем информацию о студенте.

# импорт модуля



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



# объявление цикла for для перебора OrderDict



for i in std_dict.items():



print(i)




Изменение значений ключей

Мы можем изменить значение конкретного ключа OrderedDict. Если мы изменим значение любого конкретного ключа, порядок ключей останется таким же в OrderDict. Давайте изменим значение возраста в студенте OrderDict.

# импорт модуля коллекций



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



print ( "Порядок ключей перед изменением значения возраста: "



for i in std_dict.items():



print(i)



# изменение значения возраста



std_dict['age']=25



print ( "Порядок ключей после изменения значения возраста:" )



for i in std_dict.items():



print(i)




Выходные данные показывают, что порядок ключей остается неизменным, когда мы изменяем значение определенного ключа.

 

Удаление значения из OrderedDict

Удаление значений из OrderDict не меняет порядок ключей. Если мы удалим определенный ключ и снова вставим его, он будет добавлен в конце. Давайте посмотрим на пример. Мы удалим ключ «возраст» из студенческого словаря, а затем снова вставим его.

# импорт модуля коллекций



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



print ( "Порядок ключей перед изменением значения возраста: "



for i in std_dict.items():



print(i)



# удаление ключа возраста



del std_dict['age']



print ( "Порядок ключей после удаления ключа возраста:" )



for i in std_dict.items():



print(i)



# повторная вставка ключа возраста и значения



std_dict['age']=23



print ( "Порядок ключей после повторной вставки ключа возраста:")



for i in std_dict.items():



print(i)




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

 

Вывод

OrderedDict — это подкласс dict, который упорядочивает ключи по порядку и сохраняет порядок при их вставке. Класс OrderedDict является частью модуля коллекций. Эта статья объясняет OrderedDict и его функциональные возможности с примерами.



2020-11-28T16:49:06
Новости

Функция Lambda в Python

Python — это универсальный и широко используемый в последнее время язык программирования. Однако Python предоставляет множество встроенных функций для выполнения множества конкретных задач. Однако мы можем создавать свои собственные функции для выполнения конкретной задачи. В Python ключевое слово lambda создает анонимную функцию. Функция без имени называется анонимной функцией. Обычно обычная функция в Python создается с использованием ключевого слова def. У него есть название и круглые скобки. В то время как анонимная функция используется с ключевым словом лямбда. Поэтому анонимная функция также известна как лямбда-функция. В этой статье объясняется лямбда-функция Python на примерах.

 

Синтаксис лямбда-функции

Лямбда-функция может принимать несколько аргументов и только одно выражение. Выражение выполняет свою работу, и результат возвращается. Синтаксис лямбда-функции:

lambda argument(s) : expression

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

 

Пример 1. Вычислить сумму чисел с помощью лямбда-функции.

Давайте создадим лямбда-функцию для вычисления чисел. Лямбда-функция принимает два числа в качестве аргумента и возвращает результат.

# программа для создания лямбда-функции

# создание лямбда-функции

sum_val = lambda a,b : a+b

# передача аргументов и печать значения суммы

print(sum_val(5,10))

 

Давайте определим нормальную функцию, чтобы понять разницу между нормальной и лямбда-функцией.

# создание нормальной функции

def sum_val(a,b):

return a+b

# передача аргументов и печать значения суммы

print("The sum value is: ",sum_val(5,10))

 

Обе функции возвращают одно и то же значение при передаче похожих аргументов. В обычной функции мы используем ключевое слово def и должны написать имя функции. После выражения суммы мы помещаем оператор return в конец, чтобы вернуть значение результата. В лямбда-функции оператор возврата не включен. Он возвращает выходное значение после вычисления или выполнения выражения.

 

Пример 2: реализация нескольких лямбда-функций

Реализуем лямбда-функции с другим номером аргумента.

# программа для реализации множества лямбда-функций



# лямбда-функция для вычитания числа

a = lambda a,b,c: a-b-c



# передача аргументов и печать значения разности



print ( "Значение вычитания:" , a (200,10,2) )



# лямбда-функция для умножения двух чисел



b = lambda a,b:a*b



# передача аргументов и печать значения разности



print("Значение умножения:" , b( 10 , 5 ) )



# лямбда-функция для вычисления значения квадрата



c = lambda a:a*a



# передача аргументов и печать значения разности



print("Значение квадрата:" , c(10 ) )



#a lambda функция для вычисления значения куба



c = lambda a:a*a*a



# передача аргументов и печать значения разности



print("Значение куба:" , c(10 ) )



# лямбда-функция для определения четного числа



c = lambda a:(a%2==0)



# передача аргументов и печать значения разницы



print("Данное число четное:" , c(1001 ) )



# лямбда-функция для определения високосного года



c = lambda a:(a%4==0)



# передача аргументов и печать значения разницы



print("Данный год високосный:" , c(2020 ) )


 

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

 

Использование лямбда-функции внутри нормальной функции

Лямбда-функция может быть реализована внутри обычной или обычной функции Python. Функция sum_val принимает число в качестве аргумента и возвращает лямбда-функцию. Он хранится в переменной с именем value. Второй аргумент передается лямбда-функции, и она возвращает значение суммы.

#a программы для реализации функции лямбды внутри нормальной функции



#объявление нормальной функции

def sum_val(num1):

#объявление функции лямбды внутри функции

return lambda num2: num1+num2

value = sum_val(10)

print("Значение суммы равно: ",value(200))


 

Вывод

Аноним в Python называется лямбда-функцией. Анонимная функция создается, когда нам нужно использовать объект функции. В этой статье на примерах объясняется лямбда-функция.



2020-11-28T14:05:03
Python

Как настроить WireGuard VPN на CentOS 8

WireGuard — это простой и современный VPN (виртуальная частная сеть) с современной криптографией. Это быстрее, проще в настройке и более производительно, чем другие аналогичные решения, такие как IPsec и OpenVPN .

WireGuard является кроссплатформенным и может работать практически где угодно, включая Linux, Windows, Android и macOS. Wireguard — это одноранговая VPN; он не основан на модели клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент. Читать

Шлюз и брандмауэр. В чем разница

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

Что такое шлюз?

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

Что такое брандмауэр?

Брандмауэр предназначен для мониторинга входящего и исходящего сетевого трафика и принятия решения о том, разрешить или заблокировать определенный трафик на основе набора правил безопасности. Он может установить барьер между вашей внутренней сетью и входящим трафиком из внешних источников (таких как Интернет), чтобы блокировать вредоносный трафик, такой как вирусы и хакеры.

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

В чем разница между шлюзом и межсетевым экраном?

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

Цель

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

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

Функция

По функциям шлюз можно разделить на три типа: шлюз протокола, шлюз приложений и шлюз безопасности. Шлюз протоколов используется для преобразования протоколов между сетями с использованием разных протоколов, что является наиболее распространенной функцией шлюзов. Шлюз приложений может соединять два разных приложения на уровне приложений, что подходит для трансляции протоколов для конкретного приложения. Что касается шлюза безопасности, он может предложить защиту от угроз сетевой безопасности путем применения политик безопасности компании и фильтрации вредоносного интернет-трафика в режиме реального времени. Кроме того, на рынке есть мультисервисные шлюзы, которые используют высокопроизводительную многоядерную архитектуру и интегрируют такие функции, как межсетевой экран с отслеживанием состояния, шлюз VPN, управление сетевым трафиком и т. д.

Межсетевые экраны выполняют три основные функции безопасности для сети — фильтрацию пакетов, проверку с отслеживанием состояния и работу в качестве прокси приложения.

  • При фильтрации пакетов межсетевой экран работает на уровне пакетов и проверяет пакет данных, когда он поступает в компьютерную сеть или покидает ее. Затем брандмауэр использует определенные пользователем правила, чтобы решить, принять или отклонить пакет. Если данные подходят, то данные могут быть получены, и наоборот, если они не соответствуют правилам, то данные отклоняются. Фильтрация пакетов обычно достаточно эффективна для защиты от атак из локальной сети.
  • В отличие от фильтрации пакетов, статическая фильтрация будет проверять заголовки пакетов и различные элементы каждых данных и сравнивать их с достоверной информацией из базы данных. Во время проверки пакет будет проанализирован по уровням путем записи IP-адреса и номера порта, так что безопасность более строгая, чем фильтрация пакетов.
  • Когда брандмауэр действует как прокси-сервер приложения, он работает на уровне приложения, чтобы остановить передачу информации (например, вредоносное ПО, пытающееся проникнуть в вашу систему) между внутренней и внешней сетями.

 

Принцип работы

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

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

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

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



2020-11-27T11:22:15
Безопасность

Проверка формы 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