Одно из лучших преимуществ 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 license.

Мы хотим скопировать весь factorial_finder.py файл, поэтому лицензия MIT указывает на то, что мы должны включить копию лицензии в собственный проект. В верхней части вашего файла на Python вставьте лицензию в качестве комментария.
Совет
Вы можете узнать, что разрешено другими общими лицензиями с помощью средства выбора лицензии .
3. Использование и изменение фрагментов кода
Теперь вы готовы вставить фрагмент кода в проект. Хотя иногда вы сможете использовать фрагменты кода по мере их использования, их часто нужно изменить для конкретного варианта использования. Давайте практикуем это сейчас!
Предположим, что мы хотим быстро вычислить факториалы 5, 7, 9 и 10. Вместо копирования и вставки всей программы для каждого числа можно переместить калькулятор в функцию , которая принимает число в качестве аргумента.
Используйте Копилот Чат , чтобы предложить и объяснить реализацию. Вставьте текущий код в окно чата, а затем введите следующий запрос:
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. Поиск библиотеки
После того как вы узнаете, какие функции нужно добавить в проект, можно найти библиотеку с соответствующим кодом. Копилот Чат — это простой способ поиска библиотек, так как вы можете использовать естественный язык, чтобы точно описать то, что вы ищете.
Поиск факториала является довольно распространенной функцией, и есть хороший шанс, что кто-то включил эту функцию в существующую библиотеку. Откройте Копилот Чат, а затем попросите:
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 из стандартной библиотеки Python.
2. Приоритет безопасности в проекте
При добавлении библиотеки или модуля в проект вы создадите то, что называется зависимостью****. Зависимости — это предварительно написанные пакеты кода, которые проект использует для правильной работы. Если они не тщательно написаны или сохранены, они могут привести к уязвимостям безопасности для вашей работы.
К счастью, есть несколько шагов, которые можно предпринять для лучшей защиты проекта. Давайте попрактим их сейчас.
Использование популярных библиотек
Популярные библиотеки, скорее всего, будут защищены, так как они активно поддерживаются и используются многими разработчиками. Одним хорошим маркером популярности является количество звезд , которые имеет репозиторий. Если вы не можете найти репозиторий GitHub для зависимости, вы можете попросить Copilot для справки.
Откройте Копилот Чат, а затем попросите:
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, который имеет более 64 000 звезд.
Включение Dependabot alerts для проекта
При включении Dependabot alerts автоматически создаются, когда Dependabot обнаруживает проблему безопасности в зависимостях, помогая быстро устранять уязвимости. Dependabot доступен для free на всех репозиториях open source GitHub.
Включите Dependabot alerts для репозитория. Перейдите на вкладку "Безопасность " для репозитория переменных данных проекта.product.github %} . Рядом с Dependabot alerts, нажмите кнопку "ВключитьDependabot alerts". Доступ к Dependabot alerts можно получить на вкладке Dependabot боковой панели.

3. Реализация кода из библиотеки
Теперь вы готовы импортировать библиотеку в проект, а затем использовать его содержимое в коде. Вы можете ознакомиться с документацией по библиотеке, чтобы узнать, как это сделать самостоятельно, или попросить Copilot предложить и объяснить реализацию.
Откройте Копилот Чат, а затем попросите:
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)