Как работает Пайтон и PEP8

Содержание:

  1. Как приступать к второму модулю?
  2. Основы языка
  3. Интерпретатор Python и его регистрозависимость
  4. Отступы: сердце Python
  5. Вывод информации: функция print()
  6. Комментарии: общение с будущим вами и другими разработчиками
  7. PEP8
  8. Практика

Теория

Как приступать к второму модулю?

Note

В этом курсе мы построим работу и учебу таким образом

Создаем папку в ide c названием модуля modul 2 python base

в нем файлик python_base.py


Основы языка


1. Интерпретатор Python и его регистрозависимость

Note

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

Что такое интерпретатор и как установить Python, мы разбирали в 01.03 - Подготовка окружения.

Note

“Вам не нужно компилировать весь код перед его запуском.”


Это конечно хорошо, а что значит “компилировать”?

  • Компилировать

    Это когда ты такой код

    Исходный код
    a = 5
    b = 10
    c = a + b
    print(c)

    Переводит в машинный код —> Код, который видит компьютер (машинный код)

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

    10101101 00010101 11011001 10101010
    

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

Note

  • Python - регистрозависимый язык, поэтому выражения print и Print или PRINT представляют разные выражения. И если вместо метода print для вывода на консоль мы попробуем использовать метод Print:

    Print("Hello World")

    То у нас ничего не получится.


    Практика

Example

В начале мы создали файлик “Пайтон бейз”

В нем вы должны протестировать правда ли Пайтон регистро зависимый


Задание#1

Выяснить какой из вариантов рабочий print и Print или PRINT

  • Для того чтобы запустить код нужно нажать сюда

2. Компиляция VS Интерпретатор

Почему Python не компилируется заранее?

Note

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

  1. Компилирует код в байт-код (промежуточный код).
  2. Интерпретирует байт-код и исполняет его.

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

Как компиляция происходит например в Джаве?

Note

В JAVA перед каждым запуском кода, нужно сделать явную компиляцию, перевести JAVA код в —>байт код—> а потом еще в машинный код (Это занимает больше времени)

Note

Когда как в Python : Python код—>Байт код и он уже сразу выполняется

Получается Python, тоже немного занимается Компиляцией

Note

Python действительно компилирует ваш код в байт-код (своего рода промежуточный код) перед его выполнением. Этот процесс называется компиляцией в байт-код, и это происходит “за кулисами”, поэтому пользователю кажется, что Python выполняет всё на лету.

Как это происходит в Python:

  1. Ваш код (исходный):

    a = 5
    b = 10
    c = a + b
    print(c)
     
  2. Python компилирует этот код в байт-код:

Note

Это файл с расширением .pyc, который хранится в папке __pycache__. Байт-код может выглядеть так (в интерпретации Python):

```
LOAD_CONST 5
STORE_NAME a
LOAD_CONST 10
STORE_NAME b
LOAD_NAME a
LOAD_NAME b
BINARY_ADD
PRINT_ITEM
```

3. Интерпретатор Python читает байт-код и выполняет команды построчно. Это позволяет работать быстро и эффективно.


Note

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

Таблица: Плюсы и минусы интерпретируемых и компилируемых языков

КритерийИнтерпретируемые языки (Python)Компилируемые языки (Java, C++)
Скорость выполнения⛔ Медленнее, так как код выполняется построчно интерпретатором.✅ Быстрее, так как код компилируется в машинный язык до выполнения.
Время запуска✅ Быстрее, не требует явной компиляции перед запуском.⛔ Требует времени на компиляцию перед выполнением.
Отладка✅ Легче отлаживать, так как ошибки обнаруживаются во время выполнения.⛔ Ошибки обнаруживаются только во время компиляции.
Переносимость✅ Платформонезависимость (требуется интерпретатор).✅ Высокая переносимость при наличии соответствующего компилятора.
Оптимизация⛔ Меньше возможностей для низкоуровневой оптимизации.✅ Возможности глубокой оптимизации благодаря компиляции.
Типизация✅ Динамическая, позволяет быстрее писать код.⛔ Статическая, требует явного указания типов, что увеличивает код.
Простота использования✅ Легче начать и быстрее освоить.⛔ Сложнее освоить, особенно для новичков.
Поддержка большого кода⛔ Труднее масштабировать для больших приложений.✅ Более подходящий для крупных проектов благодаря строгой структуре.
Требования к памяти⛔ Выше, так как интерпретатор работает в реальном времени.✅ Эффективнее использует память после компиляции.

Выводы:

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

3. Отступы: сердце Python

Note

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

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

Если сравнивать код с рассказом, то отступы помогают понять, когда начинается новая “глава” или “подглава”. Например, если у вас есть условие (это как заголовок главы в книге), то все действия, которые должны произойти при выполнении этого условия, записываются с отступом вправо (как текст под заголовком).

Пример с отступами:

if условие:
    действие1
    действие2

Здесь действие1 и действие2 выполнятся только если условие истинно, потому что они “вложены” внутрь условия благодаря отступам. Это как если бы внутри коробки “Если условие истинно” лежали маленькие коробочки “Действие1” и “Действие2”.

Пример без отступов (неправильно):

if условие:
действие1
действие2
 
#ввиде 4 пробелов 
 

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

Практика

Example

в файлике “Пайтон бейз”

В нем вы должны протестировать правда ли что Отступы: сердце Python


  • Задание#2

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

    def my_function():
    print("Hello")
        print("World")
    print("End of function")
     
    print(my_function())
    def my_function():
        print("Hello")
        print("World")
        print("End of function")
     
    print(my_function())

    Вопросы:

    1. Почему некоторые из этих строк могут вызвать ошибку?
    2. Что нужно изменить, чтобы код работал корректно?
    3. Можете ли вы объяснить, почему Python использует отступы вместо фигурных скобок?

    Подсказка: Попробуйте исправить отступы и запустить код заново, чтобы убедиться в правильности его работы.

4. Вывод информации: Функция**print()**

Note

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

Примеры использования:

print("Hello world!")
print("Hello world!", "something else", 5)

Note

Что такое аргументы? Аргументы — это информация или данные, которые вы передаете в функцию, чтобы она что-то с ними сделала. В случае с print(5), число 5 — это аргумент.

**print(5)**

Здесь вы говорите компьютеру: “Выведи слова ‘Здравствуй, мир!’ на экран”. Компьютер “печатает” этот текст там, где вы можете его увидеть — обычно в консоли или терминале.

  • print(5) просит компьютер показать число 5.
  • print("Я учу Python") просит компьютер показать текст “Я учу Python”.

Практика

Example

в файлике “Пайтон бейз”


  • Задание#4

    Поиграйтесь в разными аргументами в print

5. Комментарии: общение с будущим вами и другими разработчиками

Как работает Python и что такое комментарии?

Note

Python — это интерпретируемый язык программирования, что значит, что код исполняется построчно интерпретатором Python. Давайте разберёмся, как Python обрабатывает ваш код и почему он игнорирует комментарии.


Как Python понимает, что запускать?

  1. Считывание кода:

    Когда вы запускаете файл Python, интерпретатор читает его строчку за строчкой. Например, у вас есть файл example.py, в котором написано:

    print("Hello, world!")
    # print("This line won't execute")
     

    Python увидит первую строку и выполнит её, а затем просто проигнорирует комментарий (вторую строку).

  2. Игнорирование комментариев:

Note

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


Что такое комментарии?

Note

Комментарии — это строки текста, которые Python не выполняет. Они создаются для объяснения кода. В Python есть два основных типа комментариев:

  1. Однострочные комментарии:

Note

Используется символ #. Всё, что находится после #, игнорируется интерпретатором.

```python
# Это однострочный комментарий
print("Эта строка выполнится")  # А это комментарий в конце строки

```

Note

  • Также они могут располагаться на той же строке, что и инструкции языка, после выполняемых инструкций:
print("Hello World")  # Это тоже комментарий
  1. Многострочные комментарии:

Note

Используются тройные кавычки (''' или """). Всё между этими кавычками считается текстом и тоже игнорируется интерпретатором.

Однако такие комментарии чаще используются для документации функций или модулей.

```python
'''
Это многострочный комментарий.
Он может занимать несколько строк.
'''
print("Эта строка выполнится")

```

Практика

Example

в файлике “Пайтон бейз”


  • Задание#5

    Попробуйте написать комментарий в своей IDE, комменатрий не должен ломать систему, т.е Питон должен его игнорировать и вы сможете запустить свой код

    5.1. Попробуйте особый вид коммтариев “блочный”


Почему Python “не видит” комментарии?

Note

Интерпретатор Python устроен так, что перед выполнением строки он проверяет её содержание:

  1. Если строка начинается с #, Python сразу пропускает её.
  2. Если строка находится внутри тройных кавычек (''' или """) и не связана с документацией (например, не стоит сразу после определения функции), она также игнорируется.

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


Как Python видит файл в памяти?

Note

Python обрабатывает файл как набор инструкций. Вот как он примерно видит код:

  1. Код:

    Выполняет только те строки, которые являются инструкциями (например, вызов print()).

    print("Эта строка будет выполнена")
     
  2. Комментарии:

    Пропускает строки, которые начинаются с # или находятся внутри тройных кавычек.

    # Эта строка будет пропущена интерпретатором
     
  3. Документация:

    Если тройные кавычки используются сразу после функции, класса или модуля, Python считает их строками документации (docstring) и сохраняет для справки, но не выполняет.

    def greet():
        """Эта функция выводит приветствие"""
        print("Привет, мир!")
     

Почему это важно?

  1. Понятность кода:

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

  2. Удобство отладки:

    Если вы хотите временно отключить часть кода, вы можете закомментировать её, чтобы Python её не выполнял:

    # print("Эта строка не выполнится")
    print("А эта выполнится")
     
  3. Документация:

    Комментарии и docstrings часто используются для создания автоматической документации с помощью инструментов, таких как Sphinx.



PEP8

Код должен соответствовать PEP8 (Style Guide for Python Code)

Note

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

  1. Отступы:

    • Используйте 4 пробела на каждый уровень отступа, а не табуляцию. Это делает код более читабельным и структурированным.
     
    def example():
        if True:
            print("Отступы 4 пробела")
     
  2. Длина строки:

    • Максимальная длина строки — 79 символов для обычного кода и 72 символа для строк документации (docstring).
    • Если строка слишком длинная, её можно перенести с помощью скобок () или обратного слэша \.
  3. Пробелы:

    • Вокруг операторов: добавляйте пробелы вокруг операторов (например, =, +, ), чтобы код был читаемым.
     
    x = 1 + 2
     
    • Внутри скобок: не добавляйте пробелы внутри скобок или квадратных скобок
     
    list_example = [1, 2, 3]  # Правильно
    list_example = [ 1, 2, 3 ]  # НЕ правильно
  4. Именование переменных и функций:

    • Используйте snake_case для функций и переменных (my_variable, calculate_sum()).
    • Для классов используйте CamelCase (MyClass).
  5. Строки документации (Docstrings):

    • Пишите документацию к функциям, методам и классам. Используйте тройные кавычки """ для строк документации.
     
    def my_function():
        """Описание функции, что она делает и как работает."""
        pass
     
  6. Импортирование:

    • Импортируйте каждый модуль на отдельной строке.
    • Импорты должны идти в начале файла, следуя порядку: стандартные библиотеки, сторонние библиотеки, локальные модули.
     
    import os
    import sys
    from mymodule import MyClass
     
  7. Пустые строки:

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

Пример кода, соответствующего PEP 8:

 
class Calculator:
    """Класс для простых математических операций."""
 
    def add(self, a, b):
        """Возвращает сумму двух чисел."""
        return a + b
 
    def subtract(self, a, b):
        """Возвращает разницу двух чисел."""
        return a - b
 

Note

Соблюдение PEP 8 делает код более читаемым и помогает команде работать с единым стилем кода.


Практическое задание 🧪

  1. Сделать практические задания по Основам языка
  2. Выписать в миро основы языка Python
  3. Выписать в миро Основные правила PEP8

⬅️ Назад: 02.00 - Как отключить автозаполнение | Далее: 02.02 - Переменные и Типы данных ➡️ Модуль: 02 - MOC