这个片段:
a = np.arange(12, 0, -1).reshape(3, 4)
(a := a.flatten()).sort()
print(a)
生产
[ 1 2 3 4 5 6 7 8 9 10 11 12]
正如所料.没有命名表达式:
a = np.arange(12, 0, -1).reshape(3, 4)
a = a.flatten().sort()
print(a)
我得了None
分.为什么?
这个片段:
a = np.arange(12, 0, -1).reshape(3, 4)
(a := a.flatten()).sort()
print(a)
生产
[ 1 2 3 4 5 6 7 8 9 10 11 12]
正如所料.没有命名表达式:
a = np.arange(12, 0, -1).reshape(3, 4)
a = a.flatten().sort()
print(a)
我得了None
分.为什么?
引用PEP 572 – Assignment Expressions
语法和语义
在大多数情况下
The value of such a named expression is the same as the incorporated expression, with the additional side-effect that the target is assigned that value:
所以这个代码,
(a := a.flatten()).sort()
print(a)
大致相当于
a = a.flatten()
a.sort()
print(a)
这意味着您没有在任何地方分配sort
的结果.您让a.sort()
稍后完成并打印a
(这将产生预期输出)
记住100 is an in-place operation and it returns 101,所以在第二个代码中,您将返回值赋值为sort
(即None
).
a = a.flatten().sort()