The primary benefit for me would be the minimal use of characters, which within list comprehensions I think is not an insignificant benefit:
stuff = [[(f(x) as y), x/y] for x in range(5)] # seems quite syntactically busy
stuff = [[y := f(x), x/y] for x in range(5)] # better
stuff = [[y! f(x), x/y] for x in range(5)] # two fewer characters (if you include the space after the identifier)
*Thoughts on odd usage of "!"*
In the English language, `!` signifies an exclamation, and I am imagining a similar usage to that of introducing something by its name in an energetic way. For example a boxer walking in to the ring:
"Muhammed_Ali! <in walks Muhammed Ali>", "x! get_x()"
I get that `!` is associated with "not", and factorial, but I couldn't think of another character already used that would work in this usage. I also think `name! expression` would be hard to interpret as a comparison or factorial. I suppose the trade off here is efficiency vs. idiosyncrasy. I very much appreciate this is all very tentative, but I wanted to explain why this syntax does not sit terribly with me.