python утверждает с круглыми скобками и без них

Вот четыре простых вызова assert:

>>> assert 1==2 Traceback (most recent call last): File "<stdin>", line 1, in ? AssertionError >>> assert 1==2, "hi" Traceback (most recent call last): File "<stdin>", line 1, in ? AssertionError: hi >>> assert(1==2) Traceback (most recent call last): File "<stdin>", line 1, in ? AssertionError >>> assert(1==2, "hi") 

Обратите внимание, что последний не вызывает ошибку. В чем разница между вызовом assert со скобкой или без нее, которая вызывает это поведение? Моя практика заключается в использовании скобок, но вышеизложенное говорит о том, что я не должен.

  • Как я могу получить все объекты, на которые у пользователя есть определенные разрешения в django guardian?
  • Как обновить версию Python?
  • Как объединить списки в список кортежей в Python?
  • Получить длину или продолжительность файла .wav
  • Python: Как создать подкласс из суперкласса?
  • Выбор неназванного текстового поля в форме механизации (python)
  • Python fetchching <title>
  • Использование Python для инвертирования и перевода изображений
  • 3 Solutions collect form web for “python утверждает с круглыми скобками и без них”

    Последнее assert дало бы вам предупреждение ( SyntaxWarning: assertion is always true, perhaps remove parentheses? ), Если вы запускаете его через полный интерпретатор, а не через IDLE. Поскольку assert является ключевым словом, а не функцией, вы фактически передаете кортеж в качестве первого аргумента и оставляете второй аргумент.

    Напомним, что непустые кортежи оцениваются в True , и поскольку сообщение утверждения является необязательным, вы по существу называете assert True когда вы написали assert(1==2, "hi") .

    assert 1==2, "hi" анализируется как assert 1==2, "hi" с «hi» в качестве второго параметра для ключевого слова. Следовательно, почему это правильно дает ошибку.

    assert(1==2) анализируется как assert (1==2) который идентичен assert 1==2 , поскольку парсеры вокруг одного элемента не создают кортеж, если нет конечной запятой, например (1==2,) .

    assert(1==2, "hi") анализируется как assert (1==2, "hi") , которое не дает ошибки, поскольку непустой кортеж (False, "hi") не является false, а второго ключевого слова не указан второй параметр.

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

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

     foo = 7 assert foo == 8, \ "derp should be 8, it is " + str(foo) 

    Печать: AssertionError: «derp должно быть 8, это 7

    Interesting Posts

    Проверка типов: итеративный тип, который не является строкой

    Использование pyuno с моей существующей установкой python

    Как найти индекс, в который новый элемент можно вставить в отсортированный список и сохранить его отсортированным?

    Как динамически составлять фильтр запросов OR в Django?

    как измерить использование памяти в объекте в python?

    Python: создание собственных заявлений

    Преобразование изображения из PIL в формат openCV

    Ошибка Python с плавающей точкой 117.285 раунд до 117.28 не 117.29

    Как установить «авто» для верхнего предела, но сохранить фиксированный нижний предел с помощью matplotlib.pyplot

    Python – используя для паузы для цикла

    Как я могу прокручивать данные для нескольких страниц на веб-сайте с помощью python и beautifulsoup4

    Могу ли я показать десятичные знаки и научную нотацию на оси графика matplotlib с использованием Python 2.7?

    Python GTK3 Treeview Move Selection вверх или вниз

    Как складывать кадры данных друг на друга в Pandas

    s3- boto-list файлы в корзине по времени загрузки

    Python - лучший язык программирования в мире.