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

Тернарный оператор в Python

Тернарные операторы — это встроенные в Python условные операторы, которые используются для оценки определенных условий. Он оценивает, является ли условие истинным или ложным. Как и оператор if-else, это еще один способ определения условных операторов. Тернарный оператор определяется в одной строке. Оператор if-else и тернарный оператор возвращают аналогичный результат. Тернарный оператор был представлен в Python версии 2.5. В этой статье подробно объясняется тернарный оператор Python с примерами.

 

Синтаксис

Давайте сначала обсудим синтаксис тернарного оператора Python. Синтаксис следующий:

[on_true] if [expression or condition] else [on_false]

При использовании тернарного оператора сначала мы пишем имя переменной, значение которой должно проверяться в условии. Оператор on_flase выполняется, когда данное условие не выполняется.

 

Примеры

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

#обьявление переменной a num1

num1=5

#обьявление переменной a num2

num2=10

#использование тернарного оператора для проверки наибольшего значения

result= num1 if num1>num2 else num2

print("The highest value is: ",result)

 

Тот же пример можно реализовать с помощью оператора if-else. Тернарный оператор выполняет задание в одной строке; однако оператор if-else использует несколько строк кода для одной и той же задачи. Давайте реализуем приведенный выше пример с помощью оператора if-else.

#объявление переменной num1

num1=5

#объявление переменной num2

num2=10

#реализация оператора if else

if(num1>num2):

result=num1

else:

result=num2

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

print("Самое высокое значение-это: ",result)

 

Также может быть реализован вложенный тернарный оператор. Давайте реализуем вложенный тернарный оператор в нашем скрипте Python.

#объявление переменной num1

num1=5

#объявление переменной num2

num2=10

#Реализация вложенного тернарного оператора

print ("num1 больше, чем num2" if num1>num2 else "num1 меньше, чем num2"

if num1==num2 else "Оба числа не равны")

 

Способы реализации тернарного оператора Python

Есть разные способы реализации тернарного оператора Python. Мы можем реализовать тернарный оператор Python, используя кортежи, словари и лямбда-функции. Давайте реализуем тернарный оператор с помощью кортежа. Мы создали две числовые переменные num1 и num2 и сохранили случайные числа в этих переменных. Случайные числа в Python создаются с помощью функции random(). Функция random() присутствует в модуле random.

import random

num1=random.random()

num2=random.random()

#реализация тернарного оператора

print((num1, num2) [num1>num2])

 

По выходным данным мы не можем определить, что это значение num1 или num2. Давайте реализуем приведенный выше код следующим образом:

import random

num1=random.random()

num2=random.random()

print((f"num1:{num1}", f"num2:{num2}") [num1>num2])

 

Хорошо! Теперь давайте реализуем тернарный оператор, используя словарь Python и лямбда-функцию.

import random

num1=random.random()

num2=random.random()

#использование словаря Python

print("Использование словаря Python:")

print(({True:f"num1:{num1}",False:f"num2:{num2}"}[num1>num2]))

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

print("Использование лямбда-функции:")

print((lambda: f"num1:{num1}", lambda: f"num2:{num2}")[num1>num2]())

 

Вывод

Тернарные операторы — это встроенные в Python операторы, которые оценивают данное условие. Это работает как оператор if-else. В этой статье подробно объясняется тернарный оператор Python.



2020-11-30T11:55:12
Python

Ужесточение безопасности для серверов Linux

Как и в случае с любой другой операционной системой, безопасность сетевого оборудования Linux является главной задачей. В этой статье мы дадим несколько рекомендаций о том, как повысить уровень безопасности ваших серверов Linux. Снимки экрана и примеры синтаксиса относятся к системам, в которых работают дистрибутивы Linux на основе Kali Linux, CentOS, RHEL, Ubuntu и Debian.

 

Шифрование данных для большей информационной безопасности

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

Передача файлов должна выполняться по защищенным протоколам, таким как scp, ssh, rsync или sftp. OpenSSH, SFTP или FTPS (FTP через SSL) добавляют Secure Sockets Layer (SSL) или шифрование TLS к стандартному протоколу передачи файлов (FTP). Используя специальные инструменты sshfs и fuse, также возможно смонтировать файловую систему удаленного сервера или ваш собственный безопасный домашний каталог.

Вы можете использовать следующий синтаксис для удаления устаревших служб передачи файлов, таких как NIS или rsh, из вашей системы:

# yum erase xinetd ypserv tftp-server telnet-server rsh-server

 

На серверах Linux на базе Debian или Ubuntu для устранения небезопасных сервисов можно использовать команды apt-get или apt:

$ sudo apt-get –purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

 

Для данных в состоянии покоя большинство дистрибутивов Linux позволяют зашифровать жесткие диски перед установкой. В Kali Linux выберите параметры «Управляемое использование всего диска» и «Настроить зашифрованный LVM», чтобы настроить диспетчер зашифрованных логических томов.

 

Изолировать сетевые службы

Чтобы ограничить количество других служб, которые могут быть скомпрометированы из-за нарушения безопасности, администраторы Linux должны запускать разные сетевые службы на отдельных серверах или экземплярах виртуальных машин (ВМ). Программное обеспечение для виртуализации, такое как OpenVZ, может быть установлено отдельно в дистрибутивах RHEL и CentOS Linux.

Чтобы еще больше защитить вашу хост-сеть в Kali Linux, вы можете предпринять следующие шаги:

  • Отключите переадресацию IP, установив для параметра ipv4.ip_forward значение 0 в «/etc/sysctl.conf»
  • Отключите переадресацию пакетов при отправке, установив для параметров ipv4.conf.all.send_redirects и net.ipv4.conf.default.send_redirects значение 0 в «/etc/sysctl.conf»
  • Отключите прием перенаправления ICMP, установив для параметров ipv4.conf.all.accept_redirects и net.ipv4.conf.default.accept_redirects значение 0 в «/etc/sysctl.conf»
  • Включите защиту сообщений об ошибках, установив для параметра ipv4.icmp_ignore_bogus_error_responses значение 1 в «/etc/sysctl.conf»

 

Поддерживайте удобство установки программного обеспечения и обновляйте его

Чем больше приложений или веб-служб вы установили, тем выше вероятность стать жертвой уязвимостей программного обеспечения или злоумышленниками, которые могут скомпрометировать ваши программы. Поэтому ограничивайте количество установок, которые вы добавляете в основную систему, только теми приложениями, которые строго необходимы. Команды apt-get и / или dpkg или специальный менеджер пакетов RPM, такой как yum, можно использовать для проверки всего установленного программного обеспечения в вашей системе, и они включают команды для удаления любых нежелательных пакетов или служб.

Вот пример синтаксиса с использованием dpkg и apt-get:

# dpkg –list

# dpkg –info packageName

# apt-get remove packageName

 

Также важно регулярно обновлять и исправлять программное обеспечение, чтобы устанавливать последние исправления безопасности и пользоваться новейшими инструментами и функциями ваших приложений. В системах Debian или Ubuntu Linux можно настроить автоматические обновления для вашего серверного программного обеспечения с помощью команд apt-get или apt:

$ sudo apt-get install unattended-updates apt-listchanges bsd-mailx

 

Используйте расширения безопасности Linux

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

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

  1. Disabled: защита неактивна.
  2. Permissive: выводит предупреждения при обнаружении проблем.
  3. Enforcing: применяется политика безопасности.

 

Запуск ядра MAC защищает сервер Linux от вредоносных или некорректных приложений, которые могут повредить или разрушить систему.

 

Установите надежную политику паролей

Вы можете использовать команды useradd или usermod для создания и поддержки учетных записей пользователей Linux. Как и в любой ИТ-среде, применяются стандартные критерии надежных паролей (восемь или более символов, сочетание букв, цифр и символов, регулярно меняющееся). Вы можете использовать команду изменения, чтобы настроить количество дней между сменой пароля и датой последнего изменения пароля.

Команда passwd может блокировать и разблокировать учетные записи:

# заблокировать аккаунт

passwd -l userName

# разблокировать аккаунт

passwd -u userName


 

Команда faillog отображает неудачные попытки входа в систему в виде записей журнала сбоев и позволяет администраторам устанавливать пределы ошибок входа в систему.

 

Использовать централизованную аутентификацию

Чтобы защититься от наличия устаревших учетных данных и забытых учетных записей в сети, используйте централизованную систему аутентификации. Такая служба, как OpenLDAP для клиентов и серверов, позволяет администраторам осуществлять централизованный контроль над учетными записями Linux или UNIX и данными аутентификации. Это также позволяет им синхронизировать данные аутентификации между серверами.

Kerberos выполняет аутентификацию в качестве доверенной сторонней службы аутентификации. Он использует политику «криптографического общего секрета», которая предполагает, что пакеты, проходящие по небезопасной сети, могут быть прочитаны, изменены и повторно вставлены. Удаленный вход в систему, удаленное копирование, безопасное межсистемное копирование файлов и другие задачи с высоким риском могут выполняться с использованием криптографии с симметричным ключом.

 

Обеспечьте соблюдение мер физической безопасности

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

Например, вы можете отключить загрузку серверов Linux с внешних устройств, таких как DVD-диски, компакт-диски или USB-накопители. Для этого вы можете установить пароли загрузчика BIOS и grub, чтобы другие пользователи не могли изменять и отменять настройки безопасности сервера. Вы также можете получить доступ к настройкам безопасности на странице администратора любого внутреннего веб-сервера на материнской плате Linux, чтобы изменить пароли и права администратора по умолчанию.



2020-11-30T11:16:56
Kali Linux

Как найти длину списка в Python

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

В этой статье показано, как определить длину списка.

len() Функция

Python имеет встроенную функцию len() которая возвращает длину заданного объекта. Объектом может быть список , кортеж, строка, словарь и т. Д.

Синтаксис функции len() следующий:

len(list)

Функция принимает только один аргумент. Возвращаемое значение — целое число, которое представляет собой количество элементов в списке.

Вот пример:

capitals = ['Tokyo', 'Sofia', 'London', 'Budapest']

list_len = len(capitals)

print("The list has {0} elements.".format(list_len))

The list has 4 elements.

Использование цикла

Другой способ узнать длину списка — использовать цикл for . Это работает путем установки счетчика и перебора всех элементов списка. На каждой итерации текущее значение переменной counter увеличивается на единицу.

Ниже приведен пример кода, который показывает, как найти количество элементов в заданном списке с помощью цикла for :

capitals = ['Tokyo', 'Sofia', 'London', 'Budapest']
counter = 0

for capital in capitals:
  counter = counter + 1

print("The list has {0} elements.".format(counter))

The list has 4 elements.

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

Выводы

Чтобы узнать длину списка в списке Python, используйте функцию len() .

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



2020-11-29T06:13:00
Python

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; он не основан на модели клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент. Читать