Какой стандартный способ сделать no-op в python? - PullRequest
135 голосов
/ 27 марта 2009

Я часто пишу, что / elif / else конструирует в python, и я хочу включить опции, которые могут иметь место, но для которых соответствующее действие ничего не делает. Я понимаю, что могу просто исключить эти операторы if, но для удобства чтения я считаю, что это помогает включить их все, так что если вы просматриваете код, вы можете видеть, что происходит в результате каждой опции. Как я могу кодировать no-op? В настоящее время я делаю это так:

no_op = 0

if x == 0:
    y = 2 * a
elif x == 1:
    z = 3 * b
elif x == 3:
    no_op

(Код на самом деле немного длиннее и сложнее. Это просто для иллюстрации структуры).

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

Ответы [ 3 ]

253 голосов
/ 27 марта 2009

Используйте pass для no-op:

if x == 0:
  pass
else:
  print "x not equal 0"

А вот еще один пример:

def f():
  pass

Или:

class c:
  pass
23 голосов
/ 27 марта 2009

Как насчет pass?

9 голосов
/ 12 июня 2017

Если вам нужна функция, которая ведет себя как nop, попробуйте

nop = lambda *a, **k: None
nop()

Иногда я делаю такие вещи, когда делаю зависимости необязательными:

try:
    import foo
    bar=foo.bar
    baz=foo.baz
except:
    bar=nop
    baz=nop

# Doesn't break when foo is missing:
bar()
baz()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...