Context Класс
Изолированная среда интерпретатора Q#.
Контекст предоставляет локальную среду выполнения Q#, в которой код оценивается, компилируется и выполняется в изоляции от других экземпляров контекста. Каждый контекст поддерживает собственное пространство имен кода.
Контекст имеет атрибут code который является модулем Python, содержащим все операции и типы Q#, определенные в этом контексте. Это позволяет вызывать операции Q# из Python.
Пример:
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
Инициализирует новый изолированный контекст Q#.
Конструктор
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)
Параметры Keyword-Only
| Имя | Описание |
|---|---|
|
target_profile
|
Задание целевого профиля позволяет интерпретатору Q# создавать программы, совместимые с определенным целевым объектом. См. TargetProfile. Default value: Unrestricted
|
|
target_name
|
Необязательное имя целевого компьютера, используемого для вывода совместимого target_profile параметра. Default value: None
|
|
project_root
|
Необязательный путь к корневому каталогу с проектом Q# для включения. Он должен содержать манифест проекта qsharp.json. Default value: None
|
|
language_features
|
Необязательный список флагов функций языка для включения. Они соответствуют экспериментальным или предварительным версиям языковых возможностей Q#. Допустимые значения:
форма блока выделения кубитов ( Default value: None
|
|
_trace_circuit
|
Default value: None
|
|
_is_global_context
|
Default value: False
|
Методы
| circuit |
Синтезирует канал для программы Q#. Необходимо указать выражение записи или операцию. |
| compile |
Компилирует исходный код Q# в программу, которую можно отправить в целевой объект. Необходимо указать выражение записи или вызываемое с аргументами. Пример: |
| dump_machine |
Возвращает разреженный вектор состояния симулятора в качестве объекта StateDump. |
| eval |
Оценивает исходный код Q#. Выходные данные печатаются в консоли. |
| get_target_profile |
Возвращает целевой профиль для этого контекста. |
| import_openqasm |
Импортирует исходный код OpenQASM в интерпретатор этого контекста. |
| logical_counts |
Извлекает количество логических ресурсов из исходного кода Q#. Необходимо указать выражение записи или вызываемое с аргументами. |
| run |
Выполняет заданное выражение Q# для заданного количества снимков. Каждый снимок использует независимый экземпляр симулятора. |
| set_classical_seed |
Задает начальное значение для генератора случайных чисел, используемого для классических операций случайного числа стандартной библиотеки. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте. |
| set_quantum_seed |
Задает начальное значение для генератора случайных чисел, используемого для квантовых измерений. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте. |
circuit
Синтезирует канал для программы Q#. Необходимо указать выражение записи или операцию.
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
Параметры
| Имя | Описание |
|---|---|
|
entry_expr
|
Выражение записи. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#. Default value: None
|
|
*args
Обязательно
|
Аргументы для передачи вызываемому объекту, если он указан. |
Параметры Keyword-Only
| Имя | Описание |
|---|---|
|
operation
|
Операция синтезирования. Это может быть имя операции или лямбда-выражения. Операция должна принимать только кубиты или массивы кубитов в качестве параметров. Default value: None
|
|
generation_method
|
Метод, используемый для создания канала.
ClassicalEval оценивает классический поток управления во время создания канала.
Simulate выполняет полное моделирование для трассировки канала.
Static использует частичное вычисление и требует нецелевых профилей Default value: None
|
|
max_operations
|
Максимальное количество операций, включаемых в канал. По умолчанию это означает, что Default value: None
|
|
source_locations
|
Если Default value: False
|
|
group_by_scope
|
Если Default value: True
|
|
prune_classical_qubits
|
Если Default value: False
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
<xref:Circuit>
|
Синтезированный канал. |
Исключения
| Тип | Описание |
|---|---|
|
Если возникает ошибка синтезирования канала. |
compile
Компилирует исходный код Q# в программу, которую можно отправить в целевой объект. Необходимо указать выражение записи или вызываемое с аргументами.
Пример:
compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData
Параметры
| Имя | Описание |
|---|---|
|
entry_expr
Обязательно
|
Выражение Q#, которое будет использоваться в качестве точки входа для программы. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#. |
|
*args
Обязательно
|
Аргументы для передачи вызываемому объекту, если он указан. |
Возвращаемое значение
| Тип | Описание |
|---|---|
|
<xref:QirInputData>
|
Скомпилированная программа. Используется |
dump_machine
Возвращает разреженный вектор состояния симулятора в качестве объекта StateDump.
dump_machine() -> StateDump
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Состояние симулятора. |
eval
Оценивает исходный код Q#.
Выходные данные печатаются в консоли.
eval(source: str, *, save_events: bool = False) -> Any
Параметры
| Имя | Описание |
|---|---|
|
source
Обязательно
|
Исходный код Q# для вычисления. |
Параметры Keyword-Only
| Имя | Описание |
|---|---|
|
save_events
|
Если значение true, все выходные данные будут сохранены и возвращены. Если значение false, они будут напечатаны. Default value: False
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Значение, возвращаемое последней инструкцией в исходном коде, или сохраненные выходные данные, если |
Исключения
| Тип | Описание |
|---|---|
|
Если возникает ошибка при оценке исходного кода. |
get_target_profile
Возвращает целевой профиль для этого контекста.
get_target_profile() -> TargetProfile
import_openqasm
Импортирует исходный код OpenQASM в интерпретатор этого контекста.
import_openqasm(source: str, **kwargs: Any) -> Any
Параметры
| Имя | Описание |
|---|---|
|
source
Обязательно
|
Программа или фрагмент OpenQASM. |
|
**kwargs
Обязательно
|
Дополнительные аргументы ключевых слов. Распространенные варианты:
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Значение, возвращаемое последней инструкцией в исходном коде. |
Исключения
| Тип | Описание |
|---|---|
|
Если возникает ошибка при создании, анализе или анализе источника OpenQASM. |
|
|
Если возникает ошибка компиляции программы. |
logical_counts
Извлекает количество логических ресурсов из исходного кода Q#. Необходимо указать выражение записи или вызываемое с аргументами.
logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts
Параметры
| Имя | Описание |
|---|---|
|
entry_expr
Обязательно
|
Выражение записи. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#. |
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Программные ресурсы с точки зрения количества логических ворот. |
run
Выполняет заданное выражение Q# для заданного количества снимков. Каждый снимок использует независимый экземпляр симулятора.
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]
Параметры
| Имя | Описание |
|---|---|
|
entry_expr
Обязательно
|
Выражение записи. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#. |
|
shots
Обязательно
|
Количество выстрелов для запуска. |
|
*args
Обязательно
|
Аргументы для передачи вызываемому объекту, если он указан. |
|
on_result
Обязательно
|
Функция обратного вызова, которая будет вызываться с каждым результатом. |
|
save_events
Обязательно
|
Если значение true, выходные данные каждого снимка будут сохранены. Если значение false, они будут напечатаны. |
|
noise
Обязательно
|
Шум, используемый в имитации. |
|
qubit_loss
Обязательно
|
Вероятность потери кубитов в имитации. |
|
seed
Обязательно
|
Начальное значение, используемое для генератора случайных чисел в моделировании, если таковой есть. |
|
type
Обязательно
|
Тип используемого симулятора. Если не указано, будет использоваться разреженное векторное моделирование состояния по умолчанию. |
|
num_qubits
Обязательно
|
Количество кубитов, используемых для типа моделирования "clifford". Если это не указано, симулятор Clifford предполагает значение по умолчанию 1000 кубитов. |
Параметры Keyword-Only
| Имя | Описание |
|---|---|
|
on_result
|
Default value: None
|
|
save_events
|
Default value: False
|
|
noise
|
Default value: None
|
|
qubit_loss
|
Default value: None
|
|
seed
|
Default value: None
|
|
type
|
Default value: None
|
|
num_qubits
|
Default value: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Список результатов или ошибок среды выполнения. Если |
Исключения
| Тип | Описание |
|---|---|
|
Если возникает ошибка, интерпретируемая входные данные. |
|
|
Если количество выстрелов меньше 1. |
set_classical_seed
Задает начальное значение для генератора случайных чисел, используемого для классических операций случайного числа стандартной библиотеки. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте.
set_classical_seed(seed: int | None) -> None
Параметры
| Имя | Описание |
|---|---|
|
seed
Обязательно
|
Начальное значение, используемое для классического генератора случайных чисел. Если нет, то начальное значение будет создано из энтропии. |
set_quantum_seed
Задает начальное значение для генератора случайных чисел, используемого для квантовых измерений. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте.
set_quantum_seed(seed: int | None) -> None
Параметры
| Имя | Описание |
|---|---|
|
seed
Обязательно
|
Начальное значение, используемое для генератора квантовых случайных чисел. Если нет, то начальное значение будет создано из энтропии. |
Атрибуты
code
code: Any