看看Python-Dev和StackOverflow,Python的三值操作符等价于:
a if condition else b看看佩普-572和StackOverflow,我明白Walrus操作符是什么:
:=现在,我试图将"walrus运算符的赋值“和”三值运算符的条件检查“合并为一条语句,如下所示:
other_func(a) if (a := some_func(some_input)) else b例如,请考虑下面的片段:
do_something(list_of_roles) if list_of_roles := get_role_list(username) else "Role list is [] empty"我没能把我的注意力集中在语法上。在尝试了各种组合之后,每次解释器抛出SyntaxError: invalid syntax。我的python版本是3.8.3。
我的问题是,在三元运算符中嵌入walrus运算符的正确语法是什么?
发布于 2020-08-06 18:21:55
从语法上讲,您只是缺少了一对括号。
do_something(list_of_roles) if (list_of_roles := get_role_list(username)) else "Role list is [] empty"如果您查看语法,:=被定义为高级namedexpr_test结构的一部分:
namedexpr_test: test [':=' test]而条件表达式是一种test
test: or_test ['if' or_test 'else' test] | lambdef这意味着:=不能在条件表达式中使用,除非它发生在嵌套表达式中。
发布于 2022-05-12 12:33:21
对于那些想要一个简短的答案或者没能像我一样快速地理解被接受的答案的人:
>>> variable = foo if (foo := 'parentheses!!') else 'otherwise'
>>> # ^ ^
>>> # └──────────────────────┘
>>> variable
parentheses!!https://stackoverflow.com/questions/63289494
复制相似问题