Apple Developer Page сообщает, что срок действия моего сертификата типа разработки для iOS скоро истекает

Глядя на разборку (коды байтов), очевидно, почему 0 < 0 == 0 - False.

Вот анализ этого выражения:

>>>import dis

>>>def f():
...    0 < 0 == 0

>>>dis.dis(f)
  2      0 LOAD_CONST               1 (0)
         3 LOAD_CONST               1 (0)
         6 DUP_TOP
         7 ROT_THREE
         8 COMPARE_OP               0 (<)
        11 JUMP_IF_FALSE_OR_POP    23
        14 LOAD_CONST               1 (0)
        17 COMPARE_OP               2 (==)
        20 JUMP_FORWARD             2 (to 25)
   >>   23 ROT_TWO
        24 POP_TOP
   >>   25 POP_TOP
        26 LOAD_CONST               0 (None)
        29 RETURN_VALUE

Notice Строки 0-8: Эти строки проверяют, есть ли 0 < 0, который, очевидно, возвращает False в стек python.

Теперь обратите внимание на строку 11: JUMP_IF_FALSE_OR_POP 23 Это означает, что если 0 < 0 возвращает False переход к строке 23.

Теперь 0 < 0 - False, поэтому выполняется переход, который оставляет стек с False, который является возвращаемым значением для всего выражения 0 < 0 == 0 , хотя часть == 0 даже не проверена.

Итак, в заключение, ответ подобен сказанному в других ответах на этот вопрос. 0 < 0 == 0 имеет особое значение. Компилятор оценивает это на два термина: 0 < 0 и 0 == 0. Как и с любыми сложными булевыми выражениями с and между ними, если первое не удается, второе не проверяется даже.

Надеется, что это немного просветит, и я очень надеюсь, что метод I используемый для анализа этого неожиданного поведения, побудит других попробовать их в будущем.

0
задан ayaio 18 January 2019 в 09:45
поделиться

1 ответ

Обновите свой сертификат разработки iOS, загрузите и откройте его и используйте для следующего распространения. Также проверьте срок действия сертификата распространения iOS.

0
ответ дан meow2x 18 January 2019 в 09:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: