簡體   English   中英

在 python 中,`@=` 作用在左邊還是右邊?

[英]In python, does `@=` act on the left or the right?

在我看來很明顯vector @= matrix應該意味着vector = matrix @ vector ,這與大多數其他二元運算符的做法相反。 不幸的是, PEP 465中完全省略了對此的任何討論; 它僅說明@運算符是左關聯的,並且@=運算符對應於__imatmul__ function。

據推測,覆蓋意味着數值庫可以根據需要選擇這種行為,但這留下了三個密切相關的問題:

  • 如果__imatmul__沒有明確提供,但__matmul____rmatmul__是,默認行為是什么?
  • PEP 的作者的意圖是什么?
  • 選擇實現諸如 numpy 之類的數值庫有哪些行為?

與任何其他增強賦值運算符一樣, x @= yx = x @ y的就地如果x支持它的版本。

x = y @ x對您來說似乎很明顯,但我認為除了x = x @ y之外沒有其他任何東西被認為是一個嚴肅的選擇,而且我認為任何主要的數學庫都沒有實現像您期望的那樣的東西. sympy.Matrix將其實現為x = x @ y (非可變,無__imatmul__ ),並且numpy.ndarray說“TypeError:不(尚)支持就地矩陣乘法。使用 'a = a @ b' 而不是'a @= b'。” (或者可能在以后的版本中支持)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM