I’m fairly positive on {/} on a conceptual level. It’s neat, concise, and would be relatively easy to add to the language. However, it would take a lot to overcome the other issues that seem more broadly applicable.
It’s unlikely that performance would ever be a persuasive argument. The value of writing it as {/} rather than {*()} would be minuscule currently, and it could end up being equivalent in the future, given continued work on the JIT. Comparing to set is less fair, it usually ends up needing a global name lookup, and that cannot be optimized out as easily.
On learnability and rememberability, this feels like it is the kind of thing someone learns once, and then it sticks with them; However, even with all sorts of preexisting learning materials being updated for this(and not all materials are digital and are more costly to update), I believe exposure to it’s use would be many people’s first time seeing this. In that scenario, IDEs and the surrounding context are likely to provide enough information that those people figure it out just fine, but it is worth keeping in mind.
Something I was pleasantly surprised to be wrong about: I thought that {/} would also be nearly unsearchable in a traditional search engine, but I checked in with a few different search engines, and even with it only being a PEP, this thread is already visible without scrolling. In fact, this set of symbols currently has better search results than {*()}, though I wonder how that would change if both were actually in use rather than one being currently discussed on a site with exceptional indexing.
If linters start recommending this for any reason, it would create churn without much benefit beyond the case that those linters should already catch, namely, shadowing, but the impact would either be low, or there is a surprising amount of set() use that is not represented here.
As to existing options that work even in a case of shadowing, {*()} seems fine enough to me. While it is one of the ugliest string of symbols I’ve ever written in Python, I have written this before. The only question I received during review was why we couldn’t fix the shadowing, not what it was doing or why it was done. The answer is potentially relevant to people wondering how the shadowing could occur. We didn’t control the interface, and it is understandable that someone might shadow set in a class body; The convention of postfix underscore to avoid shadowing a builtin causes a lot of code to look more like a mistake upon reading when it’s a method (foo.set_(...))