Что означает процент в питоне
Перейти к содержимому

Что означает процент в питоне

Python — знак процента

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

Изначально это пошло из стандартной библиотеки языка C, где есть функция printf() , принимающая строку с спецификаторами форматирования первым аргументом, а последующими аргументами ей передаются значения произвольного типа. В качестве вывода, эта функция формирует строку с отформатированными в соответствии со спецификаторами значениями, подставленными на место этих самых спецификаторов.

Pyhon вместо этой функции использует оператор форматирования, тоже обозначенный символом процента( % ) — он разделяет форматную строку и значения, которые с её помощью нужно отформатировать.

Разбирая ваши примеры:

Означает: отформатировать значение переменной foo как строку и вставить её в указанное место.

Здесь же %.2f требует форматирования bar как число с плавающей точкой(f — float), c округлением до 2-х знаков после запятой

Что означает знак процента в Python

Я понимаю, что double == является тестом на равенство, но я не понимаю часть if n % x . Как будто я могу в устной форме пройтись по каждой части и сказать, что утверждение делает для примера. Но я не понимаю, как знак процента падает.

Что if n % x на самом деле говорит?

8 ответов

Оператор модуля; дает остаток от левого значения, деленного на правое значение. Подобно:

3 % 1 будет равен нулю (так как 3 делится равномерно на 1)

3 % 2 будет равен 1 (поскольку деление 3 на 2 приводит к остатку от 1).

Цитата x% n == 0, что означает, что x / n и значение напоминания будут взяты в результате и сравнены с нулем .

4/5 напоминание 1

Он проверяет, является ли модуль делением. Например, в случае, если вы перебираете все числа от 2 до n и проверяете, делится ли n на любое из промежуточных чисел. Проще говоря, вы проверяете, является ли данное число n простым. (Подсказка: вы можете проверить до n / 2).

% Делает две вещи, в зависимости от своих аргументов. В этом случае он действует как оператор по модулю, то есть, когда его аргументы являются числами, он делит первое на второе и возвращает Остаток . 34 % 10 == 4 , поскольку 34, деленное на 10, равно трем, а остаток равен четырем.

Если первый аргумент является строкой, он форматирует ее, используя второй аргумент. Это немного сложно, поэтому я буду ссылаться на документацию, но только в качестве примера:

Тем не менее, форматирование строки дополняется с Python 3.1 в пользу механизма string .format() :

Операции форматирования, описанные здесь, обнаруживают различные причуды, которые приводят к ряду распространенных ошибок (таких как неправильное отображение кортежей и словарей). Использование нового str.format() помогает избежать эти ошибки, а также обеспечивает в целом более мощный, гибкий и расширяемый подход к форматированию текста.

И, к счастью, почти все новые функции также доступны начиная с версии Python 2.6.

Оператор модуля. Остаток при делении двух чисел.

В python 2.6 оператор ‘%’ выполнил модуль. Я не думаю, что они изменили его в 3.0.1

Оператор по модулю сообщает вам остаток от деления двух чисел.

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

% для чисел: операция по модулю / остаток / отдых

Знак процента — это оператор в Python. Это описано как:

Таким образом, он дает остаток / отдых, который остается , если вы «этаж разделить «х на у. Обычно (по крайней мере в Python) задается число x и делитель y :

Например, если вы разделите 5 на 2:

В общем случае вы используете операцию по модулю, чтобы проверить, делит ли число поровну на другое число, потому что по числу, кратному числу, это число возвращает 0:

Вот как он используется в вашем примере, он не может быть простым, если он кратен другому числу (кроме себя и одного), вот что он делает:

Если вы чувствуете, что n % x == 0 не очень описательный, вы можете поместить его в другую функцию с более описательным именем:

Вместо is_multiple его также можно назвать evenly_divides или что-то подобное. Вот что здесь тестируется.

Подобно тому, как это часто используется, чтобы определить, является ли число «нечетным» или «четным»:

И в некоторых случаях он также используется для индексации массивов / списков, когда требуется поведение циклического (циклического) перебора, тогда вы просто модулируете «index» на «length массива», чтобы достичь этого:

Обратите внимание, что в стандартной библиотеке есть также функция для этого оператора operator.mod (и псевдоним operator.__mod__ ):

Но есть также расширенное присваивание %= , которое присваивает результат переменной:

% для строк: printf форматирование строк в стиле

Для строк значение совершенно иное, есть один способ (на мой взгляд, самый ограниченный и безобразный) для форматирования строк:

Здесь % в строке представляет собой заполнитель, за которым следует спецификация форматирования. В этом случае я использовал %s , что означает, что он ожидает строку. Затем за строкой следует % , который указывает, что строка с левой стороны будет отформатирована с правой стороны. В этом случае первый %s заменяется первым аргументом this , а второй %s заменяется вторым аргументом ( good ).

Обратите внимание, что есть гораздо лучшие (возможно, основанные на мнении) способы форматирования строк:

% в Jupyter / IPython: магические команды

Для пользователей Jupyter: Магия специфична для ядра IPython и предоставляется им. Доступность магий в ядре — это решение, принимаемое разработчиком ядра для каждого ядра. Для правильной работы Magics должен использовать синтаксический элемент, который недопустим в базовом языке. Например, ядро IPython использует магический элемент % для магии, поскольку % не является допустимым унарным оператором в Python. В то время как элемент синтаксиса имеет значение в других языках.

Это регулярно используется в ноутбуках Jupyter и подобных:

Оператор % для массивов (в экосистеме NumPy / Pandas)

Оператор % по-прежнему является оператором по модулю при применении к этим массивам, но он возвращает массив, содержащий остаток каждого элемента в массиве:

Настройка оператора % для ваших собственных классов

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

Просто чтобы привести простой пример, который показывает, как это работает:

Этот пример не очень полезен, он просто печатает и затем делегирует оператор сохраненному значению, но он показывает, что __mod__ вызывается, когда % применяется к экземпляру:

Обратите внимание, что это также работает для %= без явной необходимости реализовать __imod__ :

Однако вы также можете явно реализовать __imod__ для перезаписи расширенного присваивания:

Что означает знак процента в Python

Я понимаю, что дубль == — это проверка на равенство, но не понимаю его if n % x части. Как будто я могу устно пройтись по каждой части и сказать, что делает утверждение для примера. Но я не понимаю, как попадает знак процента.

Что на if n % x самом деле говорит?

Оператор модуля; дает остаток от левого значения, деленного на правое значение. Нравиться:

3 % 1 равняется нулю (так как 3 делится на 1 без остатка)

3 % 2 будет равняться 1 (так как деление 3 на 2 дает остаток 1).

% Делает две вещи в зависимости от своих аргументов. В этом случае он действует как оператор по модулю, то есть, когда его аргументы являются числами, он делит первое на второе и возвращает остаток . 34 % 10 == 4 так как 34 разделить на 10 равно трем, а остаток — четыре.

Если первый аргумент является строкой, он форматирует ее, используя второй аргумент. Это немного сложно, поэтому я буду ссылаться на документацию , но просто в качестве примера:

Однако в Python 3.1 поведение форматирования строк было дополнено в пользу строкового .format() механизма:

The formatting operations described here exhibit a variety of quirks that lead to a number of common errors (such as failing to display tuples and dictionaries correctly). Using the newer str.format() interface helps avoid these errors, and also provides a generally more powerful, flexible and extensible approach to formatting text.

И, к счастью, почти все новые функции также доступны начиная с python 2.6.

Хотя это немного не по теме, поскольку люди найдут это, выполнив поиск по запросу «знак процента в Python» (как и я), я хотел отметить, что знак% также используется для префикса «волшебной» функции в iPython: https : //ipython.org/ipython-doc/3/interactive/tutorial.html#magic-functions

What does the percentage sign mean?

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

% для чисел: операция по модулю / остаток / остаток

Знак процента — это оператор в Python . Это описывается как:

Таким образом, он дает вам остаток / остаток, который остается, если вы «пол разделите» x на y. Обычно (по крайней мере, в Python) с учетом числа x и делителя y :

Например, если вы разделите 5 на 2:

Как правило, вы используете операцию по модулю, чтобы проверить, делится ли число равномерно на другое число, потому что кратное числа по модулю это число возвращает 0:

Вот как он используется в вашем примере, он не может быть простым, если он кратен другому числу (кроме себя и единицы), вот что это делает:

Если вам кажется, что n % x == 0 это не очень наглядно, вы можете поместить его в другую функцию с более описательным именем:

Вместо is_multiple него можно было бы также назвать evenly_divides или что-то подобное. Вот что здесь проверено.

Подобно тому, как это часто используется, чтобы определить, является ли число «нечетным» или «четным»:

А в некоторых случаях он также используется для индексации массива / списка, когда требуется циклическое (циклическое) поведение, тогда вы просто модулируете «индекс» на «длину массива», чтобы добиться этого:

Обратите внимание, что для этого оператора также есть функция в стандартной библиотеке operator.mod (и псевдоним operator.__mod__ ):

Но есть также расширенное присваивание, %= которое возвращает результат переменной:

% для строк: форматирование строк в printf стиле

Для строк значение совершенно другое, это один способ (на мой взгляд, самый ограниченный и уродливый) для форматирования строки:

Здесь % в строке представляет собой заполнитель, за которым следует спецификация форматирования. В этом случае я использовал %s это означает, что он ожидает строку. Затем за строкой следует символ, % который указывает, что строка с левой стороны будет отформатирована с помощью правой стороны. В этом случае первый %s заменяется первым аргументом, this а второй %s — вторым аргументом ( good ).

Обратите внимание, что есть гораздо лучшие (возможно, основанные на мнении) способы форматирования строк:

% в Jupyter / IPython: магические команды

To Jupyter users: Magics are specific to and provided by the IPython kernel. Whether magics are available on a kernel is a decision that is made by the kernel developer on a per-kernel basis. To work properly, Magics must use a syntax element which is not valid in the underlying language. For example, the IPython kernel uses the % syntax element for magics as % is not a valid unary operator in Python. While, the syntax element has meaning in other languages.

Это регулярно используется в записных книжках Jupyter и подобных:

% Оператор на массивы (в экосистеме NumPy / панды)

При % применении к этим массивам оператор по-прежнему является оператором по модулю, но он возвращает массив, содержащий остаток от каждого элемента в массиве:

Настройка % оператора для собственных классов

Конечно, вы можете настроить, как работают ваши собственные классы, когда к % ним применяется оператор. Как правило, вы должны использовать его только для реализации операций по модулю! Но это рекомендация, а не жесткое правило.

Просто чтобы предоставить простой пример, показывающий, как это работает:

Этот пример не очень полезен, он просто печатает, а затем делегирует оператор сохраненному значению, но показывает, что он __mod__ вызывается, когда % применяется к экземпляру:

Обратите внимание, что он также работает %= без явной реализации __imod__ :

Однако вы также можете __imod__ явно реализовать перезапись расширенного назначения:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *