По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Подключаем точку доступа к сети с DHCP сервером, узнаем IP адрес и подключаемся к ней по SSH. Логин/пароль: ubnt/ubnt. Далее запускаем обновление прошивки на точке доступа. Для этого переходим по ссылке https://www.ui.com/download/unifi и выбираем модель оборудования. В разделе Firmware нажимаем на значок закачки, принимаем условия лицензии и нажимаем на Copy url: После этого в терминале вводим команду: upgrade https://dl.ui.com/unifi/firmware/U7PG2/4.3.20.11298/BZ.qca956x.v4.3.20.11298.200704.1347.bin Данная команда скачает прошивку и запустит обновление. Шаг №2 Поднимаем контроллер на виртуальной машине. В качестве ОС выбираем Linux Debian 9, и устанавливаем Ubuntu 18.04 Server. Рекомендую на DNS сервере создать A запись для контроллера. Что-то вроде unifics.domain.com. Даем доступ серверу в Интернет. Подключаемся к серверу и вводим следующие команды: sudo apt-get update && sudo apt-get install ca-certificates apt-transport-https echo 'deb https://www.ui.com/downloads/unifi/debian stable ubiquiti' | sudo tee /etc/apt/sources.list.d/100-ubnt-unifi.list wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add - echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list sudo apt-get update sudo wget -O /etc/apt/trusted.gpg.d/unifi-repo.gpg https://dl.ui.com/unifi/unifi-repo.gpg sudo apt-get update && sudo apt-get install unifi –y Контроллер установлен. Состояние контроллера можно проверить следующей командой: sudo service unifi status Остановка, запуск и перезапуск: sudo service unifi status sudo service unifi start sudo service unifi restart Шаг №3 Теперь нужно подружить точки доступа с нашим контроллером. Для этого в Google Chrome скачиваем расширение Uni-Fi Discovery Tool. Чтобы утилита определила подключенные к сети точки доступа (Access Point AP), компьютер с запущенной утилитой и AP должны находиться в одной подсети. Запускаем утилиту, нажимаем на кнопочку UniFi Family. Утилита найдет все устройства UniFi в сети. Нажимаем кнопку Action. Внимание, с первого раза кнопка может на отработать, так как там работает Java, поэтому стоит подождать. Далее в открывшемся окне в строке Inform URL вбиваем доменное имя нашего контроллера. Все остальное (порт, протокол) не меняем! Шаг №4 Переходим на https://account.ui.com/register и регистрируемся в Облаке Uni-Fi. Это необходимо для удаленного управления устройствами с любой точки мира. Шаг №5 Затем в браузере - рекомендуется Google Сhrome, открываем панель управления нашего новоиспеченного контроллера: https://unifics.domain.com:8443. У нас запросит название нашего сайта, то бишь Wi-Fi домена. Нажимаем Next. Вводим логин и пароль от облачного аккаунта, который зарегистрировали на предыдущем шаге: Нажимаем Next. Контроллер отобразит точки доступа в сети, благодаря действия, которые проделали на третьем этапе (никакой магии). Нажимаем Next. Задаем название (SSID) и пароль Wi-Fi сети. Всё это можно будет поменять. Переключатель Combine 2.4 GHz и 5 GHz Wi-Fi Network Names into one не трогаем. Нажимаем Next. Выбираем часовой пояс, страну и нажимаем Finish. Контроллер начнёт применять изменения на точку доступа. Шаг №6 Переходим в настройки кликнув на значок шестеренки в левом нижнем углу панели управления контроллером. В строке Controller Hostname/IP прописываем доменное имя нашего контроллера и обязательно ставим галочку перед Override inform host with controller hostname/IP. Шаг №7 При добавлении новой точки доступа выполняем первый и третий шаг для каждого устройства. Затем среди доступных точек доступа появится AP со статусом Pending. Выбираем устройство и нажимаем Adopt. Контроллер применит все настройки на новое устройство.
img
В этой статье расскажем о различных концепциях и стратегиях, которые реализуют многие организации для защиты своих активов как от внутренних, так и от внешних киберугроз. Вы узнаете об этих трех основных принципах, и о том, как они используются в различных организациях. Кроме того, вы узнаете о ключевых терминах безопасности и моделях контроля доступа. При подключении устройства к сети и Интернету, организации открывают двери для хакеров, которые могут проникнуть в их сеть и нанести ущерб. Есть много организаций, которые используют только брандмауэр в своей сети и поэтому думают, что и их внутренняя сеть, и пользователи защищены от угроз в Интернете. Брандмауэр, как единственное сетевое устройство, развернутое между внутренней сетью и Интернетом, — это просто первый уровень безопасности для всей организации. Многие люди задаются вопросом: а не достаточно ли брандмауэра для фильтрации вредоносного входящего и исходящего трафика? Много лет назад ответ был бы однозначно «да». Однако, поскольку хакеры всегда ищут новые стратегии для проникновения в сеть, мы не можем полагаться только на один уровень безопасности для защиты наших активов. Ответ на этот вопрос уже не является однозначным «да» просто потому, что существует много типов трафика, которые используют небезопасные сетевые протоколы для обмена сообщениями между источником и получателем. Ниже приведены лишь некоторые из многих вопросов, которые должен задать специалист по кибербезопасности: Осуществляет ли организация активный мониторинг сообщений Domain Name System (DNS) на предмет угроз? Есть ли в организации какие-либо решения для обеспечения безопасности, защищающие входящие и исходящие сообщения электронной почты компании? Если в сети происходит кибератака, существуют ли системы для упреждающего блокирования и оповещения отдела информационных технологий? Есть ли в организации специальная группа или человек по безопасности для управления общей безопасностью всего предприятия? Существуют ли какие-либо политики безопасности и технические средства контроля для защиты внутренней сети? Многие поставщики систем безопасности используют маркетинговые стратегии и используют модные слова (buzzwords), чтобы повлиять на потенциальных клиентов для приобретения их устройств безопасности «все в одном». Ключевой момент, который упускают многие не осведомленные клиенты, — это то, как решение или продукт безопасности будет защищать всех пользователей и все типы трафика, защищать их при использовании небезопасных протоколов и так далее. Примером может служить использование endpoint protection (защиты конечных точек). Вы можете рассматривать это решение как антивирусное программное обеспечение с централизованным управлением для администратора. Хотя многие решения для защиты от вредоносных программ конечных точек предлагают расширенные функции. Это все еще первый уровень безопасности, который просто защищает хост. Не все решения для защиты конечных точек или антивирусы, защищают от угроз, связанных, например с электронной почтой. Проще говоря, организация не может полагаться только на один подход для защиты своих активов, ей нужен многоуровневый подход, известный как Глубокая защита (Defense in Depth - DiD). Стратегия DiD подразумевает, что один уровень безопасности не должен использоваться в качестве единственной меры противодействия кибератакам. Если этот единственный уровень не сможет защитить сеть, тогда все (активы) будут открыты для взлома хакерами. В DiD реализован многоуровневый подход для защиты всех активов от различных типов кибератак, где, если один уровень не может защитить актив, то есть другой уровень для обеспечения безопасности. Эту тактику наслаивания придумали в Агентстве национальной безопасности (NSA) как комплексный подход к информационной и электронной безопасности. А изначально - это военная стратегия, которая направлена на то, чтобы заставить атакующего тратить как можно больше времени на преодоление каждого уровня защиты, нежели предотвратить наступление противника. Концепция Defense in Depth делит организацию защиты инфраструктуры на три контролируемые части: Физическая: сюда относятся все меры по ограничению физического доступа к ИТ-инфраструктуре неавторизованных лиц. Например, охранник офиса, системы СКУД, камеры видеонаблюдения, сигнализация, телекоммуникационные шкафы с замками и так далее. Техническая: сюда относятся все хардварные и софтовые средства защиты информации, призванные контролировать сетевой доступ к объектам информационной системы, межсетевой экран, средства антивирусной защиты рабочих станций, прокси-серверы, системы аутентификации и авторизации. Административная: сюда относятся все политики и процедуры информационной безопасности, принятые в организации. Данные документы призваны регулировать управление защитой, распределение и обработку критичной информации, использование программных и технических средств в компании, а также взаимодействие сотрудников с информационной системой, сторонними организациями и другими внешними субъектами. Многоуровневый подход -это как защита короля в его замке. Если произойдет нападение, захватчикам потребуется пройти несколько уровней обороны, включая стражей на входе и другие препятствия, прежде чем они смогут добраться до короля (актива). Чтобы лучше понять важность DiD, давайте углубимся в изучение трех основных принципов информационной безопасности, так называемой триады CIA: Конфиденциальность (Confidentiality) Целостность (Integrity) Доступность (Availability) Каждый принцип играет жизненно важную роль в обеспечении информационной безопасности любой организации. В следующем подразделе вы узнаете о характеристиках конфиденциальности, целостности и доступности, а также о том, как они используются в отрасли для обеспечения безопасности наших сетей. Конфиденциальность Поскольку все больше людей подключаются к сетям и обмениваются информацией, будь то их частная сеть дома, корпоративная сеть в офисе или даже Интернет, конфиденциальность является серьезной проблемой. Каждый день организации генерируют новые данные, отправляя и получая сообщения между устройствами. Представьте себе организацию, которая использует электронную почту в качестве единственной платформы обмена сообщениями. Каждый человек создает сообщение электронной почты, которое является данными, и эти данные используют некоторое пространство для хранения в локальной системе. Когда адресат получает электронное письмо, оно сохраняется на компьютере получателя. Важно, чтобы сообщение получили только те, кому оно адресовано, посторонние лица его увидеть не должны. Когда эти данные передаются по сети, их также можно перехватить. Поэтому специалист по безопасности также должен принимать во внимание следующие вопросы: является ли соединение безопасным? Является ли протокол связи безопасным? Является ли сеть безопасной? Конфиденциальность (Confidentiality) гарантирует, что сообщения и другие данные будут храниться в тайне от посторонних лиц или устройств. В области информационных технологий конфиденциальность реализуется в виде шифрования данных. Люди используют устройства для выполнения задач, будь то отправка электронной почты, загрузка файла или даже отправка сообщения в мессенджере со смартфона. Важно всегда защищать эти сообщения. Данные обычно существуют в следующих состояниях: Данные в состоянии покоя Данные в движении (транзит) Используемые данные Данные в состоянии покоя — это данные, которые не используются ни приложением, ни системой. В данный момент они хранятся на носителях, таких как жесткий диск (HDD) в локальной или удаленной системе. Когда данные находятся в состоянии покоя, они уязвимы для злоумышленников, пытающихся либо украсть, либо изменить их. Специалисты по безопасности реализуют как методы аутентификации, так и алгоритмы шифрования для защиты любых данных в состоянии покоя. Примером может служить использование BitLocker в операционной системе Microsoft Windows 10, которая позволяет администратору создавать зашифрованный контейнер, а затем пользователь может поместить файлы в эту специальную область памяти и заблокировать ее. После того, как содержимое BitLocker заблокировано (закрыто) пользователем, и контейнер, и его содержимое шифруются. Следовательно, доступ предоставляется только в том случае, если пользователь предоставляет правильные учетные данные для открытия и расшифровки содержимого. Если злоумышленник украдет зашифрованный контейнер, он не сможет просмотреть содержимое из-за шифрования данных. Данные в движении определяются как данные, которые передаются между источником и пунктом назначения. Представьте, что есть сотрудники, которые работают дистанционно или работают в удаленном месте вдали от офиса. Этим людям может потребоваться часто подключаться к корпоративной сети для доступа к сетевым ресурсам, например, при доступе или работе с документами, находящимися на файловом сервере. Как специалисты в области кибербезопасности, мы должны быть осведомлены о том, какие типы защиты или механизмы безопасности существуют для защиты данных, передаваемых между устройством пользователя и файловым сервером. Кроме того, устройства отправляют и получают сообщения почти каждую секунду, и некоторые из этих сообщений обмениваются с использованием небезопасных протоколов, что позволяет злоумышленнику перехватывать сообщения (данные) по мере их передачи по сети. Если данные передаются по сети в незашифрованном формате, злоумышленник может увидеть все содержимое в виде открытого текста и собрать конфиденциальную информацию, такую как логины и пароли. Это всего лишь несколько возможных ситуаций, которые могут возникнуть, когда данные находятся в движении. Некоторые рекомендуемые действия заключаются в том, чтобы всегда, когда это возможно, использовать защищенные сетевые протоколы и гарантировать, что удаленные сотрудники, используют виртуальную частную сеть (VPN) для шифрования трафика между устройством пользователя и корпоративной сетью. Чтобы лучше понять необходимость VPN, представьте, что организация имеет несколько филиалов и хочет «расшарить» ресурсы из головного офиса в удаленный филиал. Использование Интернета небезопасно, особенно для передачи корпоративных данных между филиалами. Одним из решений может быть использование Wide Area Network (WAN), предоставляемой интернет-провайдером (ISP). Если организация решает использовать WAN, это означает, что за эту услугу придется платить, а для некоторых компаний это решение может оказаться не по карману. В качестве альтернативы, если организация имеет подключение к Интернету и брандмауэры находятся в каждом офисе, специалист по безопасности может настроить VPN между двумя устройствами брандмауэра. Этот тип VPN известен как site-to-site VPN. На следующем рисунке показано представление site-to-site VPN: Как показано на рисунке, site-to-site VPN устанавливает безопасное зашифрованное соединение между головным офисом и удаленными филиалами через Интернет. Следовательно, любые сообщения, которые перемещаются между офисами, шифруются и отправляются через туннель VPN, защищая сообщения от неавторизованных пользователей. Существует также другой тип VPN - с удаленным доступом (remote access VPN). Этот тип позволяет пользователю установить VPN-туннель между конечным устройством, таким как ноутбук, и брандмауэром организации. Этот тип VPN позволяет сотрудникам, работающим дома или на ходу, безопасно подключаться к сети организации и получать доступ к сетевым ресурсам. Имейте в виду, что на устройстве сотрудника должен быть установлен VPN-клиент, который используется для установления безопасного соединения между компьютером и корпоративным брандмауэром. На следующем рисунке приведен пример VPN с удаленным доступом: Используемые данные — это данные, к которым в данный момент обращается или использует приложение. В этом состоянии данные наиболее уязвимы. В качестве примера используемых данных представьте, что вы открываете PDF-документ с помощью приложения для чтения PDF-файлов. Прежде чем приложение сможет успешно открыть файл PDF, документ необходимо расшифровать, если файл защищен паролем. После ввода правильного пароля документ будет представлен пользователю в незашифрованном виде. Важно обеспечить постоянную безопасность системы и приложений, которые обращаются к данным и/или используют их. Таким образом, конфиденциальность — это защита ваших активов от посторонних лиц или устройств. Целостность Целостность (Integrity) играет важную роль в нашей повседневной жизни, это степень сформированности, собранности, проявление гармонии соотношения и взаимодействия частей. Вышло немного по-философски, но тот же принцип необходим и в сети. Представьте, что вы получили письмо от друга через местное отделение почты и открыв его, кажется, что с его содержимым все в порядке. Как получатель, вы могли бы предположить, что содержимое письма осталось неизменным в процессе доставки, но как вы можете проверить, было ли содержимое изменено человеком или устройством по пути? В сети очень важно обеспечить, чтобы данные или сообщения не изменялись в процессе передачи между источником и получателем. В кибербезопасности используются специальные алгоритмы хеширования, чтобы помочь пользователям и устройствам проверить, было ли сообщение изменено или нет при его передаче. Алгоритмы хеширования создают односторонний криптографический хэш (дайджест, он же контрольная сумма), который является математическим представлением сообщения. Это означает, что только это сообщение может выдавать одно и то же хэш-значение. Алгоритмы хеширования создают одностороннюю функцию, которая делает практически невозможным изменение и определение содержимого самого сообщения. На следующем рисунке показан процесс хеширования сообщения: Как показано на рисунке, сообщение проходит через криптографический алгоритм, который создаёт одностороннюю хэш-функцию сообщения. Когда пользователь или устройство хочет отправить сообщение адресату, и сообщение, и его хеш-значение упаковываются вместе и отправляются по сети. Когда получатель получает входящее сообщение, он выполняет свою собственную функцию хеширования сообщения и вычисляет его хеш-значение. Затем получатель сравнивает хеш-значение, полученное от отправителя, с хеш-значением, которое он высчитал. Если оба значения хеш-функций совпадают, это означает, что сообщение не было изменено во время передачи и целостность сохранена. Однако, если хэши не совпадают, это указывает на то, что сообщение было подвергнуто изменению, и получатель просто удалит его. Помимо этого, хэширование также помогает убедиться в том, что сообщение не было искажено в результате каких-либо сбоев или неполадок в сети. Доступность Существуют типы кибератак, которые блокируют или затрудняют доступ законных пользователей к ресурсу. Другими словами, злоумышленники пытаются нарушить доступность (availability) данных и ресурсов. В области кибербезопасности доступность гарантирует, что данные и ресурсы всегда доступны для пользователей и систем, которым разрешен доступ к этим ресурсам. Простым примером кибератаки, которая может быть использована для нарушения доступности сети, является атака «распределенный отказ в обслуживании» Distributed Denial of Service (DDoS). Этот тип атаки запускается из нескольких географических точек и нацелен на одну систему или сеть. Злоумышленник направляет к объекту атаки огромное количество легитимных запросов или другого типа трафика, в результате чего, система перегружается и становится неспособной обработать запросы от других пользователей. Цель состоит в том, чтобы сделать целевую систему или сеть непригодными для использования или недоступными для других пользователей. Cloudflare (www.cloudflare.com) обеспечивает неограниченную защиту от DDoS-атак для пользователей. Администратор может перенести свои записи DNS в Cloudflare для управления службами DNS. Таким образом, Cloudflare находится между общедоступным сервером и остальной частью Интернета. Если на ресурс будет направлен DDoS-трафик из любой точки мира, он должна будет проходить через сеть Cloudflare, что смягчит атаку. Возможно вы считаете, что для злоумышленников важно, чтобы сетевые ресурсы и данные были всегда доступны, чтобы их можно было взломать или украсть. Но на самом деле существуют злоумышленники, цель которых - сделать так, чтобы эти ресурсы не были больше доступны для пользователей. Просто представьте что злоумышленник взломает систему управления энергосистемой вашего города или района. Если хакеру удастся отключить эту систему, то не будет электричества, и это затронет большинство потребителей и организаций. В таких ситуациях важно, чтобы специалисты внедрили меры безопасности, которые смогут защитить критически важные процессы, системы и сети от взлома. Объединение трех принципов Некоторые организации ставят одни принципы выше других. Например, компания может больше внимание уделять на защите своих данных с помощью различных систем аутентификации и шифрования. Этот принцип фокусируется на конфиденциальности. Сосредоточение внимания на одном компоненте, таком как конфиденциальность, в большей степени, чем на других, повлечет меньшее внимание к другим - целостности и/или доступности. Вы можете задаться вопросом: и в чём здесь проблема? Представьте себе, что организация применяет самые строгие меры безопасности для предотвращения любого несанкционированного доступа к своим системам и сети. Чтобы авторизованный пользователь мог получить доступ к этим ресурсам, ему необходимо будет предоставить, возможно, несколько проверок своей личности, например, при многофакторной аутентификации (MFA), и даже пароли для открытия файлов. В результате доступ к ресурсам будет усложнен для всех, включая авторизованных пользователей, поэтому доступность немного пострадает. На следующем рисунке показана триада принципов и точка фокусировки в центре: Ключевой момент заключается в том, чтобы всегда обеспечивать баланс при реализации конфиденциальности, целостности и доступности в любой системе и сети. Важно уделять одинаковое внимание всем основным направлениям просто для того, чтобы не было недостатка ни в одном аспекте информационной безопасности.
img
@media screen and (max-width: 736px){ .video-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .video-container iframe { position: absolute; top:0; left: 0; width: 100%; height: 100%; }} В этом руководстве мы расскажем про основы языка Python, расскажем как его установить, как запускать программы и на примерах разберем все основные темы. Прежде всего, что такое Python? По словам его создателя Гвидо ван Россума, Python - это: «Язык программирования высокого уровня и его основная философия проектирования - это все о читабельности кода и синтаксисе, который позволяет программистам выражать концепции в нескольких строках кода». Мы можем использовать кодирование на Python по-разному: здесь блистают наука о данных, автоматизация задач, написание скриптов, веб-разработка и машинное обучение. Quora, Pinterest и Spotify используют Python для своей внутренней веб-разработки. Итак, давайте немного узнаем об этом языке и разберем его основы. О языке Что умеет Python? Python можно использовать на сервере для создания веб-приложений. Python можно использовать вместе с программным обеспечением для создания рабочих процессов. Python может подключаться к системам баз данных. Он также может читать и изменять файлы. Python можно использовать для обработки больших данных и выполнения сложной математики. Python можно использовать для быстрого создания прототипов или для разработки программного обеспечения, готового к производству. Почему Python? Python работает на разных платформах (Windows, Mac, Linux, Raspberry Pi и т.д.). Python имеет простой синтаксис, аналогичный английскому языку. Синтаксис Python позволяет разработчикам писать программы с меньшим количеством строк, чем в некоторых других языках программирования. Python работает в системе интерпретатора, что означает, что код может быть выполнен, как только он будет написан. Это означает, что прототипирование может быть очень быстрым. Python можно рассматривать как процедурный, объектно-ориентированный или функциональный. Python популярный и имеет хорошо развитую экосистему. Хорошо знать Самая последняя основная версия Python - это Python 3. Однако Python 2, хотя и не обновляется ничем, кроме обновлений безопасности, по-прежнему довольно популярен. Можно написать Python в интегрированной среде разработки, такой как Thonny, Pycharm, Netbeans или Eclipse, которые особенно полезны при управлении большими коллекциями файлов Python. Синтаксис Python по сравнению с другими языками программирования Python был разработан для удобства чтения и имеет некоторое сходство с английским языком с влиянием математики. Python использует новые строки для завершения команды, в отличие от других языков программирования, в которых часто используются точки с запятой или круглые скобки. Python полагается на отступы с использованием пробелов для определения области видимости; например, объем циклов, функций и классов. В других языках программирования для этой цели часто используются фигурные скобки. Подготовка Установка Python На многих ПК и Mac уже установлен Python. Чтобы проверить, установлен ли у вас Python на ПК с Windows, выполните поиск Python на панели запуска или выполните в командной строке cmd.exe следующее: C:UsersYour Name>python --version Чтобы проверить, установлен ли у вас python на Linux или Mac, то на Linux откройте командную строку или на Mac откройте Терминал и введите: python --version Если вы обнаружите, что на вашем компьютере не установлен python, вы можете бесплатно загрузить его со следующего веб-сайта: https://www.python.org/ Быстрый старт Python - это интерпретируемый язык программирования, это означает, что как разработчик вы пишете файлы Python .py в текстовом редакторе, а затем помещаете эти файлы в интерпретатор Python для выполнения. Способ запуска файла Python в командной строке выглядит следующим образом: C:UsersYour Name>python helloworld.py Где helloworld.py - это имя вашего файла python. Давайте напишем наш первый файл Python под названием helloworld.py, который можно сделать в любом текстовом редакторе. print("Hello, World!") Сохраните ваш файл. Откройте командную строку, перейдите в каталог, в котором вы сохранили файл, и запустите: C:UsersYour Name>python helloworld.py Результат должен быть таким: Hello, World! Поздравляем, вы написали и выполнили свою первую программу на Python. Командная строка Python Чтобы протестировать небольшой объем кода на Python, иногда проще и быстрее всего не записывать код в файл. Это стало возможным, потому что Python можно запускать из командной строки. Введите в командной строке Windows, Mac или Linux следующее: C:UsersYour Name>python Или, если команда python не сработала, вы можете попробовать py: C:UsersYour Name>py Оттуда вы можете написать любой Python, включая наш пример hello world из ранее в руководстве: C:UsersYour Name>python Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello, World!") Которая напишет "Hello, World!" в командной строке: C:UsersYour Name>python Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello, World!") Hello, World! Когда вы закончите в командной строке Python, вы можете просто ввести следующее, чтобы выйти из интерфейса командной строки Python: exit() Основы 1. Переменные Вы можете думать о переменных как о словах, хранящих значение. Вот так просто. В Python действительно легко определить переменную и присвоить ей значение. Представьте, что вы хотите сохранить номер 1 в переменной под названием one (единица). Давай сделаем это: one = 1 Заметили насколько это было просто? Вы только что присвоили значение 1 переменной one. two = 2 some_number = 10000 Python - динамически типизированный язык, и это не нужно указывать типы переменных, которые вы используете, и переменные не привязаны к конкретному типу. И вы можете присвоить любое другое значение любым другим переменным, которые захотите. Как вы видите в таблице выше, переменная two хранит целое число 2, а some_number хранит 10 000. Помимо целых чисел, мы также можем использовать булевые логические значения (True или False), строки, числа с плавающей запятой и многие другие типы данных. # booleans (булевые значения) true_boolean = True false_boolean = False # string (строка) my_name = "Leandro Tk" # float (числа с плавающей запятой) book_price = 15.80 Комментарии начинаются с символа #, и Python их игнорирует: 2. Поток управления: условные операторы if использует выражение для оценки того, является ли утверждение истинным или ложным. Если это True, он выполняет то, что находится внутри оператора if. Например: if True: print("Hello Python If") if 2 > 1: print("2 is greater than 1") Обратите внимание, что на после строк с if у нас стоит отступ. Если в других языках программирования отступы в коде предназначены только для удобства чтения, отступы в Python очень важны. Python использует отступ для обозначения блока кода. Тут должен стоять хотя бы один пробел, иначе мы получим ошибку. 2 больше 1, поэтому выполняется код print. Оператор else будет выполнен, если выражение if ложно. Функция print () выводит указанное сообщение на экран. if 1 > 2: print("1 is greater than 2") else: print("1 is not greater than 2") В Python при сравнении используется двойное равно ==, а при присвоении - одно. 1 не больше 2, поэтому код внутри оператора else будет выполнен. Вы также можете использовать оператор elif, который значит else if: if 1 > 2: print("1 is greater than 2") elif 2 > 1: print("1 is not greater than 2") else: print("1 is equal to 2") 3. Цикл / Итератор В Python мы можем выполнять итерацию в разных формах. Мы расскажем о двух: while и for. Цикл while: пока оператор имеет значение True, код внутри блока будет выполнен. Итак, этот код напечатает число от 1 до 10. num = 1 while num some_value Это пример того, как его использовать. Для каждого ключа в словаре мы печатаем ключ и соответствующее ему значение. Другой способ сделать это - использовать метод items, который вернет нам ключ и значение. Используем его для словаря, что будет выглядеть как dictionary.items() dictionary = { "some_key": "some_value" } for key, value in dictionary.items(): print("%s --> %s" %(key, value)) # some_key --> some_value Мы назвали эти два параметра key и value, но это не обязательно. Мы можем называть их как угодно. Давай посмотрим: dictionary_tk = { "name": "Leandro", "nickname": "Tk", "birthplace": "Brazil", "age": 24 } for attribute, value in dictionary_tk.items(): print("My %s is %s" %(attribute, value)) # My name is Leandro # My nickname is Tk # My birthplace is Brazil # My age is 24 Мы видим, что мы использовали атрибут в качестве параметра для ключа словаря, и он работает правильно. Отлично! Функции Функция - это блок кода, который запускается только при его вызове. Вы можете передавать данные, называемые параметрами, в функцию. В результате функция может возвращать данные. Все как везде В Python функция определяется с помощью ключевого слова def: def my_function(): print("Hello from a function") Чтобы вызвать функцию, используйте имя функции, за которым следует скобка: def my_function(): print("Hello from a function") my_function() Информация может быть передана в функции как аргументы. Аргументы указываются после имени функции в круглых скобках. Вы можете добавить сколько угодно аргументов, просто разделив их запятыми. В следующем примере есть функция с одним аргументом fname. Когда функция вызывается, мы передаем имя, которое используется внутри функции для печати полного имени: def my_function(fname): print(fname + " Refsnes") my_function("Emil") my_function("Tobias") my_function("Linus") По умолчанию функция должна вызываться с правильным количеством аргументов. Это означает, что если ваша функция ожидает 2 аргумента, вы должны вызвать функцию с 2 аргументами, не больше и не меньше. Если вы попытаетесь вызвать функцию с 1 или 3 аргументами, то получите ошибку. def my_function(fname, lname): print(fname + " " + lname) my_function("Emil", "Refsnes") Если вы не знаете, сколько аргументов будет передано вашей функции, добавьте * перед именем параметра в определении функции. def my_function(*kids): print("The youngest child is " + kids[2]) my_function("Emil", "Tobias", "Linus") Мы можем использовать значение параметра по умолчанию. Если мы вызываем функцию без аргументов, то она не сломается и будет использовать значение по умолчанию: def my_function(country = "Norway"): print("I am from " + country) my_function("Sweden") #I am from Sweden my_function() #I am from Norway Вы можете отправить любой тип данных аргумента функции (строка, число, список, словарь), И он будет обрабатываться как тот же тип данных внутри функции. Например если вы отправите список в качестве аргумента, он все равно будет списком, когда достигнет функции: def my_function(food): for x in food: print(x) fruits = ["apple", "banana", "cherry"] my_function(fruits) Ну и чтобы позволить функции вернуть значение, используйте оператор return: def my_function(x): return 5 * x print(my_function(3)) #15 print(my_function(5)) #25 Пользовательский ввод Python Python позволяет вводить данные пользователем. Это означает, что мы можем попросить пользователя ввести данные. Этот метод немного отличается в Python 3.6 от Python 2.7. Python 3.6 использует метод input(). username = input("Enter username:") print("Username is: " + username) Python 2.7 использует метод raw_input(). username = raw_input("Enter username:") print("Username is: " + username) Python прекращает выполнение, когда доходит до функции input (), и продолжает выполнение, когда пользователь ввел некоторый ввод. Обработка ошибок Python Блок try позволяет вам проверить блок кода на наличие ошибок. Блок except позволяет вам обрабатывать ошибку. Блок finally позволяет выполнять код независимо от результата блоков try и except. Обработка исключений Когда возникает ошибка или исключение, как мы это называем, Python обычно останавливается и генерирует сообщение об ошибке. Эти исключения можно обрабатывать с помощью оператора try: try: print(x) except: print("An exception occurred") Блок try сгенерирует исключение, потому что x не определен. Поскольку блок try вызывает ошибку, блок except будет выполнен. Без блока try программа выйдет из строя и выдаст ошибку. Вы можете определить столько блоков исключений, сколько захотите, например если вы хотите выполнить специальный блок кода для особого типа ошибки. try: print(x) except NameError: print("Variable x is not defined") except: print("Something else went wrong") Выведите одно сообщение, если блок try вызывает NameError, а другое - для других ошибок. Вы можете использовать ключевое слово else, чтобы определить блок кода, который будет выполняться, если ошибок не возникло: try: print("Hello") except: print("Something went wrong") else: print("Nothing went wrong") Блок finally, если он указан, будет выполнен независимо от того, вызывает ли блок try ошибку или нет. try: print(x) except: print("Something went wrong") finally: print("The 'try except' is finished") Как разработчик Python сами вы можете создать исключение при возникновении условия. Чтобы вызвать (или выкинуть) исключение, используйте ключевое слово raise. x = -1 if x < 0: raise Exception("Sorry, no numbers below zero") Вы можете определить, какую ошибку выдавать, и текст, который будет выводить пользователь. x = "hello" if not type(x) is int: raise TypeError("Only integers are allowed") Классы и объекты Немного теории: Объекты представляют собой объекты реального мира, таких как автомобили, собаки или велосипеды. У объектов есть две основные характеристики: данные и поведение. У автомобилей есть данные, такие как количество колес, количество дверей и вместимость. Они также демонстрируют поведение: они могут ускоряться, останавливаться, показывать, сколько топлива осталось, и многое другое. Мы идентифицируем данные как атрибуты, а поведение как методы в объектно-ориентированном программировании. А класс - это чертеж или план, из которого создаются отдельные объекты. В реальном мире мы часто находим много объектов одного типа. Как машины. Каждая машина была построена по одному и тому же набору чертежей и состоит из одинаковых компонентов (у всех есть двигатель, колеса, двери и т.д.). Объектно-ориентированное программирование Python Python как объектно-ориентированный язык программирования имеет следующие концепции: класс и объект. Класс - это план или чертерж, модель для своих объектов. Итак, опять же, класс - это просто модель или способ определения атрибутов и поведения. Например, класс транспортного средства имеет свои собственные атрибуты, определяющие, какие объекты являются транспортными средствами. Количество колес, тип бака, вместимость и максимальная скорость - все это атрибуты транспортного средства. Имея это в виду, давайте посмотрим на синтаксис Python для классов: class Vehicle: pass pass это оператор-заглушка, равноценный отсутствию операции. Тут мы используем его потому что еще не указали атрибуты. Мы определяем классы с помощью оператора class - и все. Легко, правда? Объекты - это экземпляры класса. Мы создаем экземпляр, называя класс. car = Vehicle() print(car) # Здесь car - это объект (или экземпляр) класса Vehicle. Помните, что у нашего класса транспортных средств есть четыре атрибута: количество колес, тип бака, вместимость и максимальная скорость. Мы устанавливаем все эти атрибуты при создании объекта транспортного средства. Итак, здесь мы определяем наш класс для получения данных, когда он их инициирует: class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity Метод __init__, который автоматически вызывается при создании объектов называется конструктором объектов класса Переменная self представляет текущий объект класса. Мы используем метод init. Мы называем это методом конструктора. Итак, когда мы создаем объект транспортного средства, мы можем определить эти атрибуты. Представьте, что мы любим Tesla Model S и хотим создать такой объект. У него четыре колеса, он работает на электроэнергии, вмещает пять сидений, а максимальная скорость составляет 250 км/час. Давайте создадим этот объект: tesla_model_s = Vehicle(4, 'electric', 5, 250) Четыре колеса + электробанк + пять сидений + максимальная скорость 250 км/час. Все атрибуты установлены. Но как мы можем получить доступ к значениям этих атрибутов? Мы отправляем объекту сообщение с вопросом о них. Мы называем это методом. Это поведение объекта. Давайте применим это это: class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity def number_of_wheels(self): return self.number_of_wheels def set_number_of_wheels(self, number): self.number_of_wheels = number Это реализация двух методов: number_of_wheels и set_number_of_wheels. Мы называем это геттером (getter) и сеттером (setter). Потому что первый получает значение атрибута, а второй устанавливает новое значение атрибута. В Python мы можем сделать это, используя @property (декораторы) для определения геттеров и сеттеров. Посмотрим на код: class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity @property def number_of_wheels(self): return self.__number_of_wheels @number_of_wheels.setter def number_of_wheels(self, number): self.__number_of_wheels = number И мы можем использовать эти методы как атрибуты, вызывав их через точку: tesla_model_s = Vehicle(4, 'electric', 5, 250) print(tesla_model_s.number_of_wheels) # 4 tesla_model_s.number_of_wheels = 2 # устанавливаем число колес равное 2 print(tesla_model_s.number_of_wheels) # 2 Это немного отличается от определения методов. Методы работают как атрибуты. Например, когда мы устанавливаем новое количество колес, мы не применяем два в качестве параметра, а устанавливаем значение 2 равным number_of_wheels. Это один из способов написания геттеров и сеттеров в Python. Но мы также можем использовать методы для других вещей, например, метод make_noise. Давай увидим это: class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity def make_noise(self): print('VRUUUUUUUM') Когда мы вызываем этот метод, он просто возвращает строку «VRRRRUUUUM». tesla_model_s = Vehicle(4, 'electric', 5, 250) tesla_model_s.make_noise() # VRUUUUUUUM Инкапсуляция: скрытие информации Инкапсуляция - это механизм, ограничивающий прямой доступ к данным и методам объектов. Но в то же время это облегчает работу с этими данными (методами объектов). Все внутреннее представление объекта скрыто снаружи. Только объект может взаимодействовать со своими внутренними данными. Во-первых, нам нужно понять, как работают общедоступные и непубличные переменные и методы экземпляра - pubulic и non-public. Переменные общедоступного экземпляра Для класса Python мы можем инициализировать общедоступную переменную экземпляра в нашем методе конструктора. class Person: def __init__(self, first_name): self.first_name = first_name Здесь мы применяем значение first_name в качестве аргумента к общедоступной переменной экземпляра (public instance variable). tk = Person('TK') print(tk.first_name) # => TK Внутри класса: class Person: first_name = 'TK' Здесь нам не нужно применять first_name в качестве аргумента, и все объекты экземпляра будут иметь атрибут класса, инициализированный с помощью TK. tk = Person() print(tk.first_name) # => TK Теперь мы узнали, что можем использовать общедоступные переменные экземпляра и атрибуты класса. Еще одна интересная особенность публичной части - это то, что мы можем управлять значением переменной. Что то значит? Наш объект может управлять своим значением переменной: получать и устанавливать значения переменных. Помня о классе Person, мы хотим установить другое значение для его переменной first_name: tk = Person('TK') tk.first_name = 'Kaio' print(tk.first_name) # => Kaio Мы просто устанавливаем другое значение kaio для переменной экземпляра first_name, и она обновляет значение. Вот так просто. Поскольку это общедоступная переменная, мы можем это сделать. Непубличная переменная экземпляра В качестве общедоступной переменной экземпляра мы можем определить непубличную (non-public) переменную экземпляра как внутри метода конструктора, так и внутри класса. Разница в синтаксисе: для закрытых переменных экземпляра используйте символ подчеркивания _ перед именем переменной. «Частные» переменные экземпляра, к которым нельзя получить доступ, кроме как изнутри объекта, в Python не существует. Однако существует соглашение, которому следует большая часть кода Python: имя с префиксом подчеркивания (например, _spam) должно рассматриваться как закрытая часть API (будь то функция, метод или член данных). Вот пример: class Person: def __init__(self, first_name, email): self.first_name = first_name self._email = email Вы видели переменную _email? Вот как мы определяем непубличную переменную: tk = Person('TK', 'tk@mail.com') print(tk._email) # tk@mail.com Мы можем получить к ней доступ и обновить. Непубличные переменные - это просто соглашение, и их следует рассматривать как непубличную часть API. API - это программный интерфейс приложения. Это интерфейс взаимодействия с программой. Итак, мы используем метод, который позволяет нам делать это внутри определения нашего класса. Давайте реализуем два метода (emali и update_email), чтобы понять это: class Person: def __init__(self, first_name, email): self.first_name = first_name self._email = email def update_email(self, new_email): self._email = new_email def email(self): return self._email Теперь мы можем обновлять непубличные переменные и обращаться к ним с помощью этих методов. Давайте посмотрим: tk = Person('TK', 'tk@mail.com') print(tk.email()) # => tk@mail.com # tk._email = 'new_tk@mail.com' -- рассматривать как непубличную часть API класса print(tk.email()) # => tk@mail.com tk.update_email('new_tk@mail.com') print(tk.email()) # => new_tk@mail.com Мы инициировали новый объект с именем TK и адресом электронной почты tk@mail.com Распечатали email, обратившись к закрытой переменной с помощью метода Пытались установить новый адрес электронной почты вне нашего класса Нам нужно рассматривать непубличную переменную как непубличную часть API. Обновлена непубличная переменная с помощью нашего метода экземпляра Успех! Мы можем обновить ее внутри нашего класса с помощью вспомогательного метода Публичный метод С общедоступными методами мы также можем использовать их вне нашего класса: class Person: def __init__(self, first_name, age): self.first_name = first_name self._age = age def show_age(self): return self._age Давайте проверим это: tk = Person('TK', 25) print(tk.show_age()) # => 25 Отлично - мы можем использовать его без проблем. Непубличный метод Но с помощью закрытых методов мы не можем этого сделать. Давайте реализуем тот же класс Person, но теперь с закрытым методом show_age с подчеркиванием _. class Person: def __init__(self, first_name, age): self.first_name = first_name self._age = age def _show_age(self): return self._age А теперь мы попробуем вызвать этот непубличный метод с нашим объектом: tk = Person('TK', 25) print(tk._show_age()) # => 25 Тут все так же. Мы можем получить к нему доступ и обновить. Непубличные методы - это просто соглашение, и их следует рассматривать как непубличную часть API. Вот пример того, как мы можем это использовать: class Person: def __init__(self, first_name, age): self.first_name = first_name self._age = age def show_age(self): return self._get_age() def _get_age(self): return self._age tk = Person('TK', 25) print(tk.show_age()) # => 25 Здесь у нас есть закрытый метод _get_age и открытый метод show_age. show_age может использоваться нашим объектом (вне нашего класса), а _get_age может использоваться только внутри нашего определения класса (внутри метода show_age). Но опять же: условно. Сводка по инкапсуляции С помощью инкапсуляции мы можем гарантировать, что внутреннее представление объекта скрыто снаружи. Наследование: поведение и характеристики У некоторых объектов есть общие черты: их поведение и характеристики. В объектно-ориентированном программировании классы могут наследовать общие характеристики (данные) и поведение (методы) от другого класса. Давайте посмотрим на другой пример и реализуем его на Python. Представьте себе машину. Количество колес, пассажировместимость и максимальная скорость - все это атрибуты автомобиля. Можно сказать, что класс ElectricCar наследует те же атрибуты от обычного класса Car. class Car: def __init__(self, number_of_wheels, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity В нашем классе Car реализованы: my_car = Car(4, 5, 250) print(my_car.number_of_wheels) print(my_car.seating_capacity) print(my_car.maximum_velocity) После запуска мы можем использовать все созданные переменные экземпляра. Отлично. В Python мы применяем родительский (parent) класс к дочернему (child) классу в качестве параметра. Класс ElectricCar может быть унаследован от нашего класса Car. class ElectricCar(Car): def __init__(self, number_of_wheels, seating_capacity, maximum_velocity): Car.__init__(self, number_of_wheels, seating_capacity, maximum_velocity) Вот так просто. Нам не нужно реализовывать какой-либо другой метод, потому что он уже есть в этом классе (унаследованный от класса Car). Докажем это: my_electric_car = ElectricCar(4, 5, 250) print(my_electric_car.number_of_wheels) # => 4 print(my_electric_car.seating_capacity) # => 5 print(my_electric_car.maximum_velocity) # => 250 Модули в Python Что такое модуль? Считайте, что модуль - это то же самое, что и библиотека кода. Файл, содержащий набор функций, которые вы хотите включить в свое приложение. Чтобы создать модуль, просто сохраните нужный код в файле с расширением .py: Сохраните этот код в файле с именем mymodule.py def greeting(name): print("Hello, " + name) Теперь мы можем использовать только что созданный модуль, используя оператор import: import mymodule mymodule.greeting("Jonathan") #Hello, Jonathan Вы можете создать псевдоним при импорте модуля, используя ключевое слово as: import mymodule as mx Встроенные модули В Python есть несколько встроенных модулей, которые вы можете импортировать в любое время. import platform x = platform.system() print(x) Существует встроенная функция для отображения всех имен функций (или имен переменных) в модуле. Это функция dir(): import platform x = dir(platform) print(x) Получим такой вывод: ['DEV_NULL', '_UNIXCONFDIR', 'WIN32_CLIENT_RELEASES', 'WIN32_SERVER_RELEASES', '__builtins__', '__cached__', '__copyright__', '__doc__', '__file__', '__loader__', '__name__', '__package __', '__spec__', '__version__', '_default_architecture', '_dist_try_harder', '_follow_symlinks', '_ironpython26_sys_version_parser', '_ironpython_sys_version_parser', '_java_getprop', '_libc_search', '_linux_distribution', '_lsb_release_version', '_mac_ver_xml', '_node', '_norm_version', '_perse_release_file', '_platform', '_platform_cache', '_pypy_sys_version_parser', '_release_filename', '_release_version', '_supported_dists', '_sys_version', '_sys_version_cache', '_sys_version_parser', '_syscmd_file', '_syscmd_uname', '_syscmd_ver', '_uname_cache', '_ver_output', 'architecture', 'collections', 'dist', 'java_ver', 'libc_ver', 'linux_distribution', 'mac_ver', 'machine', 'node', 'os', 'platform', 'popen', 'processor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation', 'python_revision', 'python_version', 'python_version_tuple', 're', 'release', 'subprocess', 'sys', 'system', 'system_aliases', 'uname', 'uname_result', 'version', 'warnings', 'win32_ver'] Работа с файлами в Python Работа с файлами - важная часть любого приложения. Python имеет несколько функций для создания, чтения, обновления и удаления файлов. Обработка файлов Ключевой функцией для работы с файлами в Python является функция open(). Функция open() принимает два параметра - имя файла и режим. Существует четыре различных метода (режима) открытия файла: r - Чтение - значение по умолчанию. Открывает файл для чтения, возвращает ошибку, если файл не существует a - Добавить - открывает файл для добавления, создает файл, если он не существует. w - Запись - открывает файл для записи, создает файл, если он не существует. x - Создать - создает указанный файл, возвращает ошибку, если файл существует. Кроме того, вы можете указать, следует ли обрабатывать файл в двоичном или текстовом режиме. t - Текст - значение по умолчанию. Текстовый режим b - Двоичный - Двоичный режим (например, изображения) Чтобы открыть файл для чтения, достаточно указать имя файла: f = open("demofile.txt") Код выше по сути такой же, как: f = open("demofile.txt", "rt") Поскольку r для чтения и t для текста являются значениями по умолчанию, вам не нужно их указывать. Открыть файл на сервере Предположим, у нас есть следующий файл, расположенный в той же папке, что и Python: Чтобы открыть файл, используйте встроенную функцию open(). Функция open() возвращает файловый объект, у которого есть метод read() для чтения содержимого файла: f = open("demofile.txt", "r") print(f.read()) Если файл находится в другом месте, вам нужно будет указать путь к файлу, например: f = open("D:\myfileswelcome.txt", "r") print(f.read()) Вы можете вывести одну строку, используя метод readline(): f = open("demofile.txt", "r") print(f.readline()) Рекомендуется всегда закрывать файл по окончании работы с ним. В некоторых случаях из-за буферизации изменения, внесенные в файл, могут не отображаться, пока вы не закроете файл. f = open("demofile.txt", "r") print(f.readline()) f.close() Запись в существующий файл Для записи в существующий файл необходимо добавить параметр к функции open(): a - Добавить - добавит в конец файла w - Запись - перезапишет весь существующий контент Откройте файл "demofile2.txt" и добавьте содержимое в файл: f = open("demofile2.txt", "a") f.write("Now the file has more content!") f.close() #откройте и прочитайте файл после добавления нового содержимого: f = open("demofile2.txt", "r") print(f.read()) Откройте файл "demofile3.txt" и перезапишите его содержимое: f = open("demofile3.txt", "w") f.write("Woops! I have deleted the content!") f.close() Создать новый файл Чтобы создать новый файл в Python, используйте метод open() с одним из следующих параметров: x - Создать - создаст файл, вернет ошибку, если файл существует a - Добавить - создаст файл, если указанный файл не существует w - Запись - создаст файл, если указанный файл не существует Создайте файл с именем myfile.txt: f = open ("myfile.txt", "x") Результат: создан новый пустой файл! Удалить файл Чтобы удалить файл, вы должны импортировать модуль os и запустить его функцию os.remove(): import os os.remove("demofile.txt") Чтобы избежать появления ошибки, вы можете проверить, существует ли файл, прежде чем пытаться удалить его: import os if os.path.exists("demofile.txt"): os.remove("demofile.txt") else: print("The file does not exist") Удалить папку Чтобы удалить всю папку, используйте метод os.rmdir(): import os os.rmdir("myfolder") Удалить можно только пустые папки. Python PIP Что такое PIP? PIP - это менеджер пакетов для пакетов Python или модулей, если хотите. Примечание. Если у вас Python версии 3.4 или новее, PIP включен по умолчанию. Что такое пакет? Пакет содержит все файлы, необходимые для модуля. Модули - это библиотеки кода Python, которые вы можете включить в свой проект. Проверьте, установлен ли PIP Перейдите в командной строке к каталогу скриптов Python и введите следующее: C:UsersYour NameAppDataLocalProgramsPythonPython36-32Scripts>pip --version Установить PIP Если у вас не установлен PIP, вы можете загрузить и установить его с этой страницы: https://pypi.org/project/pip/ Скачать пакет Загрузить пакет очень просто. Откройте интерфейс командной строки и скажите PIP загрузить нужный пакет. Перейдите в командной строке к каталогу сценариев Python и введите следующее: C:UsersYour NameAppDataLocalProgramsPythonPython36-32Scripts>pip install camelcase Мы скачали пакет camelcase Использование пакета После установки пакет готов к использованию. Импортируйте пакет camelcase в свой проект при помощи ключевого слова import. import camelcase c = camelcase.CamelCase() txt = "hello world" print(c.hump(txt)) Дополнительные пакеты можно найти на https://pypi.org/. Удалить пакет Используйте команду uninstall, чтобы удалить пакет: C:UsersYour NameAppDataLocalProgramsPythonPython36-32Scripts>pip uninstall camelcase Диспетчер пакетов PIP попросит вас подтвердить, что вы хотите удалить пакет: Uninstalling camelcase-02.1: Would remove: c:usersYour Nameappdatalocalprogramspythonpython36-32libsite-packagescamecase-0.2-py3.6.egg-info c:usersYour Nameappdatalocalprogramspythonpython36-32libsite-packagescamecase* Proceed (y/n)? Нажмите y, и пакет будет удален. Список пакетов Используйте команду list, чтобы вывести список всех пакетов, установленных в вашей системе: C:UsersYour NameAppDataLocalProgramsPythonPython36-32Scripts>pip list Package Version ----------------------- camelcase 0.2 mysql-connector 2.1.6 pip 18.1 pymongo 3.6.1 setuptools 39.0.1 Вот и все! Мы узнали много нового об основах Python: Как установить Python и запустить свою первую программу Как работают переменные Python Как работают условные операторы Python Как работает цикл Python (while и for) Как работают функции Python Как работают исключения Python Как вводить данные в Python Как работать с файлами в Python Как работать с модулями в Python Как пользоваться PIP Как использовать списки: Коллекция и Массив Коллекция ключей и значений словаря Dictionary Как мы можем перебирать эти структуры данных Объекты и классы Атрибуты как данные объектов Методы как поведение объектов Использование геттеров и сеттеров Python и декоратора свойств Инкапсуляция: скрытие информации Наследование: поведение и характеристики Также вам может быть интересно наше Руководство по изучению PHP с нуля с примерами
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59