У меня есть функция create_group
с необязательным параметром user_device=None
. Если для user_device
указано значение, отличное от None, я хочу, чтобы словарь targeting_spec
включал пару ключ-значение "user_device": user_device
, а если не указано значение, отличное от None, я не хочу, чтобы targeting_spec
включал эту пару ключ-значение.
Как я это делаю сейчас:
def create_group(..., user_device=None, ...):
...
targeting_spec = {
...
}
if user_device:
targeting_spec["user_device"] = user_device
...
Это принятый способ сделать это? Если нет, то что? Я спрашиваю, потому что это похоже на то, что Python хотел бы решить элегантно.
parameters[user_device]
вuser_device
, еслиuser_device
является чем-то, что оценивается какFalse
в логическом контексте, отличном отNone
, например, пустая строка,0
, пустой список или кортеж и т. д. Если вы не хотите такого поведения, измените свой чек наif user_device is not None
. - person timgeb   schedule 11.07.2014parameters
какNone
. Пока вы учитываете, что этоNone
вниз по линии, оно должно работать нормально в любом случае. - person kylieCatt   schedule 11.07.2014if user_device is not None:
, но это серьезная проблема, которую я раньше не принимал во внимание. - person tscizzle   schedule 11.07.2014{'key1': value1, 'key2': value2 if value2, 'key3': value3}
- person Ariel   schedule 31.08.2017targetting_spec
был изменчивым? - person Awais Hussain   schedule 03.05.2018