Вы ищете место, где можно узнать основы Python? Вы хотите начать работать с Python, но не знаете, с чего начать? Если да, то это то, вам нужно. Здесь основы, которые необходимо знать, чтобы начать программировать на Python.

В этом руководстве вы узнаете:

  • Что такое Python и почему вы должны его использовать.
  • Какой базовый синтаксис Python вам следует изучить, чтобы начать писать код.
  • Как обрабатывать ошибки в Python.
  • Как быстро получить помощь в Python.
  • Какой стиль кода вы должны применить в своем коде.
  • Где получить дополнительные функции, не изобретая велосипед.
  • Где найти качественный контент Python и развить свои навыки.

У вас также будет возможность создать свою первую программу Python и запустить ее на своем компьютере. Наконец, у вас будет возможность оценить свой прогресс с помощью викторины, которая даст вам представление о том, сколько вы узнали.

Содержание

Почему вам следует использовать Python    ↑

Python, названный в честь британской комедийной группы Monty Python, представляет собой интерпретируемый, интерактивный и объектно-ориентированный язык программирования высокого уровня. Его гибкость позволяет делать множество вещей, больших и малых. С помощью Python вы можете писать базовые программы и сценарии, а также создавать сложные и крупномасштабные корпоративные решения. Вот примеры его использования:

  • Создание настольных приложений, включая приложения с графическим интерфейсом, инструменты командной строки и даже игры.
  • Выполнение математического и научного анализа данных.
  • Создание веб-приложений и интернет-приложений.
  • Выполнение задач по администрированию компьютерных систем и автоматизации.
  • Выполнение задач DevOps
  • Вы можете найти Python повсюду в мире компьютерного программирования. Например, Python является основой некоторых из самых популярных веб-сайтов в мире, включая Reddit, Dropbox и YouTube, и это лишь некоторые из них. Веб-фреймворк Python Django поддерживает как Instagram, так и Pinterest. Python имеет ряд функций, которые делают его привлекательным в качестве вашего первого языка программирования:

    • Бесплатно: Python доступен бесплатно даже в коммерческих целях.
    • Открытый исходный код: любой может внести свой вклад в разработку Python.
    • Доступность: люди всех возрастов, от школьников до пенсионеров, изучали Python, и вы тоже.
    • Универсальность: Python может помочь вам решать проблемы во многих областях, включая создание сценариев, анализ данных, веб-разработку, разработку графического интерфейса и т.д.
    • Мощный: вы можете создавать небольшие скрипты для автоматизации повторяющихся задач, а также создавать сложные и крупномасштабные корпоративные решения с помощью Python.

    По сравнению с другими языками программирования, Python имеет следующие особенности:

    • Интерпретируемый: это переносимо, и экспериментировать с ним быстрее, чем с компилируемыми языками.
    • Мультипарадигмальный: позволяет писать код в разных стилях, включая объектно-ориентированный, императивный и функциональный.
    • Динамически типизированный: он проверяет типы переменных во время выполнения, поэтому вам не нужно их явно объявлять.
    • Строго типизированный: он не оставит незамеченными небезопасные операции с несовместимыми типами.

    О Python можно узнать гораздо больше. Но к настоящему времени вы должны лучше понимать, почему Python так популярен и почему вам следует подумать о том, чтобы научиться программировать именно на нем.

    Как загрузить и установить Python    ↑

    Python работает на Linux, Mac, Windows и некоторых других платформах. Он предустановлен на macOS и в большинстве дистрибутивов Linux. Однако, если вы хотите быть в курсе последних событий, возможно, вам потребуется загрузить и установить последнюю версию. У вас также есть выбор использовать разные версии Python в разных проектах, если вы хотите.

    Чтобы проверить, какая версия Python глобально установлена ​​в вашей операционной системе, откройте терминал или командную строку и выполните следующую команду:

    $ python3 -V
    

    Эта команда печатает версию установленной по умолчанию версии Python 3 в вашей системе. Обратите внимание, что вы используете python3 вместо python, потому что некоторые операционные системы по-прежнему включают Python 2 в качестве установки Python по умолчанию.

    Установка Python из двоичных файлов    ↑

    Независимо от вашей операционной системы, вы можете скачать соответствующую версию Python с официального сайта. Зайдите туда и скачайте соответствующую 32-битную или 64-битную версию для вашей операционной системы и процессора.

    Выбор и загрузка двоичного файла Python с официального сайта языка часто является хорошим выбором. Однако есть некоторые ОС-конкретные альтернативы:

    • macOS: у вас есть возможность установить Python из Homebrew.
    • Linux: вы можете установить несколько версий Python с помощью диспетчера пакетов вашего дистрибутива.
    • Windows: вы можете установить Python из Microsoft Store.

    Вы также можете использовать дистрибутив Anaconda для установки Python вместе с богатым набором пакетов и библиотек или вы можете использовать Miniconda, если хотите установить только те пакеты, которые вам нужны.

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

    Чтобы получить руководство по этому вопросу, ознакомьтесь с «Эффективной средой Python: как дома».

    Запуск интерпретатора Python    ↑

    Вы можете провести быстрый тест, чтобы убедиться, что Python установлен правильно. Запустите свой терминал или командную строку и выполните команду python3. Это должно открыть интерактивный сеанс Python, и ваша командная строка должна выглядеть примерно так:

    Python 3.9.0 (default, Oct  5 2020, 17:52:02)
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    

    Пока вы здесь, вы можете запустить свою первую строку кода:

    >>> print("Python is fun!")
    Python is fun!
    

    Это оно! Вы только что написали свою первую программу на Python! Когда вы закончите, вы можете использовать exit() или quit(), чтобы выйти из интерактивного сеанса, или вы можете использовать следующие комбинации клавиш:

    • macOS и Linux: Ctrl + D
    • Windows: Ctrl + D, а затем нажмите Enter.

    Не закрывайте терминал или командную строку. Предстоит ещё многое сделать и узнать! Начнём с изучения основ синтаксиса Python.

    Базовый синтаксис Python    ↑

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

    Эти знания помогут вам начать работу с Python. Вы сможете создавать свои собственные программы практически мгновенно.

    Комментарии    ↑

    Комментарии — это фрагменты текста, которые находятся в вашем коде, но игнорируются интерпретатором Python при его выполнении. Вы можете использовать комментарии для описания кода, чтобы вы и другие разработчики могли быстро понять, что делает код или почему код написан определенным образом. Чтобы написать комментарий на Python, просто добавьте решетку (#) перед текстом комментария:

    # Это комментарий в отдельной строке
    

    Интерпретатор Python игнорирует текст после решетки и до конца строки. Вы также можете добавить в свой код встроенные комментарии. Другими словами, вы можете объединить выражение или оператор Python с комментарием в одной строке, учитывая, что комментарий занимает последнюю часть строки:

    var = "Hello, World!"  # Это встроенный комментарий
    

    Вы должны экономно использовать встроенные комментарии, чтобы убрать фрагменты кода, которые сами по себе не очевидны. В общем, ваши комментарии должны быть краткими и по существу. PEP 8 рекомендует оставлять комментарии длиной не более 72 символов. Если ваш комментарий приближается к этой длине или превышает ее, вы можете распределить его на несколько строк:

    # Это длинный комментарий, требующий
    # две строки для завершения.
    

    Если вам нужно больше места для данного комментария, вы можете использовать несколько строк с решеткой на каждой. Таким образом, длина ваших комментариев не должна превышать 72 символа.

    Переменные    ↑

    В Python переменные — это имена, прикрепленные к определенному объекту. Они содержат ссылку или указатель на адрес памяти, по которому хранится объект. После того, как переменной назначен объект, вы можете получить доступ к объекту, используя имя переменной.

    Вам необходимо заранее определить свои переменные. Вот синтаксис:

    variable_name = variable_value
    

    Вы должны использовать схему именования, которая сделает ваши переменные интуитивно понятными и читаемыми. Имя переменной должно указывать на присвоенные ей значения.

    Иногда программисты используют короткие имена переменных, например x и y. Это совершенно подходящие имена в контексте математики, алгебры и так далее. В других контекстах следует избегать односимвольных имен и использовать что-то более наглядное. Таким образом, другие разработчики могут сделать обоснованное предположение о ваших переменных. При написании программ думайте о других, а также о себе в будущем. Ваше будущее будет вам благодарно.

    Вот несколько примеров допустимых и недопустимых имен переменных в Python:

    >>> numbers = [1, 2, 3, 4, 5]
    >>> numbers
    [1, 2, 3, 4, 5]
    
    >>> first_num = 1
    >>> first_num
    1
    
    >>> 1rst_num = 1
      File "", line 1
        1rst_num = 1
        ^
    SyntaxError: invalid syntax
    
    >>> π = 3.141592653589793
    >>> π
    3.141592653589793
    

    Имена переменных могут быть любой длины и состоять из прописных и строчных букв (A-Z, a-z), цифр (0-9), а также символа подчеркивания (_). В общем, имена переменных должны быть буквенно-цифровыми, но учтите, что хотя имена переменных могут содержать цифры, их первый символ не может быть цифрой.

    Примечание: соглашение об именах lower_case_with_underscores, также известное как snake case, обычно используется в Python. Он не соблюдается, но это широко распространенный стандарт.

    Наконец, Python теперь имеет полную поддержку Unicode, поэтому можно использовать символы Unicode в именах переменных, как написано выше с переменной π.

    Ключевые слова    ↑

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

    >>> help("keywords")
    
    Here is a list of the Python keywords.  Enter any keyword to get more help.
    
    False               class               from                or
    None                continue            global              pass
    True                def                 if                  raise
    and                 del                 import              return
    as                  elif                in                  try
    assert              else                is                  while
    async               except              lambda              with
    await               finally             nonlocal            yield
    break               for                 not                 
    
    >>> 
    

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

    Есть еще один способ получить доступ ко всему списку ключевых слов Python:

    >>> import keyword
    >>> keyword.kwlist
    ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    >>> 
    

    keyword предоставляет набор функций, которые позволяют определить, является ли данная строка ключевым словом. Например, keyword.kwlist содержит список всех текущих ключевых слов в Python. Это удобно, когда вам нужно программно манипулировать ключевыми словами в ваших программах Python.

    Встроенные типы данных    ↑

    Python имеет несколько встроенных типов данных, таких как числа (целые числа, числа с плавающей запятой, комплексные числа), логические значения, строки, списки, кортежи, словари и наборы. Вы можете управлять ими с помощью нескольких инструментов:

    В следующих нескольких разделах вы изучите основы внедрения встроенных в Pythonв типах данных в ваши программы.

    Числа

    Python предоставляет целые числа, числа с плавающей запятой и комплексные числа. Целые числа и числа с плавающей запятой являются наиболее часто используемыми числовыми типами в повседневном программировании, в то время как комплексные числа имеют особые варианты использования в математике и естественных науках. Вот краткое описание их функций:

    Число Описание Пример Тип данных Python
    Целые Целые числа 1, 2, 42, 476, -99999 int
    Плавающая точка Числа с десятичной точкой 1.0, 2.2, 42.09, 476.1, -99999.9 float
    Комплексные Числа с действительной и мнимой частями complex(1, 2), complex(-1, 7), complex("1+2j") complex

    Целые числа имеют неограниченную точность. Информация о точности чисел с плавающей запятой доступна в sys.float_info. Комплексные числа имеют действительную и мнимую части, которые являются числами с плавающей запятой.

    Операторы

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

    >>> 5 + 3
    8
    
    >>> # Subtraction
    >>> 5 - 3
    2
    
    >>> # Multiplication
    >>> 5 * 3
    15
    
    >>> # Division
    >>> 5 / 3
    1.6666666666666667
    
    >>> # Floor division
    >>> 5 // 3
    1
    
    >>> # Modulus (returns the remainder from division)
    >>> 5 % 3
    2
    
    >>> # Power
    >>> 5 ** 3
    125
    

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

    Помимо операторов, Python предоставляет вам набор встроенных функций для управления числами. Эти функции всегда доступны вам. Другими словами,вам не нужно импортировать их, чтобы использовать в своих программах.

    Примечание. В стандартной библиотеке Python доступны модули, такие как math, которые также предоставляют вам функции для управления числами.

    Чтобы использовать функции, связанные с этими модулями, вы сначала должны импортировать модуль, а затем получить доступ к функции с помощью module.function_name(). В качестве альтернативы, можно импортировать функцию прямо из модуля, используя from module import function_name.

    Учитывая целое число или строку, представляющую число в качестве аргумента, float() возвращает число с плавающей запятой:

    >>> # Integer numbers
    >>> float(9)
    9.0
    >>> float(-99999)
    -99999.0
    
    >>> # Strings representing numbers
    >>> float("2")
    2.0
    >>> float("-200")
    -200.0
    >>> float("2.25")
    2.25
    
    >>> # Complex numbers
    >>> float(complex(1, 2))
    Traceback (most recent call last):
      File "", line 1, in 
        float(complex(1, 2))
    TypeError: can't convert complex to float
    

    С помощью float() вы можете преобразовывать целые числа и строки, представляющие числа, в числа с плавающей запятой, но вы не можете преобразовывать комплексное число в число с плавающей запятой.

    Учитывая число с плавающей запятой или строку в качестве аргумента, int() возвращает целое число. Эта функция не округляет ввод до ближайшего целого числа. Она просто обрезает ввод, отбрасывая все, что находится после десятичной точки, и возвращает число. Итак, ввод 10,6 возвращает 10 вместо 11. Аналогично, 3,25 возвращает 3:

    >>> # Floating-point numbers
    >>> int(10.6)
    10
    >>> int(3.25)
    3
    
    >>> # Strings representing numbers
    >>> int("2")
    2
    >>> int("2.3")
    Traceback (most recent call last):
      File "", line 1, in 
        int("2.3")
    ValueError: invalid literal for int() with base 10: '2.3'
    
    >>> # Complex numbers
    >>> int(complex(1, 2))
    Traceback (most recent call last):
      File "", line 1, in 
        int(complex(1, 2))
    TypeError: can't convert complex to int
    

    Обратите внимание, что вы можете передать строку, представляющую целое число, в int(), но вы не можете передать строку, представляющую число с плавающей запятой. Комплексные числа тоже не работают.

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

    >>> 10.0.is_integer()
    True
    >>> 10.2.is_integer()
    False
    
    >>> (10).bit_length()
    4
    >>> 10.bit_length()
      File "", line 1
        10.bit_length()
          ^
    SyntaxError: invalid syntax
    

    Эти методы могут быть полезным инструментом для изучения. В случае целых чисел для доступа к их методам через литерал необходимо использовать пару круглых скобок. В противном случае вы получите SyntaxError.

    Boolean

    Значения Boolean (логические) реализованы как подкласс целых чисел с двумя возможными значениями в Python: True или False. Обратите внимание, что эти значения должны начинаться с заглавной буквы.

    Вы используете логические значения, чтобы выразить истинность значения выражения или объекта.

    Логические значения удобны при написании функций-предикат или при использовании операторов сравнения, таких как больше (>), меньше (<), равно (==) и т.д.:

    >>> 2 < 5
    True
    >>> 4 > 10
    False
    >>> 4 <= 3
    False
    >>> 3 >= 3
    True
    >>> 5 == 6
    False
    >>> 6 != 9
    True
    

    Операторы сравнения вычисляют логические значения, True или False. Не стесняйтесь играть с ними в интерактивном сеансе Python.

    Python предоставляет встроенную функцию bool(), которая тесно связана с логическими значениями. Вот как это работает:

    >>> bool(0)
    False
    >>> bool(1)
    True
    
    >>> bool("")
    False
    >>> bool("a")
    True
    
    >>> bool([])
    False
    >>> bool([1, 2, 3])
    True
    

    bool() принимает объект в качестве аргумента и возвращает True или False в соответствии с истинным значением объекта. Чтобы оценить значение истинности объекта, функция использует правила проверки истинности Python.

    С другой стороны, int() принимает логическое значение и возвращает 0 для False и 1 для True:

    >>> int(False)
    0
    >>> int(True)
    1
    

    Это связано с тем, что Python реализует свои логические значения как подкласс int, как вы видели ранее.

    Strings

    Строки - это фрагменты текста или последовательности символов, которые можно определить с помощью одинарных, двойных или тройных кавычек:

    >>> # Use single quotes
    >>> greeting = 'Hello there!'
    >>> greeting
    'Hello there!'
    
    >>> # Use double quotes
    >>> welcome = "Welcome to Real Python!"
    >>> welcome
    'Welcome to Real Python!'
    
    >>> # Use triple quotes
    >>> message = """Thanks for joining us!"""
    >>> message
    'Thanks for joining us!'
    
    >>> # Escape characters
    >>> escaped = 'can\'t'
    >>> escaped
    "can't"
    >>> not_escaped = "can't"
    >>> not_escaped
    "can't"
    

    Обратите внимание, что вы можете использовать разные типы кавычек для создания строковых объектов в Python. Вы также можете использовать символ обратной косой черты (\) для экранирования символов со специальным значением, таких как сами кавычки.

    После определения строковых объектов вы можете использовать оператор «плюс» (+) для объединения их в новую строку:

    >>> "Happy" + " " + "pythoning!"
    'Happy pythoning!'
    

    При использовании со строками оператор «плюс» (+) объединяет их в одну строку. Обратите внимание, что вам нужно включить пробел (" ") между словами, чтобы иметь правильный интервал в полученной строке. Если вам нужно объединить много строк, вам следует подумать об использовании .join(), что более эффективно. Вы узнаете о .join() чуть позже в этом уроке.

    Python имеет множество полезных встроенных функций и методов для работы со строками. Например, если вы передадите строку в качестве аргумента функции len(), вы получите длину строки или количество содержащихся в ней символов:

    >>> len("Happy pythoning!")
    16
    

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

    Строковый класс (str) предоставляет богатый набор методов, которые полезны для управления и обработки строк. Например, str.join() берет итерацию строк и объединяет их в новую строку.

    Строка, для которой вы вызываете метод, играет роль разделителя:

    >>> " ".join(["Happy", "pythoning!"])
    'Happy pythoning!'
    

    str.upper() возвращает копию базовой строки со всеми буквами, преобразованными в верхний регистр:

    >>> "Happy pythoning!".upper()
    'HAPPY PYTHONING!'
    

    str.lower() возвращает копию базовой строки со всеми буквами, преобразованными в нижний регистр:

    >>> "HAPPY PYTHONING!".lower()
    'happy pythoning!'
    

    str.format() выполняет операцию форматирования строки. Этот метод обеспечивает большую гибкость при форматировании и интерполяции строк:

    >>> name = "John Doe"
    >>> age = 25
    >>> "My name is {0} and I'm {1} years old".format(name, age)
    "My name is John Doe and I'm 25 years old"
    

    Вы также можете использовать f-строку для форматирования ваших строк без использования .format():

    >>> name = "John Doe"
    >>> age = 25
    >>> f"My name is {name} and I'm {age} years old"
    "My name is John Doe and I'm 25 years old"
    

    F-строки Python - это улучшенный синтаксис форматирования строк. Это строковые литералы с буквой f в начале вне кавычек. Выражения, заключенные в фигурные скобки ({}), заменяются своими значениями в форматированной строке.

    Строки - это последовательности символов. Это означает, что вы можете извлекать отдельные символы из строки, используя их позиционный индекс. Индекс - это целое число с отсчетом от нуля, связанное с определенной позицией в последовательности:

    >>> welcome = "Welcome to Real Python!"
    >>> welcome[0]
    'W'
    >>> welcome[11]
    'R'
    >>> welcome[-1]
    '!'
    

    Операция индексации извлекает символ в позиции, указанной данным индексом. Обратите внимание, что отрицательный индекс извлекает элемент в обратном порядке, где -1 является индексом последнего символа в строке.

    Вы также можете получить часть строки, разрезав ее:

    >>> welcome = "Welcome to Real Python!"
    >>> welcome[0:7]
    'Welcome'
    >>> welcome[11:22]
    'Real Python'
    

    Операции нарезки принимают элемент в форме [start: end: step]. Здесь start - это индекс первого элемента, который нужно включить в срез, а end - индекс последнего элемента, который не включен в возвращаемый срез. Ну наконец то, step - необязательное целое число, представляющее количество элементов, через которые нужно перейти при извлечении элементов из исходной строки. Например, шаг 2 вернет все остальные элементы между start и end.

    List

    Списки обычно называются массивами почти во всех других языках программирования. В Python списки - это изменяемые последовательности, которые группируют различные объекты вместе. Чтобы создать список, вы используете присвоение с последовательностью объектов, разделенных запятыми, в квадратных скобках ([]) с правой стороны:

    >>> # Определить пустой список
    >>> empty = []
    >>> empty
    []
    
    >>> # Определить список чисел
    >>> numbers = [1, 2, 3, 100]
    >>> numbers
    [1, 2, 3, 100]
    
    >>> # Изменить список на месте
    >>> numbers[3] = 200
    >>> numbers
    [1, 2, 3, 200]
    
    >>> # Определить список строк
    >>> superheroes = ["batman", "superman", "spiderman"]
    >>> superheroes
    ['batman', 'superman', 'spiderman']
    
    >>> # Определить список объектов с разными типами данных
    >>> mixed_types = ["Hello World", [4, 5, 6], False]
    >>> mixed_types
    ['Hello World', [4, 5, 6], False]
    

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

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

    >>> numbers = [1, 2, 3, 200]
    >>> numbers[0]
    1
    >>> numbers[1]
    2
    
    >>> superheroes = ["batman", "superman", "spiderman"]
    >>> superheroes[-1]
    "spiderman"
    >>> superheroes[-2]
    "superman"
    

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

    Вы также можете создавать новые списки из существующего списка, используя операцию нарезки:

    >>> numbers = [1, 2, 3, 200]
    >>> new_list = numbers[0:3]
    >>> new_list
    [1, 2, 3]
    

    Если вы вложите список, строку или любую другую последовательность в другой список, вы можете получить доступ к внутренним элементам, используя несколько индексов:

    >>> mixed_types = ["Hello World", [4, 5, 6], False]
    >>> mixed_types[1][2]
    6
    >>> mixed_types[0][6]
    'W'
    

    В этом случае первый индекс получает элемент из списка контейнеров, а второй индекс извлекает элемент из внутренней последовательности.

    Вы также можете объединить свои списки с помощью оператора плюс:

    >>> fruits = ["apples", "grapes", "oranges"]
    >>> veggies = ["corn", "kale", "mushrooms"]
    >>> grocery_list = fruits + veggies
    >>> grocery_list
    ['apples', 'grapes', 'oranges', 'corn', 'kale', 'mushrooms']
    

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

    Учитывая список в качестве аргумента, len() возвращает длину списка или количество содержащихся в нем объектов:

    >>> numbers = [1, 2, 3, 200]
    >>> len(numbers)
    4
    

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

    list.append() принимает объект в качестве аргумента и добавляет его в конец базового списка:

    >>> fruits = ["apples", "grapes", "oranges"]
    >>> fruits.append("blueberries")
    >>> fruits
    ['apples', 'grapes', 'oranges', 'blueberries']
    

    list.sort() сортирует базовый список на месте:

    >>> fruits.sort()
    >>> fruits
    ['apples', 'blueberries', 'grapes', 'oranges']
    

    list.pop() принимает в качестве аргумента целочисленный индекс, затем удаляет и возвращает элемент по этому индексу в базовом списке:

    >>> numbers_list = [1, 2, 3, 200]
    >>> numbers_list.pop(2)
    3
    >>> numbers_list
    [1, 2, 200]
    

    Списки - это довольно распространенные и универсальные структуры данных в Python. Они настолько популярны, что разработчики иногда склонны злоупотреблять ими, что может сделать код неэффективным.

    Tuple

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

    >>> employee = ("Jane", "Doe", 31, "Software Developer")
    
    >>> employee[0] = "John"
    Traceback (most recent call last):
      File "", line 1, in 
        employee[0] = "John"
    TypeError: 'tuple' object does not support item assignment
    

    Если вы попытаетесь изменить кортеж на месте, вы получите ошибку TypeError, указывающую, что кортежи не поддерживают модификации на месте.

    Как и в случае со списками, вы также можете выполнять индексацию и нарезку кортежей:

    >>> employee = ("Jane", "Doe", 31, "Software Developer")
    >>> employee[0]
    'Jane'
    >>> employee[1:3]
    ('Doe', 31)
    

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

    Вы также можете добавить два кортежа с помощью оператора конкатенации:

    >>> first_tuple = (1, 2)
    >>> second_tuple = (3, 4)
    >>> third_tuple = first_tuple + second_tuple
    >>> third_tuple
    (1, 2, 3, 4)
    

    Операция конкатенации с двумя кортежами создает новый кортеж, содержащий все элементы в двух входных кортежах.

    Как и в случае со списками и строками, вы можете использовать некоторые встроенные функции для управления кортежами. Например, len() возвращает длину кортежа или количество элементов, которые он содержит:

    >>> numbers = (1, 2, 3)
    >>> len(numbers)
    3
    

    С кортежем в качестве аргумента list() возвращает список со всеми элементами входного кортежа:

    >>> numbers = (1, 2, 3)
    >>> list(numbers)
    [1, 2, 3]
    

    Поскольку кортежи являются неизменяемыми последовательностями, многие методы, доступные для списков, не работают с кортежами. Однако кортежи имеют два встроенных метода:

    1. .считать()
    2. .индекс()

    tuple.count() принимает объект в качестве аргумента и возвращает количество раз, когда элемент появляется в базовом кортеже. Если объекта нет в кортеже, то .count() возвращает 0:

    >>> letters = ("a", "b", "b", "c", "a")
    >>> letters.count("a")
    2
    >>> letters.count("c")
    1
    >>> letters.count("d")
    0
    

    tuple.index() принимает объект в качестве аргумента и возвращает индекс первого экземпляра этого объекта в имеющемся кортеже. Если объекта нет в кортеже, то .index() вызывает ValueError:

    >>> letters = ("a", "b", "b", "c", "a")
    >>> letters.index("a")
    0
    
    >>> letters.index("c")
    3
    
    >>> letters.index("d")
    Traceback (most recent call last):
      File "", line 1, in 
        letters.index("d")
    ValueError: tuple.index(x): x not in tuple
    

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

    Dictionaries

    Словари - это тип ассоциативного массива, содержащего набор пар ключm-значений, в которых каждый ключ является хешируемым объектом, который сопоставляется с произвольным объектом, значением. Есть несколько способов создать словарь. Вот два из них:

    >>> person1 = {"name": "John Doe", "age": 25, "job": "Python Developer"}
    >>> person1
    {'name': 'John Doe', 'age': 25, 'job': 'Python Developer'}
    
    >>> person2 = dict(name="Jane Doe", age=24, job="Web Developer")
    >>> person2
    {'name': 'Jane Doe', 'age': 24, 'job': 'Web Developer'}
    

    В первом подходе используется пара фигурных скобок, в которые вы добавляете разделенный запятыми список пар ключ-значение, используя двоеточие (:) для отделения ключей от значений. Второй подход использует встроенную функцию dict(), которая может принимать аргументы ключевых слов и превращать их в словарь с ключевыми словами в качестве ключей и аргументами в качестве значений.

    Примечание. Начиная с Python 3.6 словари были упорядоченными структурами данных. Но до этого они были неупорядоченными. Итак, если вы используете версию Python ниже 3.6 и вам нужен упорядоченный словарь, рассмотрите возможность использования collections.OrderedDict().

    Вы можете получить значение, связанное с данным ключом, используя следующий синтаксис:

    >>> person1 = {"name": "John Doe", "age": 25, "job": "Python Developer"}
    >>> person1["name"]
    'John Doe'
    >>> person1["age"]
    25
    

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

    Вы также можете получить ключи, значения и пары ключ-значение в словаре с помощью .keys(), .values​​() и .items() соответственно:

    >>> # Получить все ключи
    >>> person1.keys()
    dict_keys(['name', 'age', 'job'])
    
    >>> # Получить все значения
    >>> person1.values()
    dict_values(['John Doe', 25, 'Python Developer'])
    
    >>> # Получить все пары ключ-значение
    >>> person1.items()
    dict_items([('name', 'John Doe'), ('age', 25), ('job', 'Python Developer')])
    

    Эти три метода являются фундаментальными инструментами, когда дело доходит до управления словарями в Python, особенно когда вы выполняете итерацию по словарю.

    Sets

    Python также предоставляет заданную структуру данных. Наборы - это неупорядоченные и изменяемые коллекции произвольных, но хешируемых объектов Python. Создавать наборы можно несколькими способами. Вот два из них:

    >>> employees1 = {"John", "Jane", "Linda"}
    {'John', 'Linda', 'Jane'}
    
    >>> employees2 = set(["David", "Mark", "Marie"])
    {'Mark', 'David', 'Marie'}
    
    >>> empty = set()
    >>> empty
    set()
    

    В первом примере для создания набора используются фигурные скобки и список объектов, разделенных запятыми. Если вы используете set(), вам необходимо предоставить итерацию с объектами, которые вы хотите включить в набор. Наконец, если вы хотите создать пустой набор, вам нужно использовать set() без аргументов. Использование пустой пары фигурных скобок создает пустой словарь вместо набора.

    Одним из наиболее распространенных вариантов использования наборов является их использование для удаления повторяющихся объектов из существующего итеративного объекта:

    >>> set([1, 2, 2, 3, 4, 5, 3])
    {1, 2, 3, 4, 5}
    

    Поскольку наборы являются коллекциями уникальных объектов, когда вы создаете набор с помощью set() и итерируемого объекта в качестве аргумента, конструктор класса удаляет все повторяющиеся объекты и сохраняет только по одному экземпляру каждого из них в результирующем наборе.

    Примечание: Python также предоставляет неизменяемую вариацию набора под названием frozenset. Вы можете создать их, вызвав frozenset() с итеративным аргументом. Если вы вызовете frozenset() без аргументов, вы получите пустой frozenset.

    Вы можете использовать некоторые встроенные функции с наборами, как вы это делали с другими встроенными структурами данных. Например, если вы передадите набор в качестве аргумента функции len(), вы получите количество элементов в наборе:

    >>> employees1 = {"John", "Jane", "Linda"}
    
    >>> len(employees1)
    3
    

    Вы также можете использовать операторы для управления наборами в Python. В этом случае большинство операторов представляют собой типичные операции над множеством, такие как объединение (|), пересечение (&), разность (-) и так далее:

    >>> primes = {2, 3, 5, 7}
    >>> evens = {2, 4, 6, 8}
    
    >>> # Объединение
    >>> primes | evens
    {2, 3, 4, 5, 6, 7, 8}
    
    >>> # Пересечение
    >>> primes & evens
    {2}
    
    >>> # Разница
    >>> primes - evens
    {3, 5, 7}
    

    Наборы имеют ряд методов, включая методы, которые выполняют операции с наборами, подобные тем, что в приведенном выше примере. Они также предоставляют методы для изменения или обновления базового набора. Например, set.add() берет объект и добавляет его в набор:

    >>> primes = {2, 3, 5, 7}
    
    >>> primes.add(11)
    >>> primes
    {2, 3, 5, 7, 11}
    

    set.remove() берет объект и удаляет его из набора:

    >>> primes = {2, 3, 5, 7, 11}
    
    >>> primes.remove(11)
    >>> primes
    {2, 3, 5, 7}
    

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

    Условные выражения    ↑

    Иногда вам нужно запустить (или не запускать) данный блок кода в зависимости от того, выполняются ли определенные условия. В этом случае условные утверждения - ваш союзник. Эти операторы управляют выполнением группы операторов на основе значения истинности выражения.Вы можете создать условный оператор в Python с ключевым словом if и следующим общим синтаксисом:

    if expr0:
        # Run if expr0 is true
        # Your code goes here...
    elif expr1:
        # Run if expr1 is true
        # Your code goes here...
    elif expr2:
        # Run if expr2 is true
        # Your code goes here...
    ...
    else:
        # Run if all expressions are false
        # Your code goes here...
    
    # Next statement
    

    Оператор if запускает только один блок кода. Другими словами, если expr0 истинно, будет выполняться только связанный с ним блок кода. После этого выполнение переходит к оператору непосредственно под оператором if.

    Первое предложение elif оценивает expr1 только в том случае, если expr0 ложно. Если expr0 ложно, а expr1 истинно, тогда будет запущен только блок кода, связанный с expr1, и так далее. Предложение else является необязательным и будет выполняться только в том случае, если все ранее оцененные условия ложны. У вас может быть столько предложений elif, сколько вам нужно, включая ни одного, но у вас может быть только одно предложение else.

    Вот несколько примеров того, как это работает:

    >>> age = 21
    >>> if age >= 18:
    ...     print("Вы совершеннолетний")
    ...
    Вы совершеннолетний
    
    >>> age = 16
    >>> if age >= 18:
    ...     print("Вы совершеннолетний")
    ... else:
    ...     print("Вы НЕ взрослый")
    ...
    Вы НЕ взрослый
    
    >>> age = 18
    >>> if age > 18:
    ...     print("Вам больше 18 лет")
    ... elif age == 18:
    ...     print("Вам ровно 18 лет")
    ...
    Вам ровно 18 лет
    

    В первом примере возраст равен 21, поэтому условие истинно, и Python выводит на экран «Вы совершеннолетний». Во втором примере выражение age >= 18 оценивается как False, поэтому Python запускает блок кода из предложения else и печатает на экране «Вы НЕ взрослый».

    В последнем примере первое выражение age > 18 False, поэтому выполнение переходит к предложению elif. Условие в этом предложении истинно, поэтому Python запускает связанный блок кода и печатает «Вам ровно 18 лет».

    Циклы    ↑

    Если вам нужно повторить фрагмент кода несколько раз, чтобы получить окончательный результат, вам может потребоваться цикл. Циклы - это распространенный способ многократного повторения и выполнения определенных действий на каждой итерации. Python предоставляет два типа циклов:

    1. for для определенной итерации или выполнения заданного числа повторений
    2. while циклы для неопределенной итерации или повторение до тех пор, пока не будет выполнено заданное условие

    Вот общий синтаксис для создания цикла for:

    for loop_var in iterable:
        # Повторять этот блок кода до тех пор, пока итерабельность не будет исчерпана
        # Сделайте что-нибудь с loop_var ...
        if break_condition:
            break  # Выйти из цикла
        if continue_condition:
            continue  # Возобновляем цикл, не выполняя оставшийся код
        # Оставшийся код ...
    else:
        # Запустить этот блок кода, если не запущен оператор break
    
    # Следующей оператор
    

    Этот тип цикла выполняет столько итераций, сколько элементов в итерируемом. Обычно вы используете каждую итерацию для выполнения данной операции над значением loop_var. Предложение else является необязательным и запускается после завершения цикла. Операторы break и continue также необязательны.

    Посмотрите следующий пример:

    >>> for i in (1, 2, 3, 4, 5):
    ...     print(i)
    ... else:
    ...     print("Цикл не прервался")
    ...
    1
    2
    3
    4
    5
    Цикл не прервался
    

    Когда цикл обрабатывает последнее число в кортеже, поток выполнения переходит к предложению else и печатает на вашем экране "Цикл не прерывался". Это потому, что ваш цикл не был прерван оператором break. Вы обычно используете предложение else в циклах, в блоке кода которых есть оператор break. В противном случае в этом нет необходимости.

    Если в цикле встречается break_condition, то оператор break прерывает выполнение цикла и переходит к следующему оператору ниже цикла, не используя остальные элементы в итерации:

    >>> number = 3
    >>> for i in (1, 2, 3, 4, 5):
    ...     if i == number:
    ...         print("Номер найден:", i)
    ...         break
    ... else:
    ...     print("Номер не найден")
    ...
    Номер найден: 3
    

    Когда i == 3, цикл выводит на экран Номер найден: 3, а затем выполняет оператор break. Это прерывает цикл и выполнение переходит к строке ниже цикла без выполнения предложения else. Если вы установите число на 6 или любое другое число, не входящее в набор чисел, тогда цикл не попадает в оператор break и выводит Номер не найден.

    Если цикл достигает continue_condition, то оператор continue возобновляет цикл без выполнения остальных операторов тела цикла:

    >>> for i in (1, 2, 3, 4, 5):
    ...     if i == 3:
    ...         continue
    ...     print(i)
    ...
    1
    2
    4
    5
    

    На этот раз оператор continue перезапускает цикл, когда i == 3. Вот почему вы не видите цифры 3 в выводе.

    Оба оператора, break и continue, должны быть заключены в условное выражение. В противном случае цикл всегда прерывается, когда он нажимает break и продолжается, когда он нажимает continue.

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

    Вот общий синтаксис цикла while в Python:

    while expression:
        # Повторяйте этот блок кода, пока expression не станет ложным
        # Сделай что-нибудь...
        if break_condition:
            break  # Выйти из цикла
        if continue_condition:
            continue  # Возобновляем цикл, не выполняя оставшийся код
        # Оставшийся код ...
    else:
        # Запустить этот блок кода, если не запущен оператор break
    
    # Следующий оператор
    

    Этот цикл работает аналогично циклу for, но он будет повторяться до тех пор, пока выражение не станет ложным. Обычная проблема с этим типом цикла возникает, когда вы предоставляете выражение, которое никогда не принимает значение False. В этом случае цикл будет повторяться бесконечно.

    Вот пример того, как работает цикл while:

    >>> count = 1
    >>> while count < 5:
    ...     print(count)
    ...     count = count + 1
    ... else:
    ...     print("Цикл не прервался")
    ...
    1
    2
    3
    4
    Цикл не прервался
    

    Опять же, предложение else является необязательным, и вы обычно используете его с оператором break в теле цикла. Здесь break и continue работают так же, как в цикле for.

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

    Этому циклу нужен оператор break, чтобы завершить цикл, когда, например, пользователь выходит из приложения. В противном случае приложение продолжало бы работать вечно.

    Функции    ↑

    В Python функция - это именованный блок кода, который выполняет действия и, возможно, вычисляет результат, который затем возвращается в вызывающий код. Для определения функции можно использовать следующий синтаксис:

    def function_name(arg1, arg2, ..., argN):
        # Сделайте что-нибудь с arg1, arg2, ..., argN
        return return_value
    

    Ключевое слово def запускает заголовок функции. Затем вам понадобится название функции и список аргументов в скобках. Обратите внимание, что список аргументов необязательный, но скобки синтаксически обязательны.

    Последний шаг - определить блок кода функции, который начнет отступ на один уровень вправо. В этом случае, оператор return также является необязательным и является оператором, который вы используете, если вам нужно отправить return_value обратно в код вызывающего абонента.

    Примечание. Полный синтаксис для определения функций и их аргументов выходит за рамки этого руководства. Чтобы получить более подробный ресурс по этой теме, ознакомьтесь с Defining Your Own Python Function.

    Чтобы использовать функцию, вам нужно ее вызвать. Вызов функции состоит из имени функции, за которым следуют аргументы функции в круглых скобках:

    function_name(arg1, arg2, ..., argN)
    

    У вас могут быть функции, которые не требуют аргументов при вызове, но круглые скобки нужны всегда. Если вы их забудете, вы не будете вызывать функцию, а будете ссылаться на нее как на объект функции.

    Как обрабатывать ошибки в Python    ↑

    Ошибки - это то, что раздражает и расстраивает программистов на любом уровне опыта. Умение определять и обрабатывать их - основной навык для программистов. В Python существует два типа ошибок кода: синтаксические ошибки и исключения.

    синтаксические ошибки    ↑

    Синтаксические ошибки возникают, когда синтаксис вашего кода недопустим в Python. Они автоматически останавливают выполнение ваших программ. Например, в приведенном ниже операторе if отсутствует двоеточие в конце заголовка оператора, и Python быстро указывает на ошибку:

    >>> if x < 9
       File "", line 1
         if x < 9
                ^
    SyntaxError: invalid syntax
    

    Отсутствующее двоеточие в конце оператора if является недопустимым синтаксисом Python. Синтаксический анализатор Python обнаруживает проблему и немедленно вызывает SyntaxError. Стрелка (^) указывает, где синтаксический анализатор обнаружил проблему.

    Исключения    ↑

    Исключения возникают из-за синтаксически правильного кода во время выполнения, чтобы сигнализировать о проблеме во время выполнения программы. Например, рассмотрим следующее математическое выражение:

    >>> 12 / 0
    Traceback (most recent call last):
      File "", line 1, in 
    ZeroDivisionError: integer division or modulo by zero
    

    Выражение 12/0 синтаксически правильно в глазах синтаксического анализатора Python. Однако он вызывает исключение ZeroDivisionError, когда интерпретатор пытается фактически оценить выражение.

    Примечание. В Python для управления ходом выполнения программы обычно используются исключения. Разработчики Python отдают предпочтение этому стилю кодирования,известный как EAFP (Проще просить прощения, чем разрешения), по стилю кодирования, известному как LBYL (Посмотрите, прежде чем прыгать), который основан на использовании операторов if.

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

    семантические ошибки    ↑

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

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

    Как получить справку по Python    ↑

    Python, как хороший друг, всегда готов помочь, если вы застряли. Возможно, вы хотите узнать, как работает конкретная функция, метод, класс или объект. В этом случае вы можете просто открыть интерактивный сеанс и вызвать help(). Это приведет вас прямо к справочной утилите Python:

    >>> help()
    
    Welcome to Python 3.9's help utility!
    
    If this is your first time using Python, you should definitely check out
    the tutorial on the Internet at https://docs.python.org/3.9/tutorial/.
    ...
    
    help>
    

    Оказавшись там, вы можете ввести имя объекта Python, чтобы получить о нем полезную информацию:

    >>> help()
    ...
    
    help> len
    
    Help on built-in function len in module builtins:
    
    len(obj, /)
        Return the number of items in a container.
    

    Когда вы вводите имя len в подсказке help> и нажимаете Enter, вы получаете справочный контент, связанный с этой встроенной функцией. Чтобы выйти из содержимого и вернуться к подсказке help>, вы можете нажать Q. Чтобы выйти из утилиты справки, вы можете ввести quit и нажать Enter.

    Вы также можете использовать help() с именем объекта в качестве аргумента для получения информации об этом объекте:

    >>> help(dir)
    
    Help on built-in function dir in module builtins:
    
    dir(...)
        dir([object]) -> list of strings
    ...
    

    Говоря о dir(), вы можете использовать эту функцию для проверки методов и атрибутов, доступных в конкретном объекте:
    pre class="EnlighterJSRAW" data-enlighter-language="python">
    >>> dir(str)
    ['__add__', '__class__', ..., 'title', 'translate', 'upper', 'zfill']

    >>> dir(tuple)
    ['__add__', '__class__', ..., 'count', 'index']

    Когда вы вызываете dir() с именем объекта Python в качестве аргумента, функция пытается вернуть список допустимых атрибутов для этого конкретного объекта. Это удобный способ получить представление о том, что может делать данный объект.

    Инструменты для программирования на Python    ↑

    Есть три основных подхода к программированию на Python. Вы уже использовали один из них, интерактивный интерпретатор Python, также известный как цикл чтения-оценки-печати (REPL). Несмотря на то, что REPL весьма полезен для тестирования небольших фрагментов кода и экспериментов, вы не можете сохранить свой код для дальнейшего использования.

    Чтобы сохранить и повторно использовать свой код, необходимо создать скрипт или модуль Python. Оба они представляют собой простые текстовые файлы с расширением .py (или .pyw в Windows). Для создания скриптов и модулей вы можете использовать редактор кода или интегрированную среду разработки (IDE), которые являются вторым и третьим подходами к написанию кода на Python.

    REPL (циклы чтения-оценки-печати)    ↑

    Хотя вы можете создавать функции в интерактивном сеансе, вы обычно используете REPL для однострочных выражений и операторов или для коротких составных операторов, чтобы быстро получить обратную связь по вашему коду. Запустите свой интерпретатор Python и введите следующее:

    >>> 24 + 10
    34
    

    Интерпретатор просто вычисляет 24 + 10, складывая два числа, и выводит сумму 34. Теперь попробуйте еще одно:

    >>> import this
    

    Найдите минутку, чтобы прочитать вывод. В нем изложены некоторые важные принципы Python, которые помогут вам писать лучше и больше кода Pythonic.

    До сих пор вы использовали стандартный Python REPL, который поставляется с вашим текущим дистрибутивом Python. Однако это не единственный REPL. Сторонние REPL предоставляют множество полезных функций, такие как подсветка синтаксиса, автозавершение кода и т.д. Вот несколько популярных вариантов:

    • IPython предоставляет богатый инструментарий, который поможет вам программировать на Python в интерактивном режиме.
    • bpython - это интерфейс интерпретатора Python для Linux, BSD, macOS и Windows.
    • Ptpython - это Python REPL, который также работает в Linux, BSD, macOS и Windows.

    Помните, что как только вы закроете сеанс REPL, ваш код исчезнет. Другими словами, код, введенный в REPL, непостоянен, поэтому вы не можете использовать его повторно. Как разработчику вам нужен код, который можно использовать повторно, чтобы сэкономить драгоценные нажатия клавиш. В этой ситуации пригодятся редакторы кода и IDE.

    Редакторы кода    ↑

    Второй подход к программированию на Python - использование редактора кода. Некоторые люди предпочитают интегрированную среду разработки (IDE), но редактор кода часто лучше для учебных целей. Почему? Потому что, когда вы изучаете что-то новое, вы хотите избавиться от как можно большего количества слоев сложности. Добавление сложной IDE в эту смесь может усложнить задачу изучения Python.

    Программа Python в своей простой форме состоит из строк текста (кода), сохраненных в файле с расширением .py или .pyw. Вы можете написать код Python в чем-то столь же простом, как Блокнот (программа) в Windows, но нет причин подвергать себя таким испытаниям, поскольку есть гораздо лучшие варианты.

    По своей сути редактор кода должен предоставлять несколько функций, помогающих программистам создавать программы. В большинстве случаев вы можете настроить редактор кода в соответствии со своими потребностями и стилем. Так,что нужно искать в редакторе кода? Ответ на этот вопрос может зависеть от ваших личных потребностей, но в целом вы должны искать по крайней мере следующие особенности:

    Взгляните на следующий пример сравнения:

    Код в редакторе вверху (Sublime Text) более читабелен благодаря выделению синтаксиса и нумерации строк. Редактор также выявляет три ошибки, одна из которых является критической. Вы можете понять, какой именно?

    В то же время редактор внизу (Блокнот) не отображает ошибки, и он неприятен для глаз, поскольку он черно-белый. Вот неполный список некоторых современных редакторов кода, которые вы можете использовать:

    • Visual Studio Code - это полнофункциональный редактор кода, доступный для платформ Linux, macOS и Windows.
    • Sublime Text 3 - мощный кроссплатформенный редактор кода.
    • Gedit также является кроссплатформенным и устанавливается в некоторых дистрибутивах Linux, использующих GNOME.
    • Notepad++ - тоже отличный редактор, но только для Windows.
    • Vim доступен для Mac, Linux и Windows.
    • GNU Emacs бесплатен и доступен на любой платформе.

    Когда дело доходит до редакторов кода, существует множество различных вариантов, как бесплатных, так и коммерческих. Проведите исследование и не бойтесь экспериментировать! Помните, что ваш редактор кода должен помогать вам придерживаться стандартов кодирования Python, передовых методов и идиом.

    IDE (интегрированные среды разработки)    ↑

    IDE - это программа, предназначенная для разработки программного обеспечения. IDE обычно объединяют несколько функций, таких как редактирование кода, отладка, контроль версий, возможность сборки и запуска вашего кода и т.д. Существует множество доступных IDE, поддерживающих Python или специфичных для Python. Вот три популярных примера:

    • IDLE - это интегрированная среда разработки и обучения Python. Вы можете использовать IDLE в интерактивном режиме точно так же, как и интерпретатор Python. Вы также можете использовать его для повторного использования кода, поскольку вы можете создавать и сохранять свой код с помощью IDLE. Если вы заинтересованы в использовании IDLE, ознакомьтесь с разделом «Начало работы с Python IDLE».
    • PyCharm - это полнофункциональный Python-конкретная IDE, разработанная JetBrains. Если вы заинтересованы в его использовании, ознакомьтесь с PyCharm для продуктивной разработки на Python (Руководство). Он доступен на всех основных платформах и поставляется в бесплатных версиях Edu и Community, а также в платной версии Professional.
    • Thonny новичок-дружественная IDE, которая позволит вам сразу же начать работать с Python. Если вы думаете об использовании Thonny, попробуйте Thonny: редактор Python для начинающих.

    Этот список IDE далеко не полный. Он предназначен для того, чтобы дать вам некоторые рекомендации о том, как получить подходящую среду разработки Python для вас. Исследуйте и экспериментируйте, прежде чем сделать свой выбор.

    Стиль кода Python    ↑

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

    Большинство редакторов кода и IDE, которые поддерживают Python внутренне, реализуют автоматические проверки для поиска и выявления нарушений PEP 8. Это поможет вам постоянно улучшать стиль вашего кода, а также укрепит в вашей памяти рекомендации PEP 8.

    Вы также можете воспользоваться преимуществами линтеров кода, таких как Flake8, Pylint и pycodestyle. Вы даже можете использовать средства форматирования кода, такие как Black и isort, для единообразного форматирования кода. Некоторые из этих инструментов удобно интегрированы в некоторые из доступных в настоящее время редакторов кода и IDE.

    Если вы хотите узнать больше о том, как можно улучшить качество кода с помощью PEP 8 и других передовых методов стиля кода,затем ознакомьтесь с разделом «How to Write Beautiful Python Code With PEP» и «Python Code Quality: Tools & Best Practices».

    Получите дополнительные функции в Python    ↑

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

    Python используется уже почти три десятилетия. У него невероятно большое сообщество разработчиков, и вполне вероятно, что кто-то еще столкнулся с той же проблемой, что и вы. Проведя небольшое исследование, вы сможете найти фрагмент кода, библиотеку, фреймворк или другое решение, которое сэкономит вам много времени и усилий.

    В первую очередь следует поискать стандартную библиотеку Python.Если вы там ничего не нашли, вы также можете посмотреть индекс пакетов Python (PyPI). Наконец, вы можете ознакомиться с некоторыми другими сторонними библиотеками.

    Стандартная библиотека    ↑

    Одна из замечательных особенностей Python - это множество доступных модулей, пакетов и библиотек, как встроенных в ядро ​​Python, так и предоставляемых сторонними разработчиками. Эти модули, пакеты и библиотеки могут быть весьма полезны в повседневной работе программиста на Python. Вот некоторые из наиболее часто используемых встроенных модулей:

    • math для математических операций
    • random для генерации псевдослучайных чисел
    • re для работы с регулярными выражениями
    • os для использования функций, зависящих от операционной системы
    • itertools для работы с итераторами
    • collections для специализированных типов данных контейнеров

    Например, здесь вы импортируете math для использования числа pi, находите квадратный корень числа с помощью sqrt() и возвести число в степень с помощью функции pow():

    >>> import math
    
    >>> math.pi
    3.141592653589793
    
    >>> math.sqrt(121)
    11.0
    
    >>> math.pow(7, 2)
    49.0
    

    После импорта math вы можете использовать любую функцию или объект, определенный в этом модуле. Если вам нужен полный список функций и объектов, которые живут в math, можно запустить что-то вроде dir(math) в интерактивном сеансе.

    Вы также можете импортировать определенные функции прямо из математического или любого другого модуля:

    >>> from math import sqrt
    >>> sqrt(121)
    11.0
    

    Этот тип оператора импорта переносит имя sqrt() в ваше текущее пространство имен, поэтому вы можете использовать его напрямую, без необходимости ссылаться на содержащий модуль.

    Если вы используете модули, такие как math или random, убедитесь, что не используете те же имена для ваших пользовательских модулей, функций или объектов. В противном случае вы можете столкнуться с конфликтом имен,что может вызвать неожиданное поведение.

    Индекс пакета Python и pip    ↑

    Индекс пакетов Python, также известный как PyPI (произносится как "pie pea eye" или «пирог с глазком»), представляет собой массивный репозиторий пакетов Python, который включает фреймворки, инструменты, пакеты и библиотеки. Вы можете установить любой пакет PyPI с помощью pip. Это один из рекомендуемых инструментов для управления сторонними модулями, пакетами и библиотеками в Python.

    Новые программисты часто сталкиваются с препятствиями, когда следят за примером и видят ModuleNotFoundError: нет модуля с именем module_x при запуске кода. Это означает, что код зависит от module_x, но этот модуль не установлен в текущей среде Python, что создает нарушенную зависимость. Такие модули, как module_x, можно установить вручную с помощью pip.

    Например, предположим, что вы пытаетесь запустить приложение, использующее pandas, но на вашем компьютере не установлена ​​эта библиотека. В этом случае вы можете открыть свой терминал и использовать pip следующим образом:

    $ pip3 install pandas
    

    Эта команда загружает pandas и их зависимости из PyPI и устанавливает их в вашу текущую среду Python. После завершения установки вы можете снова запустить приложение, и, если нет другой нарушенной зависимости, код должен работать.

    Выведите свои навыки Python на новый уровень    ↑

    Кодирование похоже на езду на велосипеде    ↑

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

    Stack Overflow - еще одно важное место для поиска ответов. В разделе вопросов и ответов по программированию есть отличные объяснения по темам Python. Понимание нотации срезов и ручное создание (выброс) исключения в Python - лишь два действительно отличных примера.

    Если у вас возникла проблема, попробуйте следующие предложения:

    • Прекратите кодировать!
    • Возьмите лист бумаги и простыми словами наметьте, как решить проблему. При необходимости используйте блок-схему.
    • Не используйте блок try and except, пока ваш код не заработает. Эта попытка может подавить ценные сообщения об ошибках, которые помогают выявить проблемы в вашем коде.
    • Используйте print(), чтобы быстро проверить свои переменные и убедиться, что они имеют ожидаемое значение. Это эффективное средство для быстрого решения проблем.
    • Используйте технику отладки резиновой утки.
    • Построчно объясните утке свой код. Вы можете найти решение своих проблем в процессе.
    • Используйте трассировщик Python, если вы все еще в тупике. Этот инструмент позволяет пошагово выполнять код по мере его выполнения. В трассировщике Python есть примеры, которые помогут вам в случае необходимости.

    И последнее и важное замечание: разочарованный мозг не поможет. Когда вы начинаете раздражаться из-за того, что что-то не работает, сделайте перерыв, чтобы очистить свой разум. Отправляйтесь на пробежку или займитесь чем-нибудь другим. Вы будете поражены, насколько это может быть эффективно. Часто вы возвращаетесь свежим взглядом и видите простую опечатку, ключевое слово с ошибкой или что-то подобное.

    Консультации начинающих программистов Python    ↑

    Проверьте свои знания    ↑

    Если вы прочитали до этого момента, то, возможно, захотите ответить на некоторые вопросы, связанные с Python, и проверить, что вы узнали. Идите вперед и проверьте свои знания:

    1. Что означает, что Python - сильный язык с динамической типизацией?
    2. Как запустить интерпретатор Python?
    3. Как вы определяете переменную?
    4. В чем разница между именем переменной и значением переменной?
    5. Какие типы данных встроены в Python?
    6. В чем разница между целым числом и числом с плавающей запятой?
    7. Что такое логические значения?
    8. Что делает оператор%?
    9. В чем разница между списком и кортежем?
    10. Что такое словарь?
    11. Почему вы должны использовать комментарии в своем коде?
    12. Что делает help() и когда это полезно?
    13. Что делает dir() и когда это полезно?
    14. В чем разница между синтаксическими ошибками и исключениями?
    15. Что такое pip?

    Теперь откройте ваш текстовый редактор и создайте новый файл с именем training.py. Скопируйте и вставьте в него следующий код:

    # Измените переменные так, чтобы все операторы оценивались как True.
    
    var1 =
    var2 =
    var3 =
    var4 =
    var5 =
    var6 =
    
    # Ничего не редактируйте под этим комментарием
    
    # Числа
    print(isinstance(var1, int))
    print(isinstance(var6, float))
    print(var1 < 35)
    print(var1 <= var6)
    
    # Строки
    print(isinstance(var2, str))
    print(var2[5] == "n" and var2[0] == "p")
    
    # Списки
    print(isinstance(var3, list))
    print(len(var3) == 5)
    
    # Кортежи
    print(isinstance(var4, tuple))
    print(var4[2] == "Hello, Python!")
    
    # Словари
    print(isinstance(var5, dict))
    print("happy" in var5)
    print(7 in var5.values())
    print(var5.get("egg") == "salad")
    print(len(var5) == 3)
    var5["tuna"] = "fish"
    print(len(var5) == 3)
    

    Следуя инструкциям, обновите код. Когда вы закончите, запустите код со своего терминала, чтобы протестировать его с помощью команды python training.py. Удачи!

    Заключение    ↑

    Научиться использовать Python и вывести свои навыки программирования на новый уровень - стоящие усилия. Python - популярный, производительный и мощный язык программирования высокого уровня, пользующийся большим спросом. В этом руководстве вы узнали основные концепции Python и начали применять их в своем коде Python.

    • В этом уроке вы узнали:
    • Что такое Python и почему вам следует подумать об его использовании
    • Какой базовый синтаксис Python вам следует изучить, чтобы начать писать код
    • Как вы можете обрабатывать ошибки в Python
    • Как быстро получить помощь по Python
    • Какой стиль кода вы должны использовать в своем коде
    • Где получить дополнительные функции, не изобретая велосипед
    • Где получить качественный контент Python и развить свои навыки

    Вы также создали свою первую программу Python и запустили ее на своем компьютере. Обладая всеми этими знаниями, вы можете глубже погрузиться в Python и выучить его гораздо больше.

    По мотивам How to Use Python: Your First Steps

Опубликовано Вадим В. Костерин

ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль).

Оставьте комментарий

Ваш адрес email не будет опубликован.