Несколько условий для назначения оператора моржа

Я хотел бы знать, можно ли использовать «оператор моржа» для присвоения значения на основе некоторого условия, а также существующего. Например, назначьте строку post_url, если эта строка содержит некоторую подстроку:

if post_url := data.get("Post url") and ("youtube" in data.get("Post url")):
    # Do something with post_url
else:
    # Do something else

Однако это просто присвоение логического значения post_url из-за оценки операции and.


person Shaun Barney    schedule 27.04.2020    source источник
comment
Используйте круглые скобки для группировки, которую вы хотите - post_url := (...). В качестве альтернативы "youtube" in data.get("Post url", []) будет учитывать and.   -  person jonrsharpe    schedule 27.04.2020
comment
@jonrsharpe спасибо за комментарий. Я пробовал, если post_url := youtube в data.get(Post url, []), который по-прежнему возвращает логическое значение, как и if post_url := (data.get(Post url) и youtube в data.get(Post url)):   -  person Shaun Barney    schedule 27.04.2020
comment
О, так ты хочешь if (post_url := data.get("Post url")) and "youtube" in post_url:? Вам не нужно удваивать .get   -  person jonrsharpe    schedule 27.04.2020


Ответы (1)


Вы можете использовать круглые скобки, чтобы сгруппировать это как хотите, вам даже не нужно повторять data.get:

if (post_url := data.get("Post url")) and "youtube" in post_url:
    # Do something with post_url
else:
    # Do something else

Это присвоит значение post_url в любом случае, поэтому вы сможете получить доступ к None или URL-адресу, не содержащему "youtube" в блоке else.

person jonrsharpe    schedule 27.04.2020