Returns the number of qubits, qudits, or qids val operates on.

val The value to get the number of qubits from.
default Determines the fallback behavior when val doesn't have a number of qubits. If default is not set, a TypeError is raised. If default is set to a value, that value is returned.

If val has a _num_qubits_ method and its result is not NotImplemented, that result is returned. Otherwise, if val has a _qid_shape_ method, the number of qubits is computed from the length of the shape and returned e.g. len(shape). If neither method returns a value other than NotImplemented and a default value was specified, the default value is returned.

TypeError val doesn't have either a _num_qubits_ or a _qid_shape_ method (or they returned NotImplemented) and also no default value was specified.