{"meta":{"title":"Повторное использовать код других пользователей в проектах","intro":"Увеличьте эффективность написания кода и знания, интегрируя существующий код в проекты.","product":"Начало работы","breadcrumbs":[{"href":"/ru/get-started","title":"Начало работы"},{"href":"/ru/get-started/learning-to-code","title":"Узнайте, как кодировать"},{"href":"/ru/get-started/learning-to-code/reusing-other-peoples-code-in-your-projects","title":"Повторное использование кода людей"}],"documentType":"article"},"body":"# Повторное использовать код других пользователей в проектах\n\nУвеличьте эффективность написания кода и знания, интегрируя существующий код в проекты.\n\nОдно из лучших преимуществ open source — возможность повторно использовать чужий код. Перепрофилирование кода помогает сэкономить время, обнаружить новые функциональные возможности и узнать другие стили программирования. Существует два основных способа повторного использования кода:\n\n* **Копирование и вставка фрагмента кода непосредственно в проект.** Если вы не знакомы с написанием кода, это самый быстрый способ начать повторное использовать код.\n* **Импорт библиотеки в проект.** Хотя этот подход занимает некоторое время, чтобы узнать, это в конечном итоге проще и эффективнее. Это также базовый навык разработки программного обеспечения.\n\nВ этой статье мы узнаем оба варианта, проработав пример: повторное использование кода на Python, который вычисляет факториал числа.\n\n## Использование фрагментов кода других пользователей в проекте\n\nПри первом обучении коду вы можете начать с повторного использования путем копирования и вставки фрагментов кода других пользователей в проект. Это отличный способ сэкономить время, но перед копированием кода другого разработчика всегда следует выполнить несколько ключевых шагов.\n\n### 1. Поиск и понимание фрагмента кода\n\nСначала необходимо найти и понять фрагмент кода, который требуется повторно использовать. В этом примере мы будем выбирать репозиторий [`new2code/python-factorial`](https://github.com/new2code/python-factorial) .\n\nВо-первых, откройте\\*\\*\\*\\*`factorial_finder.py`который реализует калькулятор с помощью цикла:\n\n```python\n# Initialize the factorial result to 1\nfactorial = 1\n\n# Initialize the input number to 6\nnumber = 6\n\n# Loop from 1 to number (inclusive) and multiply factorial by each number\nfor i in range(1, number + 1):\n    factorial *= i\n\nprint(f\"The factorial of {number} is {factorial}\")\n```\n\nЗатем, в строке меню вверху файла, нажмите <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-copilot\" aria-label=\"Ask Copilot about this file\" role=\"img\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"></path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"></path></svg> , чтобы начать разговор с Copilot.\n\n![Снимок экрана: кнопка Copilot, описанная в темно-оранжевый цвет в верхней части представления файла.](/assets/images/help/copilot/factorial-finder-copilot-button.png)\n\nВ окне чата спросите Copilot:\n\n```text copy\nExplain this program.\n```\n\n### 2. Общие сведения о лицензировании проекта\n\nПрежде чем повторно использовать найденный код, необходимо понять его лицензирование. Лицензии определяют, как можно использовать код в проекте, включая возможность копирования, изменения и распространения этого кода.\n\nЧтобы определить лицензию для [new2code/python-factorial](https://github.com/new2code/python-factorial), найдите раздел \"О\" на главной странице репозитория. Там вы увидите, что репозиторий лицензирован в соответствии с лицензией MIT. Чтобы прочитать лицензию, нажмите <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-law\" aria-label=\"law\" role=\"img\"><path d=\"M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z\"></path></svg> «**лицензия MIT**».\n\n![Снимок экрана: главная страница нового репозитория new2code/python-factorial. На правой боковой панели \"лицензия MIT\" описана в темно-оранжевый цвет.](/assets/images/help/repository/license-info-python-factorial.png)\n\nМы хотим скопировать весь `factorial_finder.py` файл, поэтому лицензия MIT указывает на то, что мы должны включить копию лицензии в собственный проект. В верхней части вашего файла на Python вставьте лицензию в качестве комментария.\n\n> \\[!TIP] Вы можете узнать, что разрешено другими общими лицензиями с помощью [средства выбора лицензии](https://choosealicense.com/licenses/) .\n\n### 3. Использование и изменение фрагментов кода\n\nТеперь вы готовы вставить фрагмент кода в проект. Хотя иногда вы сможете использовать фрагменты кода по мере их использования, их часто нужно **изменить** для конкретного варианта использования. Давайте практикуем это сейчас!\n\nПредположим, что мы хотим быстро вычислить факториалы 5, 7, 9 и 10. Вместо копирования и вставки всей программы для каждого числа можно переместить калькулятор в **функцию** , которая принимает число в качестве аргумента.\n\nИспользуйте [Copilot Chat](https://github.com/copilot) для предложения и объяснения реализации. Вставьте текущий код в окно чата, а затем введите следующий запрос:\n\n```text copy\nWrap the Python code above in a function.\n```\n\nCopilot генерирует код, который выглядит примерно так:\n\n```python copy\ndef calculate_factorial(number):\n    # Initialize the factorial result to 1\n    factorial = 1\n\n    # Loop from 1 to number (inclusive) and multiply factorial by each number\n    for i in range(1, number + 1):\n        factorial *= i\n\n    return factorial\n```\n\nС нашей новой функцией мы можем легко найти факториалы наших чисел, добавив следующий код в проект и запустив программу Python:\n\n```python copy\nprint(calculate_factorial(5))\nprint(calculate_factorial(7))\nprint(calculate_factorial(9))\nprint(calculate_factorial(10))\n```\n\nПоздравляем! Вы успешно нашли, поняли и изменили пример фрагмента кода.\n\n## Использование кода из библиотек в проекте\n\nТеперь давайте узнаем, как использовать библиотеки, которые являются **стандартной практикой** для разработчиков. Библиотеки по сути являются коллекциями кода, написанного другими разработчиками для выполнения конкретных задач. Библиотеки можно импортировать в проект, чтобы использовать предварительно написанный код, экономя время и усилия.\n\nВ этом разделе мы продолжим работу с примером факториального калькулятора Python из предыдущего раздела. Для справки вот наш текущий код:\n\n```python copy\ndef calculate_factorial(number):\n    # Initialize the factorial result to 1\n    factorial = 1\n\n    # Loop from 1 to number (inclusive) and multiply factorial by each number\n    for i in range(1, number + 1):\n        factorial *= i\n\n    return factorial\n\nprint(calculate_factorial(5))\nprint(calculate_factorial(7))\nprint(calculate_factorial(9))\nprint(calculate_factorial(10))\n```\n\n### 1. Поиск библиотеки\n\nПосле того как вы узнаете, какие функции нужно добавить в проект, можно найти библиотеку с соответствующим кодом.\nCopilot Chat Это простой способ поиска библиотек, так как можно использовать естественный язык, чтобы описать именно то, что вам нужно.\n\nПоиск факториала является довольно распространенной функцией, и есть хороший шанс, что кто-то включил эту функцию в существующую библиотеку. Откройте [Copilot Chat](https://github.com/copilot), затем спросите:\n\n```text copy\nIs there a Python library with a function for calculating a factorial?\n```\n\nCopilot скажет нам, что [`math`](https://docs.python.org/3/library/math.html) факториальная функция включена в модуль из стандартной библиотеки Python.\n\n### 2. Приоритет безопасности в проекте\n\nПри добавлении библиотеки или модуля в проект вы создадите то, что называется зависимостью\\*\\*\\*\\*. Зависимости — это предварительно написанные пакеты кода, которые проект использует для правильной работы. Если они не тщательно написаны или сохранены, они могут привести к уязвимостям безопасности для вашей работы.\n\nК счастью, есть несколько шагов, которые можно предпринять для лучшей защиты проекта. Давайте попрактим их сейчас.\n\n#### Использование популярных библиотек\n\nПопулярные библиотеки, скорее всего, будут защищены, так как они активно поддерживаются и используются многими разработчиками. Одним хорошим маркером популярности является количество **звезд** , которые имеет репозиторий. Если вы не можете найти GitHub репозиторий для зависимости, вы можете попросить Copilot помощи.\n\nОткройте [Copilot Chat](https://github.com/copilot), затем спросите:\n\n```text copy\nFind the GitHub repository containing the code for the math module in Python.\n```\n\nCopilot скажет, что `math` модуль определен в [`python/cpython`](https://github.com/python/cpython), где более 64 000 звёзд.\n\n#### Поддержка Dependabot alerts вашего проекта\n\nПри включении они Dependabot alerts автоматически генерируются при Dependabot обнаружении проблем с безопасностью в зависимостях, что помогает быстро исправить уязвимости.\nDependabot доступна **бесплатно** во всех репозиториях с открытым исходным кодом GitHub .\n\nВключите Dependabot alerts свой репозиторий сейчас. Нажмите на **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-shield\" aria-label=\"shield\" role=\"img\"><path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg> Security and quality** вкладку репозитория GitHub вашего проекта. Далее Dependabot alertsнажмите **Включить Dependabot alerts**. Вы можете получить Dependabot alerts доступ через **Dependabot** вкладку боковой панели.\n\n### 3. Реализация кода из библиотеки\n\nТеперь вы готовы импортировать библиотеку в проект, а затем использовать его содержимое в коде. Вы можете прочитать документацию библиотеки, чтобы научиться делать это самостоятельно, или попросить Copilot предложить и объяснить реализацию.\n\nОткройте [Copilot Chat](https://github.com/copilot), затем спросите:\n\n```text copy\nHow do I use the factorial function of the math module in my Python project?\n```\n\nCopilot Затем предложу версию следующего кода:\n\n```python copy\nimport math\n\n# Calculate the factorial of a number\nnumber = 5\nresult = math.factorial(number)\n\nprint(f\"The factorial of {number} is {result}\")\n```\n\nПосле замены существующего кода в проекте приведенной выше реализацией вы успешно использовали код из библиотеки в примере проекта!\n\n## Общий доступ к работе\n\nВ этом руководстве вы узнали, как безопасно использовать код других людей в собственной работе. Чтобы отпраздновать, поделитесь тем, как вы перепрофилировали код и создали пример проекта в нашем [сообществе обсуждения](https://github.com/orgs/community/discussions/153140).\n\n## Дополнительные материалы\n\n* [Поиск и понимание примера кода](/ru/get-started/learning-to-code/finding-and-understanding-example-code)"}