В Python argparse возможно ли иметь парные --no-что-то / - что-то аргументы?

Цитата из Блог Эрика Липперта :

Оценка арифметического выражения контролируется тремя наборами правил: правилами приоритета, правилами ассоциативности и правилами порядка.

Правила приоритета описывают, как заключить в нижеследующее выражение выражение, когда выражение смешивает разные типы операторов.

Правила ассоциативности описывают, как должно быть заключено в нижеследующее выражение, когда выражение имеет связку одного и того же оператора.

Порядок правил оценки описывает порядок, в котором оценивается каждый операнд в выражении.

blockquote>

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


Обновление:

Как я вижу, многие программисты считают, что оператор

a = ++a * ( ++a + 5);  

будет вызывать неопределенное поведение. Да, он будет вызывать UB, если нет гарантии порядка оценки операндов оператора.

Но это не так в контексте языка Java-программирования. Он имеет четко определенное поведение в java (а также в C #). Спецификация языка Java гласит, что:

15.7. Порядок оценки

Язык программирования Java гарантирует, что операнды операторов, по-видимому, оцениваются в определенном порядке оценки, а именно слева направо.

blockquote>

Пример 15.7.1-1. Левый операнд оценивается сначала

В следующей программе оператор * имеет левый операнд, который содержит назначение переменной и правый операнд, содержащий ссылку к той же переменной. Значение, созданное ссылкой, будет отражать тот факт, что назначение произошло первым.

class Test1 {
    public static void main(String[] args) {
        int i = 2;
        int j = (i=3) * i;
        System.out.println(j);
    }
}

Эта программа производит вывод:

9

Не разрешено для оценка оператора * для получения 6 вместо 9 .

blockquote>

Но, по-прежнему спецификация java четко заявляет, что не писать такие коды:

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

BLOCKQUOTE>

30
задан Michael Mrozek 31 May 2018 в 22:25
поделиться