cirq.qasm(val: Any, *, args: Optional[cirq.protocols.qasm.QasmArgs] = None, qubits: Optional[Iterable[cirq.Qid]] = None, default: TDefault = ([], )) → Union[str, TDefault][source]

Returns QASM code for the given value, if possible.

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, undecomposable 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.

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