Python3中能否像C一样在if语句内使用inline赋值(赋值表达式)
问题结论
这种写法不能直接像C语言一样正常使用,具体说明如下:
- 如果你使用的是Python 3.8之前的版本:这段代码会直接抛出语法错误。Python在3.8版本才引入海象运算符
:=支持表达式内赋值,更早版本的=属于纯赋值语句,不能放在括号中作为表达式的一部分参与运算。 - 如果你使用的是Python 3.8及之后的版本:你需要把代码中的赋值符号
=替换为海象运算符:=,修改后的代码才能正常运行,修正后示例如下:
import math for i in range(100): if((result := math.factorial(i)) % 10 == 0): print(i,"->",result)
补充说明:C语言里的
=赋值本身是有返回值的表达式,所以可以直接写在判断条件内;但Python传统的=是语句,没有返回值,只有3.8版本新增的海象运算符:=才是带返回值的赋值表达式,用法和C语言的赋值表达式类似,但使用的符号不同。
内容的提问来源于stack exchange,提问作者Krischu
相关产品推荐
相关产品推荐

