Архив метки: Python

Основные типы данных в Python 3. Логические значения

Сегодня мы рассмотрим ключевые типы данных — логические значения. Логические значения (и «логическия логика») являются важной концепцией в программировании, представляющей понятия «истина» и «ложь».

Готовы научиться использовать логические выражения в Python 3? Давайте начнем!

 

Логические переменные в Python 3

Booleans — это концепция, которая существует в каждом языке программирования. Логическое значение представляет идею «истина» или «ложь». Когда вы пишете программу, часто бывают ситуации, когда вы хотите выполнить другой код в разных ситуациях. Логические значения позволяют нашему коду делать именно это.

Вы можете объявить логическое значение в своем коде, используя ключевые слова True и False (обратите внимание на верхний регистр). Следующий код создаст два логических значения и назначит их переменным.

mullet_looks_good = False 

python_is_fun = True


 

Чаще всего логическое значение возвращается в результате какого-либо сравнения. В следующем примере кода будет храниться логическое значение переменной False в переменной have_same_name после использования оператора сравнения символа равенства ==.

my_name = "Wammu" 

your_name = "AndreyEx"



have_same_name = my_name == your_name


 

Логические значения

Логические значения используются в вашем коде, чтобы заставить его вести себя по-разному в зависимости от текущих условий в вашей программе. Вы можете использовать логические значения и сравнение в сочетании с ключевыми словами if, elif и else в качестве одного из средств для достижения этой цели.

my_age = 10



if my_age > = 50: 

  print(«Пятьдесят лет! Очень впечатляет.») 

elif my_age <= 3: 

  print(«Ой, просто ребенок.») 

else : 

  print(«Ах, очень хороший возраст»)


 

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

favorite_team =  "AndreyEx"



if not favorite_team = =  "AndreyEx": 

  print("неудачно. 

)else: 

  print("Да, AndreyEx!")

 

Более сложная логическая логика

Иногда вам нужно будет оценить несколько условий в вашей логической логике. Для этой цели вы будете сочетать andи orключевые слова. andКлючевое слово сравнивает два логических значения и возвращает , Trueесли оба они истинны. orКлючевое слово сравнивает два значения и возвращают , Trueесли какие — либо из утверждений верно.

Давайте посмотрим на пример. При этом используется inключевое слово, чтобы увидеть, находится ли строка в списке значений (мы рассмотрим списки в следующей статье).

favs = ["CentOS", "Ubuntu"]



if "Ubuntu" in favs and "CentOS" in favs:

  print("Это хорошие операционные системы!")

elif "Ubuntu" in favs or "CentOS" in favs:

  print("Ну очень сложно выбрать...")

else:

  print("Я выбрал что то другое.")

 

Завершение

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



2019-11-29T16:12:02
Python

4 совета по оптимизации производительности для более быстрого кода на Python

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

 

1. Подготовьте все настройки заранее.

Это здравый смысл. Подготовьте все настройки. Запустите ваш редактор Python заранее. Если вы пишете свои файлы локально, создайте виртуальную среду и активируйте ее. Наряду с этим, мы бы посоветовали еще одну вещь, которая может показаться немного противоречивой и нелогичной, а именно использовать TDD. Используйте этот инструмент тестирования. Мы обычно использую pytest и используем «pip» -d в виртуальной среде и начинаем писать небольшие тестовые сценарии. Мы обнаружили, что тестирование помогает в ясности мысли, которая помогает в написании более быстрых программ. Кроме того, это помогает в рефакторинге кода, чтобы сделать его быстрее. Мы вернемся к этому позже.

 

2. Получите код, работающий первым

У людей есть свои собственные стили кодирования. Используйте стиль кодирования, который вам наиболее удобен. Для первой итерации сделайте код работоспособным. Посмотрим, пройдет ли он все тестовые случаи. И вы можете перейти к следующему вопросу.

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

 

3. Советы по программированию на Python

Мы можем использовать некоторые конструкции кода pythonic, которые дают нам лучшую производительность. Давайте посмотрим на них ниже.

 

Строки:

Не используйте нижеприведенную конструкцию.

s = ""

for x in somelist:

s += some_function(x)

 

Вместо этого используйте это

slist = [some_function(el) for el in somelist]

s = "".join(slist)

 

Это связано с тем, что в Python str является неизменным, поэтому левая и правая строки должны быть скопированы в новую строку для каждой пары конкатенации.

 

Языковые конструкции:

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

def main():

for i in xrange(10**8):

pass



main()

 

Это лучше, чем

for i in xrange(10**8):

pass

 

Это из-за базовой реализации CPython. Короче говоря, хранить локальные переменные быстрее, чем глобальные.

Мы бы порекомендовали вам сохранить ваш процедурный код как можно меньше. Вы можете использовать следующий стандартный шаблон.

def solution(args):

# write the code

pass



def main():

# write the input logic to take the input from STDIN

Input_args = ""

solution(input_args)



If __name__ == "__main__":

main()

 

Используйте стандартную библиотеку:

Используйте как можно больше встроенных функций и стандартной библиотеки. Поэтому вместо этого:

newlist = []

for item in oldlist:

newlist.append(myfunc(item))

 

Использовать это:

newlist = map(myfunc, oldlist)

 

Существует также список выражений или генератор выражений.

newlist = [myfunc(item) for item in oldlist] # list expression

newlist = (myfunc(item) for item in oldlist) # generator expression

 

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

>> import itertools

>>> iter = itertools.permutations([1,2,3])

>>> list(iter)

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

 

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

 

Генераторы:

Генератор Python — это функция, которая возвращает итератор генератора (просто объект, который мы можем перебрать), вызывая yield. Когда функция генератора вызывает yield, «состояние» функции генератора останавливается; Значения всех переменных сохраняются, и следующая строка кода, которая должна быть выполнена, записывается до следующего вызова (). Генераторы — это отличные конструкции, позволяющие снизить как среднюю сложность времени, так и объем памяти кода, который вы написали. Просто посмотрите на следующий код для простых чисел.

def fib():

a, b = 0, 1

while 1:

yield a

a, b = b, a + b

 

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

 

4. Алгоритмы и структуры данных

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

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

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



2019-11-21T19:07:50
Python

Fibratus – инструмент для исследования и отслеживания ядра Windows

Fibratus – это инструмент, способный захватить большую часть активности ядра Windows – создание и завершение процесса / потока, переключение контекста, ввод-вывод файловой системы, реестр, сетевая активность, загрузка / выгрузка DLL и многое другое.

События ядра могут быть легко переданы ряду выходных приемников, таких как брокеры сообщений AMQP, кластеры Elasticsearch или стандартный поток вывода.

Вы можете использовать filaments  (легкие модули Python), чтобы расширить Fibratus своим собственным арсеналом инструментов и таким образом использовать всю мощь экосистемы Python.

Читать

Загрузка файлов с помощью Python

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

Транслитерация содержимого файла с Python

У меня есть похожая запись о транслитерации имён файлов. Здесь же будет транслитерировано само содержимое файлов.

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

Транслитерация имён файлов с Python

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

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

Итак, перед нами стоит задача группового переименования файлов. Например, нужно поменять имена всех файлов в директории. Хотим избавиться от пробелов — заменить их на нижние подчёркивания. Все кириллические буквы хотим поменять на латинские (на «транслит»). Читать