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

NodeJS против Python: сравнение, которое нужно знать

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

 

Python: плюсы, минусы и варианты использования

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

У Python одно из крупнейших сообществ, а это значит, что вы получите всю необходимую поддержку.

NodeJS против Python: сравнение, которое нужно знать

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

 

Python. Преимущества

Python имеет много преимуществ, которые облегчают разработку в разнообразных проектах, от стартапов до крупных корпоративных платформ. Вот некоторые из самых выдающихся:

 

Python сокращает время выхода на рынок

Python позволяет разработчикам выполнять работу с меньшим количеством строк кода, чем схожие объектно-ориентированные языки. Кроме того, большинству разработчиков также удобно переключаться между Java и Python (и поэтому вы видите, что они используются в тандеме). Python предлагает полное обслуживание, где ошибки могут быть устранены в течение нескольких минут. С его компактным синтаксисом легко работать, а также легко отлаживать

Благодаря методологии быстрой разработки Python, которая позволяет вам поддерживать несколько итераций одновременно, и принципу DRY (не повторяйте себя), который означает, что вы можете повторно использовать части кода.

 

Синтаксис Python

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

 

Python имеет широкий спектр инструментов разработки

Sublime Text, популярный редактор кода, обеспечивает поддержку кодирования Python, а также дополнительные функции редактирования и расширения синтаксиса. Мощные веб-инфраструктуры упрощают процесс и позволяют разработчикам сосредоточиться на логике ваших приложений. Одним из таких примеров является Django, который представляет собой полнофункциональную инфраструктуру для разработки всевозможных приложений, оптимизируя время, необходимое для завершения проекта.

 

Python имеет большое сообщество

Сравнивая Python и Node.js, Python является более зрелым языком с открытым исходным кодом и имеет одно из крупнейших пользовательских сообществ. В нем невероятное количество участников, от младших до опытных. Это означает, по крайней мере, две вещи: легко найти разработчиков, и вы получите активное, поддерживающее сообщество, которое стремится делиться решениями и улучшать язык.

Уже более 25 лет разработчики имеют доступ к высоким функциональным возможностям и обширной поддержке библиотек. Python также предлагает несколько расширенных веб-API, которые включают в себя следующее для серверной части:

  • Django
  • Flask
  • Pyramids

В качестве внешнего интерфейса вы можете использовать API-интерфейсы Tkinter/PySide. Он также очень переносим, ​​поскольку его можно использовать как для мобильных устройств, так и для Интернета, с широким разнообразием веб-сценариев и операций по соскобам.

 

Python. Минусы

Python отлично подходит для большинства типов проектов, но у него есть пара ограничений:

 

Python однопоточный

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

 

Не подходит для мобильных компьютеров

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

 

NodeJS: плюсы, минусы и варианты использования NodeJS

Node.js — это среда, которая позволяет использовать JavaScript как для внутренней, так и для внешней разработки, что решает некоторые проблемы совместимости. Он был запущен в 2009 году (не так давно) и неуклонно набирает популярность.

NodeJS против Python: сравнение, которое нужно знать

 

Node.js. Плюсы

Сравнивая Python и Node.js для веб-разработки, Node может похвастаться несколькими преимуществами:

  • Node.js обеспечивает высокую производительность.

    Сравнивая скорость, вы обнаружите, что первая быстрее. Node.js основан на движке Google V8, что делает его пригодным для разработки чат-ботов и аналогичных приложений реального времени.

 

Node.js. Минусы

  • Node.js требует четкой архитектуры.

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

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

    В отличие от Python, который имеет исчерпывающую и актуальную документацию, документация Node.js отсутствует. Плюс, нет никаких основных библиотек и инструментов. Есть слишком много альтернатив, поэтому не всегда понятно, какой из них выбрать.

 

Вывод

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



2019-12-08T21:11:17
Python

Python: __name__ == «__main__»

Вы видите это везде.

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

if __name__ == '__main__':

  # do something

 

Он вездесущий.

Фактически, именно столько раз этот фрагмент кода появляется в Github!

Python: __name__ == «__main__»

18 миллионов + раз!

Итак, без дальнейших церемоний, давайте изучим, что именно делает этот фрагмент кода.

 

Что такое __name__?

__name__ — это просто встроенная переменная в Python, которая оценивает имя текущего модуля.

Чтобы полностью понять, что такое __name__ и как оно используется, давайте рассмотрим ряд примеров.

 

Пример 1

Давайте создадим простой скрипт Python в файле с именем test.py

# test.py

print("__name__ в test.py имеет значение " + __name__)

 

Эта строка будет выводить переменную __name__ на экране, чтобы мы могли ее изучить.

Давайте запустим этот скрипт из терминала и посмотрим, что мы получим.

$ python test.py

 

Вот вывод, который вы увидите на экране.

$ python3 test.py

__name__ в test.py имеет значение __main__

 

Из этого можно сделать вывод, что в этом примере переменной __name__ было присвоено строковое значение __main__

Теперь давайте посмотрим на немного другой пример.

 

Пример 2

Давайте создадим новый файл test2.py  в том же каталоге, что и test.py

В этом новом файле давайте импортируем test, чтобы мы могли проверить переменную __name__ в test.py, а также напечатаем переменную __name__ в test2.py

# test2.py

import test



print("__name__ in test2.py имеет значение " + __name__)

 

Если вы запустите скрипт test2.py из терминала, это то, что вы увидите на своем экране.

$ python3 test2.py

__name__ in test.py имеет значение test

__name__ in test2.py имеет значение __main__

 

Хм, интересно, так что же происходит?

По сути, происходит то, что  __name__   устанавливается на уровне модуля.

Устанавливается на  имя  модуля. Другими словами, для каждого модуля в вашем коде, __name__ будет установлен на это имя модуля.

А для точки входа выполнения, основного сценария Python, переменная __name__будет установлена ​​в __main__

Это круто и все, но как эта специальная переменная используется на практике?

 

Как __name__ используется в реальных приложениях?

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

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

Вот что должен делать этот модуль.

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

Но если вы вместо этого импортируете его, он может предоставить вам функцию hello(), где вы можете контролировать, кого приветствовать.

# hello.py

def hello(name):

  print(f"Привет, {name}!")



if __name__ == '__main__':

  hello('AndreyEx')

 

Теперь давайте создадим основной скрипт main.py, который будет импортировать модуль hello.

# main.py

from hello import hello



hello('Destroyer')

 

Как вы думаете, что произойдет, если мы напрямую запустим hello.py ?

Мы просто получаем Привет, AndreyEx! на экране, так как условие if внутри модуля hello будет выполнено!

$ python3 hello.py

Привет, AndreyEx!

 

Как насчет того, чтобы вместо этого мы выполним main.py?

Теперь мы получим только Привет, AndreyEx! напечатано на экране.

$ python3 main.py

Привет, Destroyer!

 

Но что, если мы не включили условие if __name__ == ‘main’ в модуль hello ?

Если вы не включили условие if в свой модуль, вы получите этот нежелательный результат при запуске основного скрипта.

$ python3 main.py

Привет, AndreyEx!

Привет, Destroyer!

 



2019-12-06T19:10:46
Python

Основные типы данных в Python 3: Строки

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

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

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

 

Строки в Python 3

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

my_name = "AndreyEx Destroyer"


 

Строки являются » неизменяемыми»

В Python строки считаются неизменяемыми — после их создания они не могут быть изменены. Однако вы можете использовать различные методы для создания новых строк из существующих строк. Этот тип работы в программировании называется манипулированием строками. Некоторые веб-разработчики шутят, что, в конце концов, их работа сводит воедино все — и это не далеко от истины!

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

 

Общая задача — объединить строки

Объединение строк — очень распространенная задача. В Python 3 вы можете использовать оператор + для этой цели. Вы можете использовать + оператор несколько раз, чтобы объединить несколько строк.

first_name = "AndreyEx" 

last_name = "Destriyer"



full_name = first_name + "" + last_name


 

Общая задача — вставка данных в строки

Другая распространенная задача со строками — вставка данных в определенное место в строке. В программировании мы называем эту строку интерполяцией . Python 3 предоставляет удобный инструмент для этого, называемый «f» строк . «F» в «f strings» обозначает формат — вы можете вставлять другие данные из вашей программы в строку, когда вы ее определяете, вместо того, чтобы выполнять сложную конкатенацию строк, как показано ранее.

Вот пример создания отформатированной строки — обратите внимание, что буква f включается непосредственно перед первой двойной кавычкой при определении переменной message. Если вы хотите вставить данные из вашей программы в строку, вы можете включить их между двумя «фигурными скобками» — символами {}.

first_name = "AndreyEx" 

last_name = "Destroyer" 

age = 41

message = f "Меня зовут {first_name} {last_name}, и мне {age} лет."

print(message)

 

Распространенная задача — использование встроенных строковых методов для работы со строками

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

Пример 1: преобразовать строку во все заглавные буквы, используя метод upper.

example_string = "Я уже достаточно гениален?" 

example_string = example_string . upper() 

print(example_string) # печатает "Я УЖЕ ДОСТАТОЧНО ГЕНИАЛЕН?"


 

Пример 2: Заменить все вхождения слова Ubuntu на CentOS.

example_string = "Что у нас за система? Не ужели Ubuntu" 

example_string = example_string . replace ( "Ubuntu" ,  "CentOS" ) 

print(example_string) # "печатает Что у нас за система? Неужели Ubuntu"


 

Пример 3: Разбить строку через запятую в список строк.

example_string =  "Ubuntu,CuntOS,OpenSUSE"

groceries =  example_string.split( ' ,') 



# Код ниже печатает:

# Ubuntu

# CuntOS

# OpenSUSE

for item in groceries: 

    print( item)

 

Проверьте наши дополнительные строки в документации по Python 3!

 

Конвертация

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

Пример 1. Преобразование числа в строку с помощью функции str.

example_number = 42

converted = str(example_number)

message = "ubuntu forever " + converted

Пример 2. Преобразование строки в целое число (целое число) с помощью int.

example_string = "2" 

convert = int (example_string) 

message = f "Два плюс два равно {преобразовано + 2}"


 

Завершение

Текстовые строки — одна из самых распространенных частей данных, с которыми вы будете работать в программировании. Надеюсь, вы немного узнали о том, как работать со строками в Python 3!



2019-12-02T18:52:22
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.

Читать