2015-02-20 3 views
0

Я видел код python от своего коллеги.Операция 'if False' в python

def sample_func(): 

    # doWork here 
    doWork(); 
    # doWork failed 
    if False: 
     ... 

что именно if False означает?

+0

Я думаю, что он не хотел, чтобы этот кодовый блок выполнялся, и поместил оператор 'if False' для этого. Однако это не очень хорошая практика. –

+0

well 'if False' никогда не будет оценивать True, чтобы он ничего не делал –

+4

Это, вероятно, означает, что ему не нужен этот код для запуска в любом состоянии, но он не знал, нужен ли ему этот код в будущем, поэтому он поставил этот код в недопустимая ветвь управления потоком (если). Если это так, то это плохой стиль кода: контроль версий должен выполняться с системами управления версиями, а не с ветками мертвой логики и кодом комментирования. – gvlasov

ответ

3

Как говорили другие, if False является способом предотвращения кода, который следует из исполнения, но является плохим.

Так почему же это плохая практика?

Условие if False выполнено во время выполнения, поэтому накладные расходы незначительны по сравнению с комментарием. Одна из причин его использования может заключаться в том, что внутри блока уже есть комментарии с тройным цитированием, поэтому комментирование может не работать легко.

Большинство редакторов в наши дни используют цветовое кодирование для указания комментариев, однако они недостаточно умны, чтобы понять, что код не выполнен. Поэтому при чтении кода было бы не очевидно, что код обходит, если вы не заметите это условие. Сам факт, что вы должны были прийти на этот сайт, чтобы спросить, что это иллюстрирует суть!

Практика может быть унаследована от языка, такого как C или C++, где может быть предоставлена ​​аналогичная директива , но это предотвращает компиляцию на этих языках (и все еще ужасно). Наличие конечной полуколонии может указывать фон автора на C или C++.

1

if False: означает, что код при этом условии не будет работать.

Поскольку это условие всегда ложно, код этой ветви не выполняется.

Я думаю, что ваш коллега просто не хотел, чтобы этот код работал.
Обратите внимание, что это довольно уродливый способ обойти этот раздел, и есть другие способы сделать это более подходящим образом, например комментирование (наиболее очевидное, и это просто сокращение клавиатуры в каждом редакторе).

+1

Буду рад слышать о downvotes, если у кого-то есть проблема со мной, говоря, что это «уродливо». Я хотел бы установить ссылку на PEP20 (python.org/dev/peps/pep-0020) и сказать, что «Чтение рассчитывается». Если вы никогда не теряли время, потому что вы пытались понять или исправить код ни за что, потому что такое заявление, как этот, было сотнями строк выше, то вам повезло, но это по-прежнему плохая практика. – d6bels

+0

Ну, я не согласен. Я отвечаю на вопрос, сообщая OP, что этот код используется для обхода раздела, чтобы предотвратить запуск кода, хотя я дал понять, что это не лучший способ сделать это. – d6bels

+0

** 'what' **' делает, если False означает? 'Не ** почему **. Ваш ответ в порядке, как комментарий. не как ответ. – UmNyobe

0

Это означает, что он никогда не будет выполнен. Вероятно, это временный код, который нужно заполнить позже или временно не выполнить.

Я бы ожидал хотя бы TODO/комментариев, почему он не будет выполнен.

Смежные вопросы