Context Klasse

Eine isolierte Q#-Dolmetscherumgebung.

Ein Kontext stellt eine eigenständige Q#-Ausführungsumgebung bereit, in der Code von anderen Kontextinstanzen ausgewertet, kompiliert und isoliert ausgeführt wird. Jeder Kontext verwaltet einen eigenen Codenamespace.

Ein Kontext verfügt über ein code-Attribut, das ein Python Modul ist, das alle in diesem Kontext definierten Q#-Vorgänge und -Typen enthält. Auf diese Weise können Sie Q#-Vorgänge aus Python aufrufen.

Beispiel:


   ctx = qdk.Context()
   ctx.eval("operation Main() : Result { use q = Qubit(); X(q); MResetZ(q) }")
   assert ctx.run("Main()", 2) == [qdk.Result.One, qdk.Result.One]
   assert ctx.code.Main() == qdk.Result.One

Initialisiert einen neuen isolierten Q#-Kontext.

Konstruktor

Context(*, target_profile: TargetProfile = TargetProfile.Unrestricted, target_name: str | None = None, project_root: str | None = None, language_features: List[str] | None = None, _trace_circuit: bool | None = None, _is_global_context: bool = False)

Nur Schlüsselwortparameter

Name Beschreibung
target_profile

Durch Festlegen des Zielprofils kann der Q#-Interpreter Programme generieren, die mit einem bestimmten Ziel kompatibel sind. Siehe TargetProfile.

Standardwert: Unrestricted
target_name

Ein optionaler Name des Zielcomputers, der zum Ableiten der kompatiblen target_profile Einstellung verwendet werden soll.

Standardwert: None
project_root

Optionaler Pfad zu einem Stammverzeichnis mit einem Q#-Projekt, das eingeschlossen werden soll. Sie muss ein qsharp.json Projektmanifest enthalten.

Standardwert: None
language_features

Eine optionale Liste der zu aktivierenden Sprachfeatures. Diese entsprechen experimentellen oder Vorschau-Q#-Sprachfeatures. Gültige Werte sind:

  • "v2-preview-syntax": Aktiviert Q# v2-Vorschausyntax. Dadurch wird die Unterstützung für

das Bereichs-Qubit-Zuordnungsblockformular (use q = Qubit() { ... }), das stattdessen das Anweisungsformular (use q = Qubit();) erfordert. Außerdem wird die Anforderung zum Verwenden des set Schlüsselworts für veränderbare Variablenzuweisungen entfernt.

Standardwert: None
_trace_circuit
Standardwert: None
_is_global_context
Standardwert: False

Methoden

circuit

Synthetisiert einen Schaltkreis für ein Q#-Programm. Entweder ein Eintragsausdruck oder ein Vorgang muss angegeben werden.

compile

Kompiliert den Q#-Quellcode in ein Programm, das an ein Ziel übermittelt werden kann. Entweder ein Eintragsausdruck oder ein aufrufbarer Ausdruck mit Argumenten muss angegeben werden.

Beispiel:

dump_machine

Gibt den geringen Zustandsvektor des Simulators als StateDump -Objekt zurück.

eval

Wertet den Q#-Quellcode aus.

Die Ausgabe wird in der Konsole gedruckt.

get_target_profile

Gibt das Zielprofil für diesen Kontext zurück.

import_openqasm

Importiert OpenQASM-Quellcode in den Dolmetscher dieses Kontexts.

logical_counts

Extrahiert die Anzahl der logischen Ressourcen aus dem Q#-Quellcode. Entweder ein Eintragsausdruck oder ein aufrufbarer Ausdruck mit Argumenten muss angegeben werden.

run

Führt den angegebenen Q#-Ausdruck für die angegebene Anzahl von Aufnahmen aus. Jeder Schuss verwendet eine unabhängige Instanz des Simulators.

set_classical_seed

Legt den Ausgangswert für den Zufallszahlengenerator fest, der für klassische Zufallszahlenvorgänge der Standardbibliothek verwendet wird. Dies gilt für alle in diesem Kontext ausgeführten, kompilierten oder geschätzten Q#-Code.

set_quantum_seed

Legt den Samen für den Zufallszahlengenerator fest, der für Quantenmessungen verwendet wird. Dies gilt für alle in diesem Kontext ausgeführten, kompilierten oder geschätzten Q#-Code.

circuit

Synthetisiert einen Schaltkreis für ein Q#-Programm. Entweder ein Eintragsausdruck oder ein Vorgang muss angegeben werden.

circuit(entry_expr: str | Callable | GlobalCallable | Closure | None = None, *args, operation: str | None = None, generation_method: CircuitGenerationMethod | None = None, max_operations: int | None = None, source_locations: bool = False, group_by_scope: bool = True, prune_classical_qubits: bool = False) -> Circuit

Parameter

Name Beschreibung
entry_expr
str oder Callable

Ein Eintragsausdruck. Alternativ kann eine aufrufbare Datei bereitgestellt werden, die ein Q#-Aufruf erfordern muss.

Standardwert: None
*args
Erforderlich

Die Argumente, die an die aufrufbare Übergeben werden sollen, wenn eines angegeben wird.

Nur Schlüsselwortparameter

Name Beschreibung
operation
str

Der zu synthetisierende Vorgang. Dies kann ein Name eines Vorgangs oder eines Lambda-Ausdrucks sein. Der Vorgang darf nur Qubits oder Arrays von Qubits als Parameter verwenden.

Standardwert: None
generation_method

Die Methode, die für die Schaltungsgenerierung verwendet werden soll. ClassicalEval wertet den klassischen Kontrollfluss zur Schaltkreisgenerierung aus. Simulate führt eine vollständige Simulation aus, um den Schaltkreis nachzuverfolgen. Static verwendet teilauswertung und erfordert ein NichtzielprofilUnrestricted . Standardmäßig wird None die Generationsmethode automatisch ausgewählt.

Standardwert: None
max_operations
int

Die maximale Anzahl von Vorgängen, die in den Schaltkreis eingeschlossen werden sollen. Standardwerte, die None keine Beschränkung bedeuten.

Standardwert: None
source_locations

Wenn True, kommentiert jedes Gate mit seiner Quellposition.

Standardwert: False
group_by_scope

Wenn True, gruppiert Vorgänge nach ihrem enthaltenden Bereich, z. B. Funktionsdeklarationen oder Schleifenblöcke.

Standardwert: True
prune_classical_qubits

Wenn True, entfernt Qubits, die nie in einem Quantentor verwendet werden (z. B. Qubits nur als klassische Steuerelemente verwendet).

Standardwert: False

Gibt zurück

Typ Beschreibung
<xref:Circuit>

Der synthetisierte Schaltkreis.

Ausnahmen

Typ Beschreibung

Wenn ein Fehler auftritt, der den Schaltkreis synthesiert.

compile

Kompiliert den Q#-Quellcode in ein Programm, das an ein Ziel übermittelt werden kann. Entweder ein Eintragsausdruck oder ein aufrufbarer Ausdruck mit Argumenten muss angegeben werden.

Beispiel:

compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData

Parameter

Name Beschreibung
entry_expr
Erforderlich

Der Q#-Ausdruck, der als Einstiegspunkt für das Programm verwendet wird. Alternativ kann eine aufrufbare Datei bereitgestellt werden, die ein Q#-Aufruf erfordern muss.

*args
Erforderlich

Die Argumente, die an die aufrufbare Übergeben werden sollen, wenn eines angegeben wird.

Gibt zurück

Typ Beschreibung
<xref:QirInputData>

Das kompilierte Programm. Dient str() zum Abrufen der QIR-Zeichenfolge.

dump_machine

Gibt den geringen Zustandsvektor des Simulators als StateDump -Objekt zurück.

dump_machine() -> StateDump

Gibt zurück

Typ Beschreibung

Der Zustand des Simulators.

eval

Wertet den Q#-Quellcode aus.

Die Ausgabe wird in der Konsole gedruckt.

eval(source: str, *, save_events: bool = False) -> Any

Parameter

Name Beschreibung
source
Erforderlich

Der zu bewertende Q#-Quellcode.

Nur Schlüsselwortparameter

Name Beschreibung
save_events

Wenn true, werden alle Ausgaben gespeichert und zurückgegeben. Wenn falsch, werden sie gedruckt.

Standardwert: False

Gibt zurück

Typ Beschreibung
Any

Der wert, der von der letzten Anweisung im Quellcode oder der gespeicherten Ausgabe zurückgegeben wird, wenn save_events "true" ist.

Ausnahmen

Typ Beschreibung

Wenn ein Fehler beim Auswerten des Quellcodes vorliegt.

get_target_profile

Gibt das Zielprofil für diesen Kontext zurück.

get_target_profile() -> TargetProfile

import_openqasm

Importiert OpenQASM-Quellcode in den Dolmetscher dieses Kontexts.

import_openqasm(source: str, **kwargs: Any) -> Any

Parameter

Name Beschreibung
source
Erforderlich
str

Ein OpenQASM-Programm oder -Fragment.

**kwargs
Erforderlich

Zusätzliche Schlüsselwortargumente. Allgemeine Optionen:

  • name (str): Der Name des Programms. Dies wird als Einstiegspunkt für das Programm verwendet.

  • search_path (str): Der optionale Suchpfad zum Auflösen von Dateiverweisen.

  • output_semantics (OutputSemantics): Die Ausgabesemantik für die Kompilierung.

  • program_type (ProgramType): Der Typ der auszuführenden Programmkompilierung:

    • ProgramType.Operation (Standard): Die Quelle wird ein Q#-Vorgang im globalen Namespace mit Parametern für alle deklarierten klassischen Eingaben und Parameter für jede der deklarierten Qubits, während alle expliziten oder impliziten Ausgabedeklarationen zum Rückgabetyp des Vorgangs werden.

    • ProgramType.File: behandelt die Eingabequelle als eigenständiges Programm und erstellt einen Vorgang im Namespace, der qasm_import nur klassische Parameter verwendet, die erforderlichen Qubits intern zuordnet und diese am Ende des Vorgangs freigibt.

    • ProgramType.Fragments: führt die bereitgestellte Quelle im aktuellen interaktiven Interpreter aus, definiert alle deklarierten Variablen oder Vorgänge im aktuellen Bereich und gibt den Wert der letzten Anweisung in der Quelle zurück.

Gibt zurück

Typ Beschreibung
Any

Der wert, der von der letzten Anweisung im Quellcode zurückgegeben wird.

Ausnahmen

Typ Beschreibung

Wenn beim Generieren, Analysieren oder Analysieren der OpenQASM-Quelle ein Fehler auftritt.

Wenn beim Kompilieren des Programms ein Fehler auftritt.

logical_counts

Extrahiert die Anzahl der logischen Ressourcen aus dem Q#-Quellcode. Entweder ein Eintragsausdruck oder ein aufrufbarer Ausdruck mit Argumenten muss angegeben werden.

logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts

Parameter

Name Beschreibung
entry_expr
Erforderlich

Der Eintragsausdruck. Alternativ kann eine aufrufbare Datei bereitgestellt werden, die ein Q#-Aufruf erfordern muss.

Gibt zurück

Typ Beschreibung

Programmressourcen in Bezug auf die Anzahl der logischen Toren.

run

Führt den angegebenen Q#-Ausdruck für die angegebene Anzahl von Aufnahmen aus. Jeder Schuss verwendet eine unabhängige Instanz des Simulators.

run(entry_expr: str | Callable | GlobalCallable | Closure, shots: int, *args, on_result: Callable[[ShotResult], None] | None = None, save_events: bool = False, noise: Tuple[float, float, float] | PauliNoise | BitFlipNoise | PhaseFlipNoise | DepolarizingNoise | NoiseConfig | None = None, qubit_loss: float | None = None, seed: int | None = None, type: Literal['sparse', 'clifford'] | None = None, num_qubits: int | None = None) -> List[Any]

Parameter

Name Beschreibung
entry_expr
Erforderlich

Der Eintragsausdruck. Alternativ kann eine aufrufbare Datei bereitgestellt werden, die ein Q#-Aufruf erfordern muss.

shots
Erforderlich

Die Anzahl der auszuführenden Aufnahmen.

*args
Erforderlich

Die Argumente, die an die aufrufbare Übergeben werden sollen, wenn eines angegeben wird.

on_result
Erforderlich

Eine Rückruffunktion, die mit jedem Ergebnis aufgerufen wird.

save_events
Erforderlich

Wenn true, wird die Ausgabe der einzelnen Aufnahmen gespeichert. Wenn falsch, werden sie gedruckt.

noise
Erforderlich

Das in der Simulation zu verwendende Rauschen.

qubit_loss
Erforderlich

Die Wahrscheinlichkeit eines Qubitverlusts in der Simulation.

seed
Erforderlich

Der zu verwendende Seed für den Zufallszahlengenerator in der Simulation, falls vorhanden.

type
Erforderlich

Der zu verwendende Simulatortyp. Wenn nicht angegeben, wird die standardmäßige Vektorsimulation mit geringem Zustand verwendet.

num_qubits
Erforderlich

Die Anzahl der qubits, die für den Simulationstyp "clifford" verwendet werden sollen. Wenn nicht angegeben, geht der Clifford-Simulator von einer Standardeinstellung von 1000 Qubits aus.

Nur Schlüsselwortparameter

Name Beschreibung
on_result
Standardwert: None
save_events
Standardwert: False
noise
Standardwert: None
qubit_loss
Standardwert: None
seed
Standardwert: None
type
Standardwert: None
num_qubits
Standardwert: None

Gibt zurück

Typ Beschreibung

Eine Liste der Ergebnisse oder Laufzeitfehler. Ist save_events "true", wird eine Liste der ShotResult zurückgegeben.

Ausnahmen

Typ Beschreibung

Wenn beim Interpretieren der Eingabe ein Fehler auftritt.

Wenn die Anzahl der Aufnahmen kleiner als 1 ist.

set_classical_seed

Legt den Ausgangswert für den Zufallszahlengenerator fest, der für klassische Zufallszahlenvorgänge der Standardbibliothek verwendet wird. Dies gilt für alle in diesem Kontext ausgeführten, kompilierten oder geschätzten Q#-Code.

set_classical_seed(seed: int | None) -> None

Parameter

Name Beschreibung
seed
Erforderlich

Der zu verwendende Seed für den klassischen Zufallszahlengenerator. Wenn keine, wird der Samen aus Entropie generiert.

set_quantum_seed

Legt den Samen für den Zufallszahlengenerator fest, der für Quantenmessungen verwendet wird. Dies gilt für alle in diesem Kontext ausgeführten, kompilierten oder geschätzten Q#-Code.

set_quantum_seed(seed: int | None) -> None

Parameter

Name Beschreibung
seed
Erforderlich

Der seed to use for the quantum random number generator. Wenn keine, wird der Samen aus Entropie generiert.

Attribute

code

code: Any