Одно из лучших преимуществ open source — возможность повторно использовать чужий код. Перепрофилирование кода помогает сэкономить время, обнаружить новые функциональные возможности и узнать другие стили программирования. Существует два основных способа повторного использования кода:
-
**Копирование и вставка фрагмента кода непосредственно в проект.** Если вы не знакомы с написанием кода, это самый быстрый способ начать повторное использовать код. -
**Импорт библиотеки в проект.** Хотя этот подход занимает некоторое время, чтобы узнать, это в конечном итоге проще и эффективнее. Это также базовый навык разработки программного обеспечения.
В этой статье мы узнаем оба варианта, проработав пример: повторное использование кода на Python, который вычисляет факториал числа.
Использование фрагментов кода других пользователей в проекте
При первом обучении коду вы можете начать с повторного использования путем копирования и вставки фрагментов кода других пользователей в проект. Это отличный способ сэкономить время, но перед копированием кода другого разработчика всегда следует выполнить несколько ключевых шагов.
1. Поиск и понимание фрагмента кода
Сначала необходимо найти и понять фрагмент кода, который требуется повторно использовать. В этом примере мы будем выбирать репозиторий new2code/python-factorial .
Во-первых, откройте****factorial_finder.pyкоторый реализует калькулятор с помощью цикла:
# Initialize the factorial result to 1
factorial = 1
# Initialize the input number to 6
number = 6
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
print(f"The factorial of {number} is {factorial}")
Затем, в строке меню вверху файла, нажмите , чтобы начать разговор с Copilot.

В окне чата спросите Copilot:
Explain this program.
Explain this program.
2. Общие сведения о лицензировании проекта
Прежде чем повторно использовать найденный код, необходимо понять его лицензирование. Лицензии определяют, как можно использовать код в проекте, включая возможность копирования, изменения и распространения этого кода.
Чтобы определить лицензию для new2code/python-factorial, найдите раздел "О" на главной странице репозитория. Там вы увидите, что репозиторий лицензирован в соответствии с лицензией MIT. Чтобы прочитать лицензию, нажмите «лицензия MIT».

Мы хотим скопировать весь factorial_finder.py файл, поэтому лицензия MIT указывает на то, что мы должны включить копию лицензии в собственный проект. В верхней части вашего файла на Python вставьте лицензию в качестве комментария.
Совет
Вы можете узнать, что разрешено другими общими лицензиями с помощью средства выбора лицензии .
3. Использование и изменение фрагментов кода
Теперь вы готовы вставить фрагмент кода в проект. Хотя иногда вы сможете использовать фрагменты кода по мере их использования, их часто нужно изменить для конкретного варианта использования. Давайте практикуем это сейчас!
Предположим, что мы хотим быстро вычислить факториалы 5, 7, 9 и 10. Вместо копирования и вставки всей программы для каждого числа можно переместить калькулятор в функцию , которая принимает число в качестве аргумента.
Используйте Copilot Chat для предложения и объяснения реализации. Вставьте текущий код в окно чата, а затем введите следующий запрос:
Wrap the Python code above in a function.
Wrap the Python code above in a function.
Copilot генерирует код, который выглядит примерно так:
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
С нашей новой функцией мы можем легко найти факториалы наших чисел, добавив следующий код в проект и запустив программу Python:
print(calculate_factorial(5)) print(calculate_factorial(7)) print(calculate_factorial(9)) print(calculate_factorial(10))
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
Поздравляем! Вы успешно нашли, поняли и изменили пример фрагмента кода.
Использование кода из библиотек в проекте
Теперь давайте узнаем, как использовать библиотеки, которые являются стандартной практикой для разработчиков. Библиотеки по сути являются коллекциями кода, написанного другими разработчиками для выполнения конкретных задач. Библиотеки можно импортировать в проект, чтобы использовать предварительно написанный код, экономя время и усилия.
В этом разделе мы продолжим работу с примером факториального калькулятора Python из предыдущего раздела. Для справки вот наш текущий код:
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
def calculate_factorial(number):
# Initialize the factorial result to 1
factorial = 1
# Loop from 1 to number (inclusive) and multiply factorial by each number
for i in range(1, number + 1):
factorial *= i
return factorial
print(calculate_factorial(5))
print(calculate_factorial(7))
print(calculate_factorial(9))
print(calculate_factorial(10))
1. Поиск библиотеки
После того как вы узнаете, какие функции нужно добавить в проект, можно найти библиотеку с соответствующим кодом. Copilot Chat Это простой способ поиска библиотек, так как можно использовать естественный язык, чтобы описать именно то, что вам нужно.
Поиск факториала является довольно распространенной функцией, и есть хороший шанс, что кто-то включил эту функцию в существующую библиотеку. Откройте Copilot Chat, затем спросите:
Is there a Python library with a function for calculating a factorial?
Is there a Python library with a function for calculating a factorial?
Copilot скажет нам, что [`math`](https://docs.python.org/3/library/math.html) факториальная функция включена в модуль из стандартной библиотеки Python.
2. Приоритет безопасности в проекте
При добавлении библиотеки или модуля в проект вы создадите то, что называется зависимостью****. Зависимости — это предварительно написанные пакеты кода, которые проект использует для правильной работы. Если они не тщательно написаны или сохранены, они могут привести к уязвимостям безопасности для вашей работы.
К счастью, есть несколько шагов, которые можно предпринять для лучшей защиты проекта. Давайте попрактим их сейчас.
Использование популярных библиотек
Популярные библиотеки, скорее всего, будут защищены, так как они активно поддерживаются и используются многими разработчиками. Одним хорошим маркером популярности является количество звезд , которые имеет репозиторий. Если вы не можете найти GitHub репозиторий для зависимости, вы можете попросить Copilot помощи.
Откройте Copilot Chat, затем спросите:
Find the GitHub repository containing the code for the math module in Python.
Find the GitHub repository containing the code for the math module in Python.
Copilot скажет, что `math` модуль определен в [`python/cpython`](https://github.com/python/cpython), где более 64 000 звёзд.
Поддержка Dependabot alerts вашего проекта
При включении они Dependabot alerts автоматически генерируются при Dependabot обнаружении проблем с безопасностью в зависимостях, что помогает быстро исправить уязвимости. Dependabot доступна бесплатно во всех репозиториях с открытым исходным кодом GitHub .
Включите Dependabot alerts свой репозиторий сейчас. Нажмите на Security and quality вкладку репозитория GitHub вашего проекта. Далее Dependabot alertsнажмите Включить Dependabot alerts. Вы можете получить Dependabot alerts доступ через Dependabot вкладку боковой панели.
3. Реализация кода из библиотеки
Теперь вы готовы импортировать библиотеку в проект, а затем использовать его содержимое в коде. Вы можете прочитать документацию библиотеки, чтобы научиться делать это самостоятельно, или попросить Copilot предложить и объяснить реализацию.
Откройте Copilot Chat, затем спросите:
How do I use the factorial function of the math module in my Python project?
How do I use the factorial function of the math module in my Python project?
Copilot Затем предложу версию следующего кода:
import math
# Calculate the factorial of a number
number = 5
result = math.factorial(number)
print(f"The factorial of {number} is {result}")
import math
# Calculate the factorial of a number
number = 5
result = math.factorial(number)
print(f"The factorial of {number} is {result}")
После замены существующего кода в проекте приведенной выше реализацией вы успешно использовали код из библиотеки в примере проекта!
Общий доступ к работе
В этом руководстве вы узнали, как безопасно использовать код других людей в собственной работе. Чтобы отпраздновать, поделитесь тем, как вы перепрофилировали код и создали пример проекта в нашем сообществе обсуждения.
Дополнительные материалы
-
[AUTOTITLE](/get-started/learning-to-code/finding-and-understanding-example-code)