It is well known that python has no empty set literal. However, I would like to know if there is still a performant way of creating an empty set
these are a few other ways to create an empty set...
There is the pythonic way:
def f():
    return set()
There is also this nasty looking way by unpacking an empty tuple:
def g():
    return {*()}
You could also build a set with one item and then remove that item:
def h()
    s = {1}
    s.remove(1)
    return s
Trying to use the literal syntax to create a set will give you a dictionary:
def i()
    return {}
Interestingly, the results of dis for each function (Python 3) are as follows:
>>> dis(f)
  1           0 LOAD_GLOBAL              0 (set)
              2 CALL_FUNCTION            0
              4 RETURN_VALUE
>>> dis(g)
  1           0 LOAD_CONST               1 (())
              2 BUILD_SET_UNPACK         1
              4 RETURN_VALUE
>>> dis(h)
  2           0 LOAD_CONST               1 (1)
              2 BUILD_SET                1
              4 STORE_FAST               0 (s)
  3           6 LOAD_FAST                0 (s)
              8 LOAD_METHOD              0 (remove)
             10 LOAD_CONST               1 (1)
             12 CALL_METHOD              1
             14 POP_TOP
  4          16 LOAD_FAST                0 (s)
             18 RETURN_VALUE
>>> dis(i)
  2           0 BUILD_MAP                0
              2 RETURN_VALUE
Looking at the disassemby, the pythonic way (function f) requires two instructions, first a LOAD_GLOBAL (which can be converted to a LOAD_FAST if you provide set as an argument with default value of set), and then the function call.
Creating a dict takes only one instruction, BUILD_MAP.
I can see from h that the set comprehension uses an equivalent instruction to BUILD_MAP, BUILD_SET, except that it first loads the constant value of (1) into the stack.
Is there a way to get Python to generate the bytecode BUILD_SET with no elements in the stack, like how the dict comprehension generated BUILD_MAP in function i?
