cirq.qasm

Returns QASM code for the given value, if possible.

Used in the notebooks

Used in the tutorials

Different values require different sets of arguments. The general rule of thumb is that circuits don't need any, operations need a QasmArgs, and gates need both a QasmArgs and qubits.

val The value to turn into QASM code.
args A QasmArgs object to pass into the value's _qasm_ method. This is for needed for objects that only have a local idea of what's going on, e.g. a cirq.Operation in a bigger cirq.Circuit involving qubits that the operation wouldn't otherwise know about.
qubits A list of qubits that the value is being applied to. This is needed for cirq.Gate values, which otherwise wouldn't know what qubits to talk about.
default A default result to use if the value doesn't have a _qasm_ method or that method returns NotImplemented or None. If not specified, non-decomposable values cause a TypeError.

The result of val._qasm_(...), if val has a _qasm_ method and it didn't return NotImplemented or None. Otherwise default is returned, if it was specified. Otherwise an error is raised.

TypeError val didn't have a _qasm_ method (or that method returned NotImplemented or None) and default wasn't set.