Как элегантно игнорировать некоторые возвращаемые значения функции в Python?

иногда функция дает возвращаемое значение, которое вы просто хотите отбросить, а не отправлять в выходной поток. Каков был бы элегантный способ справиться с этим?

обратите внимание, что мы говорим о функции, которая возвращает то, что нельзя изменить.

def fn():
    return 5

Я лично использовал null раньше, но я ищу более подходящие для Python образом:

null = fn()

2 ответов


стандартный способ показать это, чтобы присвоить результаты, которые вы не хотите _. Например, если функция возвращает два значения, но вы хотите только первое, сделайте следующее:

value, _ = myfunction(param)

большинство линтеров Python распознают использование _ а не жаловаться на неиспользуемые переменные.

Если вы хотите игнорировать все возвраты, то просто не назначайте ничего; Python ничего не делает с результатом, если вы не скажете ему. Печать результата-это функция Только оболочка Python.


мне очень нравится идея присвоения null-но она имеет неожиданный побочный эффект:

>>> print divmod(5, 3)
(1, 2)
>>> x, null = divmod(5, 3)
>>> print null
2

для тех, кто кодирует в основном на Python, это, вероятно, не проблема: null должен быть таким же мусорным значением, как _.

однако, если вы переключаетесь между другими языками, такими как Javascript, вполне возможно случайно написать сравнение с null вместо None. Вместо того, чтобы выплевывать обычную ошибку о сравнении с неизвестной переменной, Python просто молча примет это, и теперь вы получаете истинные и ложные условия, которые вы совершенно не ожидаете... это такая ошибка, когда вы смотрите на код в течение часа и не можете понять, что неправильно, пока он внезапно не ударит вас, и вы почувствуете себя идиотом.

очевидное исправление тоже не работает:

>>> x, None = divmod(5, 3)
File "<stdin>", line 1
SyntaxError: cannot assign to None

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

>>> divmod(5, 3)

...но!--12-->явно выбрасывание параметров, назначая их None не допускается?

кажется глупым интерпретатором Python характеризовать присвоение None как синтаксическую ошибку, а не преднамеренный выбор с однозначным результатом. Кто-нибудь может придумать этому объяснение?