Одна строка if-condition-assign

У меня есть следующий код

num1 = 10 someBoolValue = True 

Мне нужно установить значение num1 в 20 если someBoolValueTrue ; и ничего не делать. Итак, вот мой код для этого

 num1 = 20 if someBoolValue else num1 

Есть ли что-то, что я мог бы избежать ...else num1 part, чтобы сделать его более чистым? Эквивалент

 if someBoolValue: num1 = 20 

Я попытался заменить его на ...else pass следующим образом: num1=20 if someBoolValue else pass . Все, что я получил, это синтаксическая ошибка. И я не мог просто опустить ...else num1 часть ...else num1 .

благодаря

6 Solutions collect form web for “Одна строка if-condition-assign”

Я не думаю, что это возможно в Python, поскольку то, что вы на самом деле пытаетесь сделать, вероятно, расширяется до следующего:

 num1 = 20 if someBoolValue else num1 

Если вы исключаете else num1 , вы получите синтаксическую ошибку, так как я совершенно уверен, что назначение действительно должно что-то вернуть.

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

 if someBoolValue: num1=20 

Я не большой поклонник num1 = someBoolValue and 20 or num1 по той же причине. Я должен дважды подумать над тем, что делает эта линия.

Лучший способ добиться того, что вы хотите сделать, это оригинальная версия:

 if someBoolValue: num1 = 20 

Причина в том, что это лучшая версия, потому что очень очевидно то, что вы хотите сделать, и вы не будете путать себя, или кто-то еще будет вступать в контакт с этим кодом позже.

Кроме того, в качестве примечания стороны num1 = 20 if someBoolValue является действительным кодом Ruby, потому что Ruby работает немного по-другому.

Использовать это:

 num1 = 20 if someBoolValue else num1 

В одной строке:

 if someBoolValue: num1 = 20 

Но не делайте этого. Этот стиль обычно не ожидается. Люди предпочитают более длинную форму для ясности и последовательности.

 if someBoolValue: num1 = 20 

(Также следует избегать верблюжьих колпачков, поэтому используйте some_bool_value .)

Обратите внимание, что выражение in-line some_value if predicate без части else не существует, потому что не было бы возвращаемого значения, если предикат был ложным. Однако во всех случаях выражения должны иметь четко определенное возвращаемое значение. Это отличается от использования, например, в Ruby или Perl.

Нет. Думаю, вы надеялись, что что-то вроде num1 = 20 if someBoolValue будет работать, но это не так. Я думаю, что лучший способ – с выражением if как вы его написали:

 if someBoolValue: num1 = 20 

вы можете использовать одно из следующих действий:

 (falseVal, trueVal)[TEST] TEST and trueVal or falseVal 
 num1 = 20 * someBoolValue or num1 
  • Pythonic способ использовать второе условие в списках
  • if loop: x не в VS, а не x в
  • Как добавить, если условие в графе TensorFlow?
  • Если утверждение с или не работает как ожидалось
  • Лучшая альтернатива множеству заявлений IF? Таблица значений
  • простой оператор python if не работает
  • Странный оператор if
  • Словарь Python vs Если скорость сообщения
  •  
    Interesting Posts for Van-Lav

    Я могу использовать изменяемый объект в качестве словарного ключа в python. Разве это не запрещено?

    Быстрый способ разместить бит для головоломки

    Python open () vs. .close ()

    Маркер с 404 номерами с плавающей точкой в ​​URL-адресе

    Python Glob без всего пути – только имя файла

    Использование представления __str__ для печати объектов в контейнерах в Python

    Попытка создания базового примера расширения python не выполняется (окна)

    Как я могу создать сборку Jenkins для репозитория GitHub, вызванного нажатием на другой репозиторий?

    «ImportError: невозможно импортировать почтовую почту» в Flask

    Блокнот wxpython внутри коробки

    Как форматировать xy точки для undistortPoints с python cv2 api?

    Как ограничить время, в течение которого функция может работать (добавить тайм-аут)?

    Словарь ключей соответствует по списку; получить пару ключ / значение

    Изменение статуса функции декоратора от метода к функции

    Python, Matplotlib, Scatter plot, Изменить цвет в нажатой точке

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