- Что такое python?
Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью. Является полностью объектно-ориентированным, т.к. все элементы в нем объекты.
Python - это как волшебный язык, который позволяет тебе разговаривать с компьютером.
Представь, что у тебя есть волшебная книга, в которой записаны специальные слова и команды.
Слова обозначают предметы, действия или идеи.
Команды говорят компьютеру, что он должен делать с этими словами.
Например:
Слова: яблоко, красный, стол.
Команда: нарисовать красное яблоко на столе.
Когда ты пишешь эту команду в своей волшебной книге, компьютер читает ее и творит волшебство:
он рисует красное яблоко на столе на экране.
Вот еще несколько примеров того, что можно делать с помощью Python:
Писать игры: создавать персонажей, придумывать правила, управлять ходом игры.
Создавать веб-сайты: делать красивые и интересные страницы в интернете.
Анализировать данные: изучать большие массивы информации, делать выводы и открытия.
Управлять роботами: программировать роботов для выполнения различных задач.
Python - это очень мощный инструмент, который может помочь тебе творить чудеса!
- В каком году написана первая статья про python?
Первая статья о Python была написана в 1991 году.
Гвидо ван Россум, создатель языка Python, опубликовал код Python 0.9.0 в феврале 1991 года на новостной группе Usenet alt.sources.
В этой статье он представил Python как новый язык программирования, предназначенный для простоты использования и читаемости.
Хотя эта статья не была формальной публикацией в научном журнале, она стала отправной точкой для Python, который с тех пор стал
одним из самых популярных языков программирования в мире.
Вот несколько интересных фактов о первых днях Python:
Первоначальное название Python: Сначала Python назывался "Limbo", но позже был переименован в честь телешоу "Monty Python's Flying Circus".
Вдохновение: Python был вдохновлен другими языками программирования, такими как ABC, Modula-2 и Setl.
Цели: Гвидо ван Россум хотел создать язык программирования, который был бы простым, мощным и универсальным.
С момента своего первого выпуска Python претерпел множество изменений, но он сохранил свою простую и читаемую природу.
Сегодня Python используется миллионами людей во всем мире для различных задач, от разработки веб-сайтов до научных исследований.
- Какие типы данных есть в python? На какие классы делятся?
Основные типы данных:
Числа: целые числа (например, 1, 2, 3) и числа с плавающей запятой (например, 1.5, 3.14).
Строки: тексты, заключенные в кавычки (например, "Привет!", "Я учусь Python").
Списки: упорядоченные коллекции различных элементов (например, ["яблоко", "банан", "огурец"]).
Словари: коллекции ключ-значение, где каждый ключ связан со своим значением (например, {"имя": "Вася", "возраст": 30}).
Кортежи: неизменяемые списки, похожие на списки, но их нельзя изменить (например, (1, 2, 3)).
Множества: неупорядоченные коллекции уникальных элементов (например, {1, 2, 3, 4}).
Булевы значения: True (истина) и False (ложь).
Классы типов данных:
Простые типы: числа, строки, булевы значения.
Составные типы: списки, словари, кортежи, множества.
Простые типы хранятся непосредственно в памяти.
Составные типы состоят из других данных и ссылаются на них.
Важно:
Каждый тип данных имеет свои особенности и используется для разных целей.
Правильный выбор типа данных важен для написания эффективного и понятного кода.
Вот несколько примеров использования разных типов данных:
Числа: для математических вычислений, подсчета значений.
Строки: для работы с текстом, создания сообщений, хранения имен.
Списки: для хранения упорядоченных коллекций данных, например, списков покупок или списков задач.
Словари: для хранения информации в виде ключ-значений, например, телефонных справочников или настроек программы.
Кортежи: для хранения неизменяемых данных, например, координат или дат.
Множества: для проверки уникальности элементов, например, для поиска повторяющихся слов в тексте.
Булевы значения: для проверки условий, например, "пользователь введен правильный пароль?".
Изменяемые и неизменяемые типы данных в Python
В Python существует два основных класса типов данных по
возможности их изменения:
1. Изменяемые типы данных:
Могут быть изменены после создания.
Значения хранятся в ссылочных объектах.
При изменении одного объекта, ссылающегося на данные, изменяются все остальные ссылки.
Примеры:
Списки (list): [1, 2, 3]
Словари (dict): {'name': 'Вася', 'age': 30}
Множества (set): {1, 2, 3}
2. Неизменяемые типы данных:
Не могут быть изменены после создания.
Значения хранятся в неизменяемых объектах.
Изменение значения создает новый объект.
Примеры:
Строки (str): "Hello, world!"
Кортежи (tuple): (1, 2, 3)
Числа (int, float, complex): 42, 3.14, 1j
Изменяемые типы:
Подходят для хранения динамичных данных, которые часто меняются.
Могут быть менее эффективны в некоторых операциях из-за необходимости отслеживать изменения ссылок.
Требуют осторожности при работе с копиями, чтобы не изменить неожиданно данные.
Неизменяемые типы:
Подходят для хранения статических данных, которые не должны меняться.
Более эффективны в некоторых операциях, так как не требуется отслеживать изменения ссылок.
Гарантируют неизменность данных, что может быть важно для безопасности и последовательности кода.
Выбор типа данных:
Учитывайте:
Нужны ли вам изменяемые или неизменяемые данные?
Какую оперативность требуется от операций с данными?
Как важно гарантировать неизменность данных?
- Что такое лямбда-функция? Какое у неё назначение?
Лямбда-функции: короткие функции "на лету"
Представь, что ты печешь пирог. Тебе нужно много раз замешивать тесто, но каждый раз с немного разными пропорциями ингредиентов.
В обычной ситуации ты бы каждый раз писал рецепт заново, меняя количество муки, сахара и яиц.
Но есть способ проще!
Лямбда-функции Python - это как короткие рецепты, которые ты можешь записывать "на лету", не создавая отдельного файла.
В них ты указываешь параметры (мука, сахар, яйца) и инструкции (что с ними сделать, в какой последовательности добавить).
Вот как выглядит лямбда-функция:
def func(x, y):
return x * y
# Лямбда-эквивалент
lambda x, y: x * y
В чем преимущества лямбда-функций:
Краткость: Записываются в одной строке, экономят время и место.
Простота: Легко понять, что делает функция.
Универсальность: Используются в разных ситуациях, например, с функциями высшего порядка (map, filter, reduce).
Но есть и ограничения:
Ограниченная функциональность: Подходят только для простых вычислений, не поддерживают сложные операции.
Отсутствие имени: Не имеют имени, как обычные функции.
Лямбда-функции - это удобный инструмент для коротких, одноразовых вычислений.
Они делают код более компактным и читаемым.
Но для сложных задач лучше использовать обычные функции.
Вот несколько примеров использования лямбда-функций:
Сортировка списка:
data = [5, 1, 4, 2, 3]
sorted_data = sorted(data, key=lambda x: x**2)
print(sorted_data) # Output: [1, 4, 2, 3, 5]
Вычисление площади круга:
radius = 3
area = lambda r: 3.1415 * r**2
print(area(radius)) # Output: 28.26
Проверка четности числа:
is_even = lambda x: x % 2 == 0
print(is_even(5)) # Output: True
print(is_even(6)) # Output: False
- Что такое PEP 8?
PEP 8: Руководство по стилю кода Python - твой помощник в написании читаемого кода
Представь, что ты пишешь книгу для своих друзей.
Хочешь, чтобы они легко могли ее читать и понимать, правда?
Для этого ты используешь заголовки, абзацы, пунктуацию и делаешь текст аккуратным.
В программировании Python тоже есть свои правила оформления кода.
Эти правила называются PEP 8 (Python Enhancement Proposal 8).
PEP 8 - это как инструкция по написанию "красивого" кода Python.
Она содержит рекомендации по:
Именованию переменных и функций: Используй snake_case (змейный_подчерк): моя_переменная
, функция_обработки
.
Избегай сокращений и аббревиатур.
Отступам: Используй 4 пробела для отступов.
Не используй табуляцию.
Длина строк: Рекомендуемая длина строки - 79 символов.
Используй переносы строк, если необходимо.
Импорты: Используй операторы import
и from
правильно.
Группируй импорты по категориям.
Комментарии: Используй комментарии, чтобы объяснить сложные участки кода.
Делай комментарии лаконичными и понятными.
Соблюдение PEP 8 делает код Python:
Читаемым: Легче понять другим программистам, что делает твой код.
Понятным: Тебе самому будет проще разобраться в своем коде через некоторое время.
Согласованным: Разный код, написанный в соответствии с PEP 8, будет выглядеть единообразно.
PEP 8 - это не строгий набор правил, а скорее набор рекомендаций.
В некоторых случаях ты можешь отступать от них, если это необходимо для читаемости кода.
Вот несколько ресурсов, где можно узнать больше о PEP 8:
Официальный сайт PEP 8: https://peps.python.org/pep-0008/
PEP 8 в простой русской интерпретации: https://letpy.com/python-guide/pep8/
Онлайн-инструмент проверки PEP 8: https://pep8online.com/
Используя PEP 8, ты пишешь код Python, который не только работает правильно, но и выглядит красиво и понятно для других.
- Как получить документацию по атрибутам объекта?
Существует несколько способов получить доступ к документации по атрибутам объекта в Python:
1. Функция help
:
Самый простой способ: вызвать функцию help
с объектом в качестве аргумента.
Пример:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Василий", 30)
help(person)
Выведет подробную информацию о классе Person
, включая его атрибуты, методы и документацию.
2. Специальный атрибут __doc__
:
Каждый объект и метод в Python имеет атрибут __doc__
, который содержит его документацию.
Пример:
class Person:
def __init__(self, name, age):
"""Инициализация объекта Person."""
self.name = name
self.age = age
def say_hello(self):
"""Приветствует пользователя."""
print(f"Привет! Меня зовут {self.name}.")
person = Person("Василий", 30)
print(person.__doc__) # Выведет документацию `Person.__init__`
print(person.say_hello.__doc__) # Выведет документацию `person.say_hello`
3. Интерактивная среда (REPL):
В интерактивной среде Python (например, IDLE или командная строка) вы можете использовать ?
после имени объекта или метода для доступа к его документации.
Пример:
>>> person = Person("Василий", 30)
>>> person?
>>> person.say_hello?
4. Модуль inspect
:
Модуль inspect
предоставляет более продвинутые инструменты для просмотра объектов и их атрибутов.
Пример:
import inspect
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Василий", 30)
print(inspect.getdoc(person)) # Выведет документацию `Person.__init__`
print(inspect.getdoc(person.say_hello)) # Выведет документацию `person.say_hello`
5. Сторонние инструменты:
Существуют сторонние инструменты, такие как Sphinx
и docstrings
, которые могут помочь вам генерировать более детальную и красивую документацию для ваших объектов и методов.
- Что такое docstring?
Docstring: твой помощник в объяснении кода Python
Docstring (документационная строка) - это комментарий, который используется для документирования кода Python.
Он похож на обычный комментарий, но заключается в тройные кавычки (``` или """).
Docstring может содержать разную информацию, в том числе:
Описание: Что делает код?
Аргументы: Какие аргументы принимает функция или класс?
Возвращаемое значение: Что возвращает функция?
Примеры использования: Как использовать код?
Объяснение сложных моментов: Как работает код?
Автор: Кто написал код?
Дата создания: Когда был создан код?
Изменения: Что было изменено в коде?
Использование docstring:
В начале функции, класса или метода:
def my_function(x, y):
"""
Складывает два числа.
Args:
x (int): Первое число.
y (int): Второе число.
Returns:
int: Сумму x и y.
Example:
>>> my_function(5, 3)
8
"""
return x + y
В модуле:
"""
Модуль с математическими функциями.
Этот модуль содержит функции для выполнения основных математических
операций, таких как сложение, вычитание, умножение и деление.
"""
def add(x, y):
"""Складывает два числа."""
return x + y
def subtract(x, y):
"""Вычитает второе число из первого."""
return x - y
Преимущества docstring:
Повышают читаемость кода: Помогают другим программистам понять, как работает код.
Делают код более понятным для тебя самого через некоторое время.
Улучшают сопровождаемость кода: Облегчают внесение изменений в код.
Помогают другим программистам использовать твой код.
Автоматическая генерация документации: Некоторые инструменты могут автоматически генерировать документацию из docstring.
Существует несколько стилей написания docstring:
Стиль Google: https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html
Стиль reStructuredText: https://sphinx-rtd-tutorial.readthedocs.io/en/latest/docstrings.html
Стиль NumPy/SciPy: https://numpydoc.readthedocs.io/en/latest/format.html
- В чём разница между типами list и tuple?
Основные отличия между типами данных list
и tuple
в Python:
Изменяемость:
Списки (list
): Мутируемые, то есть их элементы можно изменять после создания.
Кортежи (tuple
): Неизменяемые, их элементы нельзя изменить после создания.
Пример:
# Список - можно изменить
my_list = [1, 2, 3]
my_list[1] = 4
print(my_list) # Output: [1, 4, 3]
# Кортеж - изменение запрещено
my_tuple = (1, 2, 3)
my_tuple[1] = 4 # Ошибка: TypeError: 'tuple' object does not support item assignment
Использование:
Списки: Подходят для хранения динамичных, часто меняющихся данных, например, списков покупок, списков задач, временных значений.
Кортежи: Подходят для хранения статичных, неизменяемых данных, например, констант, координат, информации о версии.
Производительность:
Списки: Обычно медленнее в операциях, где требуется изменение элементов, чем кортежи, из-за своей мутируемой природы.
Кортежи: Быстрее в операциях, где элементы не меняются, благодаря своей неизменяемости.
Синтаксис создания:
Списки: Используются квадратные скобки []
.
Кортежи: Используются круглые скобки ()
, иногда с запятыми между элементами, но они не обязательны для кортежей с одним элементом или при вложенности в скобках.
Пример:
my_list = [] # Пустой список
my_list = [1, 2, 3] # Список с элементами
my_tuple = () # Пустой кортеж
my_tuple = (1, 2, 3) # Кортеж с элементами
my_tuple = (1,) # Кортеж с одним элементом (запятая необязательна)
Дополнительные отличия:
Вложенность: В списки и кортежи можно вкладывать другие списки и кортежи.
Операции: Списки поддерживают больше операций, таких как +=
, -=
, insert
, remove
, pop
.
Память: Кортежи обычно занимают меньше памяти, чем списки с эквивалентным количеством элементов.
Выбор между list
и tuple
:
Используйте list
, когда вам нужен динамичный набор данных, который может меняться.
Используйте tuple
, когда вам нужен статичный набор данных, который не должен меняться.
- Может ли быть индекс списка отрицательным?
Сами значения индексов могут быть только положительными т.к. они автоинкрементируемые (увеличиваются на единицу от предыдущего).
Однако, мы можем обращаться к элементам списков по отрицательному индексу, это действие называет back indexing.
Это позволяет вам обращаться к элементам списка с конца в обратном порядке.
Вот несколько примеров:
Список my_list
:
my_list = [1, 2, 3, 4, 5]
Доступ к элементам с помощью положительных индексов:
print(my_list[0]) # Выведет 1 (первый элемент)
print(my_list[1]) # Выведет 2 (второй элемент)
print(my_list[4]) # Выведет 5 (пятый элемент)
Доступ к элементам с помощью отрицательных индексов:
print(my_list[-1]) # Выведет 5 (последний элемент)
print(my_list[-2]) # Выведет 4 (предпоследний элемент)
print(my_list[-3]) # Выведет 3 (третий элемент с конца)
Объяснение:
Длина списка: Длина списка my_list
равна 5.
Положительные индексы: Нумерация начинается с 0. my_list[0]
соответствует первому элементу.
my_list[1]
соответствует второму элементу.
...
my_list[4]
соответствует пятому элементу.
Отрицательные индексы: Нумерация начинается с -1 (последнего элемента) и идет в обратном порядке. my_list[-1]
соответствует последнему элементу.
my_list[-2]
соответствует предпоследнему элементу.
...
my_list[-5]
соответствует первому элементу.
Важно:
Индекс 0 всегда соответствует первому элементу списка.
Отрицательный индекс -1 всегда соответствует последнему элементу списка.
Выход за пределы списка с помощью отрицательного индекса приведет к ошибке IndexError
.
Использование отрицательных индексов:
Отрицательные индексы полезны для: Перебора элементов списка в обратном порядке.
Доступа к последним элементам списка без необходимости вычислять их точную позицию.
Извлечения подсписков с конца списка.
Пример:
# Перебор списка в обратном порядке
for i in range(-1, -len(my_list) - 1, -1):
print(my_list[i])
# Извлечение подсписка с конца списка
last_three = my_list[-3:]
print(last_three) # Output: [3, 4, 5]
- Что значит конструкция pass?
В Python оператор pass
- это пустой оператор, который не выполняет никаких действий.
Он используется в тех местах кода, где синтаксис Python требует оператор или блок кода, но на данном этапе реализация не требуется.
Вот несколько случаев, когда можно использовать pass
:
Внутри функции или метода: Когда вы пишете функцию, но пока не готовы к реализации ее логики.
В качестве заглушки для обработки будущих условий или ошибок.
Для разделения блоков кода, чтобы сделать код более читаемым.
Пример:
def my_function(x, y):
if x == 0:
pass # Обработка ошибки деления на ноль (будет добавлена позже)
else:
result = y / x
return result
# Пример использования
my_function(10, 2) # Output: 5.0
my_function(0, 5) # (Обработка ошибки будет добавлена позже)
Внутри условных операторов (if, elif, else): Когда вы хотите пропустить блок кода в определенном условии.
В качестве заглушки для будущей реализации функциональности.
Пример:
if condition1:
# Выполнить действия
elif condition2:
pass # Пропустить этот блок (будет реализован позже)
else:
# Выполнить другие действия
Внутри циклов (for, while): Когда вы хотите пропустить итерацию цикла в определенном условии.
В качестве заглушки для будущей реализации функциональности.
Пример:
for i in range(10):
if i % 2 == 0:
pass # Пропустить четные числа (будет добавлена обработка позже)
else:
print(i)
Важно:
pass
не является пустой строкой или комментарием. Он - оператор, который интерпретатор Python учитывает при выполнении кода.
Использование pass
бездумно может сделать код менее читаемым. Используйте его с умом и добавляйте комментарии, чтобы объяснить свои намерения.
- Чем отличаются многопоточное и многопроцессорное приложение?
- Как просмотреть методы объекта?
- Что такое *args и **kwargs в определении функции?
- Python полностью поддерживает ООП?
- Что такое globals() и locals()?
- Что хранится в атрибуте __dict__?
- Как проверить файл .py на синтаксические ошибки, не запуская его?
- Зачем в python используется ключевое слово self?
- Что такое декоратор? Как написать собственный?
- Что может быть ключом в словаре?
- В чём разница между пакетами и модулями
- Как перевести строку, содержащую двоичный код (1 и 0), в число?
- Для чего используется функция __init__?
- Что такое слайс(slice)?
- Как проверить, что один кортеж содержит все элементы другого кортежа?
- Почему пустой список нельзя использовать как аргумент по умолчанию?
- Что такое @classmethod, @staticmethod, @property?
- Что такое синхронный код?
- Что такое асинхронный код? Приведите пример.
- Каким будет результат следующего выражения?
>>> -30 % 10
- Для чего нужен метод id()?
- Что такое итератор?
- Что такое генератор? Чем отличается от итератора?
- Для чего используется ключевое слово yield?
- Чем отличаются __iter__ и __next__?
- Что такое контекстный менеджер?
- Как сделать python-скрипт исполняемым в различных операционных системах?
- Как сделать копию объекта? Как сделать глубокую копию объекта?
- Опишите принцип работы сборщика мусора в python
- Как использовать глобальные переменные? Это хорошая идея?
- Для чего в классе используется атрибут __slots__?
- Какие пространства имен существуют в python?
- Как реализуется управление памятью в python?
- Что такое метаклассы и в каких случаях их следует использовать?
- Зачем нужен pdb?
- Каким будет результат следующего выражения?
>>> [0, 1][10:]
- Как создать класс без слова class?
- Как перезагрузить импортированный модуль?
- Напишите декоратор, который будет перехватывать ошибки и повторять функцию максимум N раз.
- Каким будет результат следующего выражения?
>>> len(' '.join(list(map(str, [[0], [1]]))))
- Python — легкий язык. Согласны?
- Какие проблемы есть в python?
- Когда будет выполнена ветка else в конструкции try…except…else?
- Поддерживает ли python множественное наследование?
- Как dict и set реализованы внутри? Какова сложность получения элемента? Сколько памяти потребляет каждая структура?
- Что такое MRO? Как это работает?
- Как аргументы передаются в функции: по значению или по ссылке?
- С помощью каких инструментов можно выполнить статический анализ кода?
- Что будет напечатано в результате выполнения следующего кода?
import sys
arr_1 = []
arr_2 = arr_1
print(sys.getrefcount(arr_1))
- Что такое GIL? Почему GIL всё ещё существует?
- Опишите процесс компиляции в python.
- Как тиражировать python код?
- Что такое дескрипторы? Есть ли разница между дескриптором и декоратором?
- Почему всякий раз, когда python завершает работу, не освобождается вся память?
- Что будет напечатано в результате выполнения следующего кода?
class Variable:
def __init__(self, name, value):
self._name = name
self._value = value
@property
def value(self):
print(self._name, 'GET', self._value)
return self._value
@value.setter
def value(self, value):
print(self._name, 'SET', self._value)
self._value = value
var_1 = Variable('var_1', 'val_1')
var_2 = Variable('var_2', 'val_2')
var_1.value, var_2.value = var_2.value, var_1.value
- Что такое интернирование строк? Почему это есть в python?
- Как упаковать бинарные зависимости?
- Почему в python нет оптимизации хвостовой рекурсии? Как это реализовать?
- Что такое wheels и eggs? В чём разница?
- Как получить доступ к модулю, написанному на python из C и наоборот?
- Как ускорить существующий код python?
- Что такое __pycache__? Что такое файлы .pyc?
- Что такое виртуальное окружение?
- Python — это императивный или декларативный язык?
- Что такое менеджер пакетов? Какие менеджеры пакетов вы знаете?
- В чём преимущества массивов numpy по сравнению с (вложенными) списками python?
- Вам нужно реализовать функцию, которая должна использовать статическую переменную. Вы не можете писать код вне функции и у вас нет информации о внешних переменных (вне вашей функции). Как это сделать?
- Что будет напечатано в результате выполнения следующего кода?
def f_g():
yield 43
return 66
print(f_g())
- Как имплементировать словарь с нуля?
- Напишите однострочник, который будет подсчитывать количество заглавных букв в файле.
- Что такое файлы .pth?
- Какие функции из collections и itertools вы используете?
- Что делает флаг PYTHONOPTIMIZE?
- Что будет напечатано в результате выполнения следующего кода?
arr = [[]] * 5
arr_1, arr_2 = arr, arr
for k, arr in enumerate((arr_1, arr_2)):
arr[0].append(k)
arr = (arr_1, 5, arr_2)
print(arr)
- Какие переменные среды, влияющие на поведение интерпретатора python, вы знаете?
- Что такое Cython? Что такое IronPython? Что такое PyPy? Почему они до сих пор существуют и зачем?
- Как перевернуть генератор?
- Приведите пример использования filter и reduce над итерируемым объектом.
- Что будет напечатано в результате выполнения кода
>>> print(_)
- Чем фреймворк отличается от библиотеки?
- Расположите функции в порядке эффективности, объясните выбор.
def f1(arr):
l1 = sorted(arr)
l2 = [i for i in l1 if i < .5]
return [i * i for i in l2]
def f2(arr):
l1 = [i for i in arr if i < .5]
l2 = sorted(l1)
return [i * i for i in l2]
def f3(arr):
l1 = [i * i for i in arr]
l2 = sorted(l1)
return [i for i in l1 if i < (.5 * .5)]
- Произошла утечка памяти в рабочем приложении. Как бы вы начали отладку?
- В каких ситуациях возникает исключение NotImplementedError?
- Что не так с этим кодом? Зачем это нужно?
if __debug__:
assert False, ("error")
- Что такое магические методы(dunder)?
- Объясните, почему такое возможно?
_MangledGlobal__mangled = "^_^"
class MangledGlobal:
def test(self):
return __mangled
assert MangledGlobal().test() == "^_^"
- Что такое monkey patching? Приведите пример использования.
- Как работать с транзитивными зависимостями?
- Что будет напечатано в окне браузера?
<html>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<body>
<py-script>
print(__name__)
print(__file__)
</py-script>
</body>
</html>
- Какие новые функции добавлены в python 3.10?
- Почему иногда python так долго запускается (в Windows)?
Нет комментариев.