Рубрики
Без рубрики

Как быть ленивым, привело меня к публикации моего первого пакета Python

В индустрии программного обеспечения есть обычное высказывание, которое идет как: я хочу t … Tagged с Python, Pythonpackages, PYPI, OpenSource.

В индустрии программного обеспечения есть общее высказывание, которое идет:

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

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

Я не знаю, будет ли мистер Гейтс когда -нибудь нанять меня (подмигивание), но я должен признать, что наличие такого роста время от времени привело меня к созданию интересных и экономии времени/сценариев/обходных путей.

Спасибо, Ларри:)

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

Этот шаблон заключался в том, что при вводе функции 1) мы регистрируем это событие, обычно для отладки и 2) несколько раз нам нужно справиться с потенциально поднятым исключением, иногда тривиальным образом, как ниже.

import os

try:

os.remove(a_file)

except:

print('exception raised')

И, как и во всех ‘ленивый’ Программисты на этой прекрасной планете, я не фанат кода шаблона.

Вот как я заставил себя (ленивые люди заставляют себя?) Найти Удобный решение. Что, кстати, тоже имеет ленивое имя: Catslog, Как несколько кошек вдохновили много мемов на лень.

Технические вещи

Решение включает в себя фантастическую особенность декораторов. Мне так нравится, что вместо фильмов я читаю код с декораторами (и различными другими функциями Python)

Извините, это была очень плохая шутка

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

Но если вы … ленивый (без каламбура) и не хотите тратить время на это, достаточно знать, что:

Декоратор – это функция, которая расширяет другую функцию (давайте назовем ее Foo) и заменяет оригинальную ссылку Foo на расширенную.

Немного похоже на пример ниже:

def foo():
 # Various operations going on

foo = my_decorator(foo)

Вернемся к моей пакете, основной логики можно увидеть ниже:

from functools import wraps

def catslog(f):
 """Given a function f, run it, log the execution and
 handle any potential exceptions"""
[@wraps](http://twitter.com/wraps)(f)
 def wrapped(*args, **kwargs):
 """The extended version of the function f"""
 try:
 func_name = f.__name__
 print('Executing function {} with args: {} and kwargs: {}'
 .format(func_name, args, kwargs))
 f(*args, **kwargs)
 except Exception as e:
 print("""An error occurred while executing function "{}".
 The error is {}""".format(func_name, str(e)))
 return wrapped

Это все. Действительно ленивое решение, чтобы пережить мою лень.

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

Код можно использовать как:

# First import the package
from catslog import catslog

# Then, decorate a target function
@catslog
def cats_me_if_you_can(*args, **kwargs):
 # Moar code

Разве у вас нет других, чтобы делать в своей жизни, Периклис?

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

Это все люди

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

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

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

Оригинал: “https://dev.to/perigk/how-being-lazy-led-me-to-publicize-my-first-python-package-36di”