The reason it's this way is to support dtype and access as keyword-only arguments, then allow the positional arguments to be "type", "shape, dtype", or "shape_0, ..., dtype".