Генерация байт-кода модулей.
При выполнении скрипта на языке 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-файл является бинарным, поэтому текстовом редакторе нет смысла его открывать.
🐍 Укус питона // 💬 Чат // #теория #модули #байткод
Что выведет этот код?
Anonymous Quiz
13%
PYn PYnat ive PYnativ vitanYP
41%
Yna PYnat tive PYnativ vitanYP
46%
Yna PYnat tive PYnativ PYnativ
Ручная компиляция байткода
Хотя файл байткода создается автоматически, мы вручную можем его сгенерировать. Для этого есть несколько способов: компиляция с помощью скрипта py_compile и компиляция с помощью модуля compileall.
Скрипт py_compile применяется для компиляции отдельных файлов. Для компиляции произвольного скрипта user.py в файл с байткодом мы могли бы использовать следующую программу:
Для компиляции в функцию compile() передаем путь к скрипту. После выполнения программы в текущей папке также будет сгенерирован каталог pycache, а в нем файл user.cpython-311.pyc
🐍 Укус питона // 💬 Чат // #теория #модули #байткод
Хотя файл байткода создается автоматически, мы вручную можем его сгенерировать. Для этого есть несколько способов: компиляция с помощью скрипта py_compile и компиляция с помощью модуля compileall.
Скрипт py_compile применяется для компиляции отдельных файлов. Для компиляции произвольного скрипта user.py в файл с байткодом мы могли бы использовать следующую программу:
Для компиляции в функцию compile() передаем путь к скрипту. После выполнения программы в текущей папке также будет сгенерирован каталог pycache, а в нем файл user.cpython-311.pyc
🐍 Укус питона // 💬 Чат // #теория #модули #байткод
Ручная компиляция байткода. Продолжение.
Для компиляции в функцию compile() передаем путь к скрипту. После выполнения программы в текущей папке также будет сгенерирован каталог pycache, а в нем файл user.cpython-311.pyc
Модуль compileall применяется для компиляции всех файлов Python по определенным путям. Например, скомпилируем все файлы в каталоге C:/python/files, смотрим пример.
По умолчанию компилируются даже те файлы, которые содержатся в подкаталогах. Если надо скомпилировать только те файлы, которые располагаются непосредственно в указанно папке, то применяется опция -l
🐍 Укус питона // 💬 Чат // #теория #модули #байткод
Для компиляции в функцию compile() передаем путь к скрипту. После выполнения программы в текущей папке также будет сгенерирован каталог pycache, а в нем файл user.cpython-311.pyc
Модуль compileall применяется для компиляции всех файлов Python по определенным путям. Например, скомпилируем все файлы в каталоге C:/python/files, смотрим пример.
По умолчанию компилируются даже те файлы, которые содержатся в подкаталогах. Если надо скомпилировать только те файлы, которые располагаются непосредственно в указанно папке, то применяется опция -l
🐍 Укус питона // 💬 Чат // #теория #модули #байткод
Модуль random
Модуль random управляет генерацией случайных чисел. Его основные функции:
• random(): генерирует случайное число от 0.0 до 1.0
• randint(): возвращает случайное число из определенного диапазона
• randrange(): возвращает случайное число из определенного набора чисел
• shuffle(): перемешивает список
• choice(): возвращает случайный элемент списка
Функция random() возвращает случайное число с плавающей точкой в промежутке от 0.0 до 1.0. Если же нам необходимо число из большего диапазона, скажем от 0 до 100, то мы можем соответственно умножить результат функции random на 100.
Функция randint(min, max) возвращает случайное целое число в промежутке между двумя значениями min и max.
🐍 Укус питона // 💬 Чат // #теория #модули #random
Модуль random управляет генерацией случайных чисел. Его основные функции:
• random(): генерирует случайное число от 0.0 до 1.0
• randint(): возвращает случайное число из определенного диапазона
• randrange(): возвращает случайное число из определенного набора чисел
• shuffle(): перемешивает список
• choice(): возвращает случайный элемент списка
Функция random() возвращает случайное число с плавающей точкой в промежутке от 0.0 до 1.0. Если же нам необходимо число из большего диапазона, скажем от 0 до 100, то мы можем соответственно умножить результат функции random на 100.
Функция randint(min, max) возвращает случайное целое число в промежутке между двумя значениями min и max.
🐍 Укус питона // 💬 Чат // #теория #модули #random
Что выведет этот код?
Anonymous Quiz
14%
True False True True
27%
True True True True
20%
True False True False
39%
True True True False
Модуль random
Функция randrange() возвращает случайное целое число из определенного набора чисел. Она имеет три формы:
• randrange(stop): в качестве набора чисел, из которых происходит извлечение случайного значения, будет использоваться диапазон от 0 до числа stop
• randrange(start, stop): набор чисел представляет диапазон от числа start до числа stop
• randrange(start, stop, step): набор чисел представляет диапазон от числа start до числа stop, при этом каждое число в диапазоне отличается от предыдущего на шаг step
🐍 Укус питона // 💬 Чат // #теория #модули #random #randrange
Функция randrange() возвращает случайное целое число из определенного набора чисел. Она имеет три формы:
• randrange(stop): в качестве набора чисел, из которых происходит извлечение случайного значения, будет использоваться диапазон от 0 до числа stop
• randrange(start, stop): набор чисел представляет диапазон от числа start до числа stop
• randrange(start, stop, step): набор чисел представляет диапазон от числа start до числа stop, при этом каждое число в диапазоне отличается от предыдущего на шаг step
🐍 Укус питона // 💬 Чат // #теория #модули #random #randrange
Что выведет этот код?
Anonymous Quiz
19%
{1, ‘PYnative’, [‘abc’, ‘xyz’]}
51%
{1, ‘PYnative’, [‘abc’, ‘xyz’], True}
30%
TypeError
Модуль locale
При форматировании чисел Python по умолчанию использует англосаксонскую систему, при которой разряды целого числа отделяются друг от друга запятыми, а дробная часть от целой отделяется точкой. В континентальной Европе, например, используется другая система, при которой разряды разделяются точкой, а дробная и целая часть - запятой, первая часть кода:
И для решения проблемы форматирования под определенную культуру в Python имеется встроенный модуль locale.
Для установки локальной культуры в модуле locale определена функция setlocale(). Она принимает два параметра, вторая часть кода:
Первый параметр указывает на категорию, к которой применяется функция - к числам, валютам или и числам, и валютам.
🐍 Укус питона // 💬 Чат // #теория #модули #locale
При форматировании чисел Python по умолчанию использует англосаксонскую систему, при которой разряды целого числа отделяются друг от друга запятыми, а дробная часть от целой отделяется точкой. В континентальной Европе, например, используется другая система, при которой разряды разделяются точкой, а дробная и целая часть - запятой, первая часть кода:
И для решения проблемы форматирования под определенную культуру в Python имеется встроенный модуль locale.
Для установки локальной культуры в модуле locale определена функция setlocale(). Она принимает два параметра, вторая часть кода:
Первый параметр указывает на категорию, к которой применяется функция - к числам, валютам или и числам, и валютам.
🐍 Укус питона // 💬 Чат // #теория #модули #locale