Python中return后接赋值语句为何报错?二者能不能写在同一行?
问题原因解答
- Python中
return关键字后面只能跟随可求值的表达式,而普通赋值操作x = value * 2属于语句,没有返回值,也不允许放在return的后方,所以直接写return x = value * 2会触发语法错误。 - 如果你在C、JavaScript等其他语言里见过类似
return x = value * 2的写法,是因为这些语言里赋值本身是表达式,有返回值,允许放在return后,但Python的普通赋值语法设计就是语句,原生不支持这种用法。 - 如果你是在Python代码里见过类似的赋值+返回简写,大概率是Python 3.8及以上版本引入的海象赋值表达式
:=,这种写法下可以写为return (x := value * 2),这行代码会先完成给x赋值的操作,同时把赋值结果作为返回值返回,和你拆分写的逻辑完全一致。但如果不需要保留x这个中间变量的话,这种写法完全没必要,直接写return value * 2更简洁易读。
可用的简写示例代码
def multiply_by_two(value): # 最简洁的正确写法,不需要额外定义变量x return value * 2 def divide_by_two(value): return value / 2 y = multiply_by_two(2) z = divide_by_two(2) print(f"2 * 2 = {y}\n2 / 2 = {z}")
内容的提问来源于stack exchange,提问作者NinjaSnickers
相关产品推荐
相关产品推荐

