Что выдает следующая функция списка?
Anonymous Quiz
15%
[20, 30, 40, 50] [10, 20, 40]
12%
[10, 20, 30, 40] [10, 20, 30, 50]
73%
[10, 20, 30, 40] [10, 20, 40]
Определение и подключение модулей. Продолжение.
В основном файле программы - main.py используем данный модуль, смотрим код:
Для использования модуля его надо импортировать с помощью оператора import, после которого указывается имя модуля: import message.
Чтобы обращаться к функциональности модуля, нам нужно получить его пространство имен. По умолчанию оно будет совпадать с именем модуля, то есть в нашем случае также будет называться message.
Получив пространство имен модуля, мы сможем обратиться к его функциям по схеме пространство_имен.функция
Например, обращение к функции print_message() из модуля message, вторая часть примера:
И после этого мы можем запустить главный скрипт main.py, и он задействует модуль message.py. В частности, консольный вывод будет следующим:
Hello all
Message: Hello work
🐍 Укус питона // 💬 Чат // #теория #модули
В основном файле программы - main.py используем данный модуль, смотрим код:
Для использования модуля его надо импортировать с помощью оператора import, после которого указывается имя модуля: import message.
Чтобы обращаться к функциональности модуля, нам нужно получить его пространство имен. По умолчанию оно будет совпадать с именем модуля, то есть в нашем случае также будет называться message.
Получив пространство имен модуля, мы сможем обратиться к его функциям по схеме пространство_имен.функция
Например, обращение к функции print_message() из модуля message, вторая часть примера:
И после этого мы можем запустить главный скрипт main.py, и он задействует модуль message.py. В частности, консольный вывод будет следующим:
Hello all
Message: Hello work
🐍 Укус питона // 💬 Чат // #теория #модули
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь учить Python и не тратить десятки часов на поиск годных уроков?
Тогда залетай на Python | Notes — канал с видеогайдами и уроками по питону, созданный для эффективного и интересного изучения языка: от функций ввода-вывода к реализации интерфейсов и написанию ботов и нейронных сетей
Сложные моменты разбираются на простых примерах — подойдет даже тем, кто не знает основ. Для мидлов и сеньоров публикуют отдельные интересности
Интересное обучение — эффективное обучение. Присоединяйся!
Тогда залетай на Python | Notes — канал с видеогайдами и уроками по питону, созданный для эффективного и интересного изучения языка: от функций ввода-вывода к реализации интерфейсов и написанию ботов и нейронных сетей
Сложные моменты разбираются на простых примерах — подойдет даже тем, кто не знает основ. Для мидлов и сеньоров публикуют отдельные интересности
Интересное обучение — эффективное обучение. Присоединяйся!
Подключение функциональности модуля в глобальное пространство имен.
Другой вариант настройки предполагает импорт функциональности модуля в глобальное пространство имен текущего модуля с помощью ключевого слова from, смотрим пример:
В данном случае мы импортируем из модуля message в глобальное пространство имен функцию print_message(). Поэтому мы сможем ее использовать без указания пространства имен модуля как если бы она была определена в этом же файле.
Все остальные функции, переменные из модуля недоступны (как например, в примере выше переменная hello). Если мы хотим их также использовать, то их можно подключить по отдельности, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #модули
Другой вариант настройки предполагает импорт функциональности модуля в глобальное пространство имен текущего модуля с помощью ключевого слова from, смотрим пример:
В данном случае мы импортируем из модуля message в глобальное пространство имен функцию print_message(). Поэтому мы сможем ее использовать без указания пространства имен модуля как если бы она была определена в этом же файле.
Все остальные функции, переменные из модуля недоступны (как например, в примере выше переменная hello). Если мы хотим их также использовать, то их можно подключить по отдельности, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #модули
🎁С наступающим Новым годом!
От лица канала поздравляем вас с праздниками! Желаем вам уйму знаний и полезных навыков.
Пусть в новом году ваши проекты будут успешными а профессионализм растет в геометрической прогрессии.
С любовью, Укус питона.
🐍 Укус питона
От лица канала поздравляем вас с праздниками! Желаем вам уйму знаний и полезных навыков.
Пусть в новом году ваши проекты будут успешными а профессионализм растет в геометрической прогрессии.
С любовью, Укус питона.
🐍 Укус питона
Подключение функциональности модуля в глобальное пространство имен. Продолжение.
Если необходимо импортировать в глобальное пространство имен весь функционал, то вместо названий отдельных функций и переменных можно использовать символ зводочки *, смотрим код:
Но стоит отметить, что импорт в глобальное пространство имен чреват коллизиями имен функций. Например, если у нас том же файле определена функция с тем же именем до ее вызова, то будет вызываться функция, которая определена последней, вторая часть:
Все остальные функции, переменные из модуля недоступны (как например, в примере выше переменная hello). Если мы хотим их также использовать, то их можно подключить по отдельности, вторая часть кода:
Таким образом, одноименная функция текущего файла скрывает функцию из подключенного модуля.
🐍 Укус питона // 💬 Чат // #теория #модули
Если необходимо импортировать в глобальное пространство имен весь функционал, то вместо названий отдельных функций и переменных можно использовать символ зводочки *, смотрим код:
Но стоит отметить, что импорт в глобальное пространство имен чреват коллизиями имен функций. Например, если у нас том же файле определена функция с тем же именем до ее вызова, то будет вызываться функция, которая определена последней, вторая часть:
Все остальные функции, переменные из модуля недоступны (как например, в примере выше переменная hello). Если мы хотим их также использовать, то их можно подключить по отдельности, вторая часть кода:
Таким образом, одноименная функция текущего файла скрывает функцию из подключенного модуля.
🐍 Укус питона // 💬 Чат // #теория #модули
Имя модуля.
Модуль main.py является главным и использует модуль message.py. При запуске модуля main.py программа выполнит всю необходимую работу. Однако, если мы запустим отдельно модуль message.py сам по себе, то ничего на консоли не увидим. Модуль message просто определяет функцию и переменную и не выполняет никаких действий. Мы можем сделать так, чтобы модуль message.py мог использоваться как сам по себе, так и подключаться в другие модули.
При выполнении модуля среда определяет его имя и присваивает его глобальной переменной name (с обеих сторон по два подчеркивания). Если модуль является запускаемым, то его имя равно main (также по два подчеркивания с каждой стороны). Если модуль используется в другом модуле, то в момент выполнения его имя аналогично названию файла без расширения py. И мы можем это использовать. Так, изменим содержимое файла message.py, смотрим код:
🐍 Укус питона // 💬 Чат // #теория #модули
Модуль main.py является главным и использует модуль message.py. При запуске модуля main.py программа выполнит всю необходимую работу. Однако, если мы запустим отдельно модуль message.py сам по себе, то ничего на консоли не увидим. Модуль message просто определяет функцию и переменную и не выполняет никаких действий. Мы можем сделать так, чтобы модуль message.py мог использоваться как сам по себе, так и подключаться в другие модули.
При выполнении модуля среда определяет его имя и присваивает его глобальной переменной name (с обеих сторон по два подчеркивания). Если модуль является запускаемым, то его имя равно main (также по два подчеркивания с каждой стороны). Если модуль используется в другом модуле, то в момент выполнения его имя аналогично названию файла без расширения py. И мы можем это использовать. Так, изменим содержимое файла message.py, смотрим код:
🐍 Укус питона // 💬 Чат // #теория #модули
Имя модуля. Продолжение.
Следует обратить внимание на вызов функции main, первая часть кода:
Переменная name указывает на имя модуля. Для главного модуля, который непосредственно запускается, эта переменная всегда будет иметь значение main вне зависимости от имени файла.
Поэтому, если мы будем запускать скрипт message.py отдельно, сам по себе, то Python присвоит переменной name значение main, далее в выражении if вызовет функцию main из этого же файла. Однако если мы будем запускать другой скрипт, а этот - message.py - будем подключать в качестве вспомогательного, для message.py переменная name будет иметь значение message. И соответственно метод main в файле message.py не будет работать.
Данный подход с проверкой имени модуля является более рекомендуемым подходом, чем просто вызов метода main. В файле main.py также можно сделать проверку на то, является ли модуль главным (хотя в прицнипе это необязательно), вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #модули
Следует обратить внимание на вызов функции main, первая часть кода:
Переменная name указывает на имя модуля. Для главного модуля, который непосредственно запускается, эта переменная всегда будет иметь значение main вне зависимости от имени файла.
Поэтому, если мы будем запускать скрипт message.py отдельно, сам по себе, то Python присвоит переменной name значение main, далее в выражении if вызовет функцию main из этого же файла. Однако если мы будем запускать другой скрипт, а этот - message.py - будем подключать в качестве вспомогательного, для message.py переменная name будет иметь значение message. И соответственно метод main в файле message.py не будет работать.
Данный подход с проверкой имени модуля является более рекомендуемым подходом, чем просто вызов метода main. В файле main.py также можно сделать проверку на то, является ли модуль главным (хотя в прицнипе это необязательно), вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #модули
Что выведет этот код?
Anonymous Quiz
30%
Welcome PYnative
22%
WelcomPYnative
42%
Welcom PYnative
6%
WelcomePYnative
Генерация байт-кода модулей.
При выполнении скрипта на языке Python все выполнение в общем случае разбивается на две стадии:
1) Файл с кодом (файл с расширением .py) компилируется в промежуточный байткод.
2) Далее скомпилированный байт-кодом интерпретируется, то есть происходит собственно выполнение программы.
Допустим, в папке проекта у нас размещен файл user.py со простейшей функцией, которая принимает два параметра и выводит их значения:
Подключим этот файл в главном модуле программы, который пусть называется app.py, вторая часть примера:
При выполнении этого скрипта в папке проекте (где располагается модуль "user.py") будет создан каталог pycache. А в нем будет сгенерирован файл байткода, который будет наподобие следующего user.cpython-версия.pyc, где в качестве версии будет применяться версия используемого интерпретатора, например, 311. Сгенерированный pyc-файл является бинарным, поэтому текстовом редакторе нет смысла его открывать.
🐍 Укус питона // 💬 Чат // #теория #модули #байткод
При выполнении скрипта на языке Python все выполнение в общем случае разбивается на две стадии:
1) Файл с кодом (файл с расширением .py) компилируется в промежуточный байткод.
2) Далее скомпилированный байт-кодом интерпретируется, то есть происходит собственно выполнение программы.
Допустим, в папке проекта у нас размещен файл user.py со простейшей функцией, которая принимает два параметра и выводит их значения:
Подключим этот файл в главном модуле программы, который пусть называется app.py, вторая часть примера:
При выполнении этого скрипта в папке проекте (где располагается модуль "user.py") будет создан каталог pycache. А в нем будет сгенерирован файл байткода, который будет наподобие следующего user.cpython-версия.pyc, где в качестве версии будет применяться версия используемого интерпретатора, например, 311. Сгенерированный pyc-файл является бинарным, поэтому текстовом редакторе нет смысла его открывать.
🐍 Укус питона // 💬 Чат // #теория #модули #байткод