Комментарии: общение с будущим вами и другими разработчиками
PEP8
Практика
Теория
Как приступать к второму модулю?
Note
В этом курсе мы построим работу и учебу таким образом
Создаем папку в ide c названием модуля modul 2 python base
в нем файлик python_base.py
Основы языка
1. Интерпретатор Python и его регистрозависимость
Note
Python — это интерпретируемый язык программирования, что означает, что код выполняется построчно интерпретатором Python. Вам не нужно компилировать весь код перед его запуском.
“Вам не нужно компилировать весь код перед его запуском.”
Это конечно хорошо, а что значит “компилировать”?
Компилировать
Это когда ты такой код
Исходный кодa = 5b = 10c = a + bprint(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 выполняет следующие шаги:
Компилирует код в байт-код (промежуточный код).
Интерпретирует байт-код и исполняет его.
Это делает Python удобным для быстрого написания и тестирования кода, но может замедлить выполнение программ по сравнению с компилируемыми языками.
Как компиляция происходит например в Джаве?
Note
В JAVA перед каждым запуском кода, нужно сделать явную компиляцию, перевести JAVA код в —>байт код—> а потом еще в машинный код (Это занимает больше времени)
Note
Когда как в Python : Python код—>Байт код и он уже сразу выполняется
Получается Python, тоже немного занимается Компиляцией
Note
Python действительно компилирует ваш код в байт-код (своего рода промежуточный код) перед его выполнением. Этот процесс называется компиляцией в байт-код, и это происходит “за кулисами”, поэтому пользователю кажется, что Python выполняет всё на лету.
Как это происходит в Python:
Ваш код (исходный):
a = 5b = 10c = a + bprint(c)
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())
Вопросы:
Почему некоторые из этих строк могут вызвать ошибку?
Что нужно изменить, чтобы код работал корректно?
Можете ли вы объяснить, почему Python использует отступы вместо фигурных скобок?
Подсказка: Попробуйте исправить отступы и запустить код заново, чтобы убедиться в правильности его работы.
4. Вывод информации: Функция**print()**
Note
Функция print() используется для вывода информации пользователю. В качестве аргументов функции может быть передано любое количество объектов, разделенных запятой.
Что такое аргументы? Аргументы — это информация или данные, которые вы передаете в функцию, чтобы она что-то с ними сделала. В случае с print(5), число 5 — это аргумент.
**print(5)**
Здесь вы говорите компьютеру: “Выведи слова ‘Здравствуй, мир!’ на экран”. Компьютер “печатает” этот текст там, где вы можете его увидеть — обычно в консоли или терминале.
print(5) просит компьютер показать число 5.
print("Я учу Python") просит компьютер показать текст “Я учу Python”.
Практика
Example
в файлике “Пайтон бейз”
Задание#4
Поиграйтесь в разными аргументами в print
5. Комментарии: общение с будущим вами и другими разработчиками
Как работает Python и что такое комментарии?
Note
Python — это интерпретируемый язык программирования, что значит, что код исполняется построчно интерпретатором Python. Давайте разберёмся, как Python обрабатывает ваш код и почему он игнорирует комментарии.
Как Python понимает, что запускать?
Считывание кода:
Когда вы запускаете файл Python, интерпретатор читает его строчку за строчкой. Например, у вас есть файл example.py, в котором написано:
print("Hello, world!")# print("This line won't execute")
Python увидит первую строку и выполнит её, а затем просто проигнорирует комментарий (вторую строку).
Игнорирование комментариев:
Note
Комментарии предназначены для программистов, чтобы объяснить, как работает код. Они помогают читать и понимать программу, но не являются частью её выполнения. Python просто пропускает комментарии при интерпретации.
Что такое комментарии?
Note
Комментарии — это строки текста, которые Python не выполняет. Они создаются для объяснения кода. В Python есть два основных типа комментариев:
Однострочные комментарии:
Note
Используется символ #. Всё, что находится после #, игнорируется интерпретатором.
```python
# Это однострочный комментарий
print("Эта строка выполнится") # А это комментарий в конце строки
```
Note
Также они могут располагаться на той же строке, что и инструкции языка, после выполняемых инструкций:
print("Hello World") # Это тоже комментарий
Многострочные комментарии:
Note
Используются тройные кавычки (''' или """). Всё между этими кавычками считается текстом и тоже игнорируется интерпретатором.
Однако такие комментарии чаще используются для документации функций или модулей.
```python
'''
Это многострочный комментарий.
Он может занимать несколько строк.
'''
print("Эта строка выполнится")
```
Практика
Example
в файлике “Пайтон бейз”
Задание#5
Попробуйте написать комментарий в своей IDE, комменатрий не должен ломать систему, т.е Питон должен его игнорировать и вы сможете запустить свой код
5.1. Попробуйте особый вид коммтариев “блочный”
Почему Python “не видит” комментарии?
Note
Интерпретатор Python устроен так, что перед выполнением строки он проверяет её содержание:
Если строка начинается с #, Python сразу пропускает её.
Если строка находится внутри тройных кавычек (''' или """) и не связана с документацией (например, не стоит сразу после определения функции), она также игнорируется.
Такой подход позволяет программистам добавлять пояснения, не влияя на выполнение программы.
Как Python видит файл в памяти?
Note
Python обрабатывает файл как набор инструкций. Вот как он примерно видит код:
Код:
Выполняет только те строки, которые являются инструкциями (например, вызов print()).
print("Эта строка будет выполнена")
Комментарии:
Пропускает строки, которые начинаются с # или находятся внутри тройных кавычек.
# Эта строка будет пропущена интерпретатором
Документация:
Если тройные кавычки используются сразу после функции, класса или модуля, Python считает их строками документации (docstring) и сохраняет для справки, но не выполняет.
def greet(): """Эта функция выводит приветствие""" print("Привет, мир!")
Почему это важно?
Понятность кода:
Комментарии помогают другим программистам (или вам самим спустя время) понять, зачем написан тот или иной кусок кода.
Удобство отладки:
Если вы хотите временно отключить часть кода, вы можете закомментировать её, чтобы Python её не выполнял:
# print("Эта строка не выполнится")print("А эта выполнится")
Документация:
Комментарии и docstrings часто используются для создания автоматической документации с помощью инструментов, таких как Sphinx.
PEP8
Код должен соответствовать PEP8 (Style Guide for Python Code)
Note
PEP 8 — это руководство по стилю написания кода на Python, которое помогает сделать код читаемым и единообразным. Вот основные понятия, которые стоит учитывать:
Отступы:
Используйте 4 пробела на каждый уровень отступа, а не табуляцию. Это делает код более читабельным и структурированным.
def example(): if True: print("Отступы 4 пробела")
Длина строки:
Максимальная длина строки — 79 символов для обычного кода и 72 символа для строк документации (docstring).
Если строка слишком длинная, её можно перенести с помощью скобок () или обратного слэша \.
Пробелы:
Вокруг операторов: добавляйте пробелы вокруг операторов (например, =, +, ), чтобы код был читаемым.
x = 1 + 2
Внутри скобок: не добавляйте пробелы внутри скобок или квадратных скобок
Используйте snake_case для функций и переменных (my_variable, calculate_sum()).
Для классов используйте CamelCase (MyClass).
Строки документации (Docstrings):
Пишите документацию к функциям, методам и классам. Используйте тройные кавычки """ для строк документации.
def my_function(): """Описание функции, что она делает и как работает.""" pass
Импортирование:
Импортируйте каждый модуль на отдельной строке.
Импорты должны идти в начале файла, следуя порядку: стандартные библиотеки, сторонние библиотеки, локальные модули.
import osimport sysfrom mymodule import MyClass
Пустые строки:
Используйте пустые строки для разделения классов и функций, а также для логического разделения кода внутри функций. Например, между функциями ставьте 2 пустые строки, а между методами внутри класса — одну.
Пример кода, соответствующего PEP 8:
class Calculator: """Класс для простых математических операций.""" def add(self, a, b): """Возвращает сумму двух чисел.""" return a + b def subtract(self, a, b): """Возвращает разницу двух чисел.""" return a - b
Note
Соблюдение PEP 8 делает код более читаемым и помогает команде работать с единым стилем кода.