在Python 3.8中,引入了Walrus运算符,允许将赋值作为一个表达式。
这意味着我们可以替换这2条语句
a = 2
print(a)
使用
print(a := 2)
但是,Python还为运算符提供了“就地”分配,其中a = a * 3
等效于a *= 3
是否可以结合Walrus分配使用“就地”运算符分配?
对于以下代码
a *= 3
print(a)
要用Walrus作业重新创建它,看来您必须这样做
print(a := a * 3)
这两种尝试都会引发SyntaxError
print(a :*= 3)
print(a *:= 3)
答案 0 :(得分:0)
海象运算符不能与就地运算符一起使用。
说明:
海象运算符为 new 变量分配值并返回其值。
就地运算符是将运算符应用于现有变量并更新变量的快捷方式。 就地操作符对于 new 变量没有意义。如果将它们应用于尚未分配的变量,则会引发错误。
因此,就地和海象相结合没有用例。
编辑:更实际的解释:
.flexbox {
display: flex;
width: 100vw;
justify-content: center;
}
.flexbox div {
border: 1px #ccc solid;
border-radius: 10px;
width: 100px;
height: 250px;
padding: 10px;
margin: 2px 10px;
transition: all 1s linear 0s;
}
.flexgrow0 {
flex-grow: 1;
}
.flexgrow4 {
flex-grow: 4;
background-color:tomato;
}
的含义是什么?
如果<div class="flexbox">
<div class="box flexgrow0">
<h3>Box 1</h3>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore</p>
</div>
<div class="box flexgrow0">
<h3>Box 2</h3>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore</p>
</div>
<div class="box flexgrow0">
<h3>Box 3</h3>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore</p>
</div>
</div>
不存在,将a:+=1
添加到什么值?
a
的最终值是多少?
以供参考:
1
答案 1 :(得分:-2)
您需要先定义a
:
print((a := 2)*3)
6