No, augmented assignment (what you call "in-place" assignment, which doesn't always occur) is not supported with Python's Walrus operator, as stated in the specification PEP-0572.
The "equivalent" (quotes with emphasis) of
y ?= x
where ? is a supported symbol (e.g. +, -, *, >>, <<,...) is
(y := y ? x)
This is unfortunate from the perspective of programmers coming from C/C++ that have learned to appreciate that assignment expressions such as (which in C/C++ are valid not only as stand-alone statements as in Python, but as the loop condition or just about anywhere where a value can be substituted, assuming appropriate types)
(y ?= x)
which can make code more concise and perhaps more efficient by telling the compiler to do in-place assignment if they can (in C/C++, p++ and ++p -- analagous to p += 1 -- which both increment p in-place, are also idiomatic in loop conditions, stand-alone statements or just about anywhere where the (before-increment) value of p or its incremented value is needed).
Still, the Walrus operator at least helps make code more concise and readable in some situations.
def logb2(n: int):
"return the (bit) position of the most significant bit of n"
result = 0
while (n := n >> 1):
result += 1
return result
which I prefer over something like
def logb2(n: int):
result = 0
while True:
n >>= 1
if n:
result += 1
else:
return result
On my hardware and software, timeit.timeit shows that they take about the same amount of time, with the latter performing slightly (though negligibly, negligibly) better, despite the former requiring about 3 less bytecode instructions (less bytecote instructions does not necessarily imply more efficient of course).
There are many good use cases of the Walrus operator though in my view it is most beneficial in situations where it improves readability.
Support for what you (we) are after CAN be implemented in Python, but I don't see this happening anytime soon, if ever (which, well, is not such a bad thing).