Context 类
独立的 Q# 解释器环境。
上下文提供自包含的 Q# 执行环境,可在其中独立于其他上下文实例评估、编译和执行代码。 每个上下文都维护自己的代码命名空间。
上下文具有 code 属性,该属性是一个Python模块,其中包含在此上下文中定义的所有 Q# 操作和类型。 这允许从Python调用 Q# 操作。
Example:
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)
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
target_profile
|
设置目标配置文件允许 Q# 解释器生成与特定目标兼容的程序。 请参阅 TargetProfile。 默认值: Unrestricted
|
|
target_name
|
用于推断兼容target_profile设置的目标计算机的可选名称。 默认值: None
|
|
project_root
|
包含 Q# 项目的根目录的可选路径。 它必须包含 qsharp.json 项目清单。 默认值: None
|
|
language_features
|
要启用的语言功能标志的可选列表。 它们对应于实验性或预览版 Q# 语言功能。 有效值为:
作用域内量子比特分配块形式( 默认值: None
|
|
_trace_circuit
|
默认值: None
|
|
_is_global_context
|
默认值: False
|
方法
| circuit |
合成 Q# 程序的线路。 必须提供条目表达式或操作。 |
| compile |
将 Q# 源代码编译为可提交到目标的程序。 必须提供条目表达式或具有参数的可调用项。 Example: |
| 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# 可调用的。 默认值: None
|
|
*args
必需
|
要传递给可调用项的参数(如果提供)。 |
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
operation
|
要合成的操作。 这可以是操作的名称或 lambda 表达式。 该操作必须仅采用量子比特或量子比特数组作为参数。 默认值: None
|
|
generation_method
|
用于生成线路的方法。
ClassicalEval 评估线路生成时的传统控制流。
Simulate 运行完整的模拟来跟踪线路。
Static 使用部分评估,需要非 默认值: None
|
|
max_operations
|
要包括在线路中的最大操作数。
默认值: None
|
|
source_locations
|
如果 默认值: False
|
|
group_by_scope
|
如果 默认值: True
|
|
prune_classical_qubits
|
如果 默认值: False
|
返回
| 类型 | 说明 |
|---|---|
|
<xref:Circuit>
|
合成线路。 |
例外
| 类型 | 说明 |
|---|---|
|
如果合成线路时出错。 |
compile
将 Q# 源代码编译为可提交到目标的程序。 必须提供条目表达式或具有参数的可调用项。
Example:
compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData
参数
| 名称 | 说明 |
|---|---|
|
entry_expr
必需
|
将用作程序的入口点的 Q# 表达式。 或者,可以提供可调用方,这必须是 Q# 可调用的。 |
|
*args
必需
|
要传递给可调用项的参数(如果提供)。 |
返回
| 类型 | 说明 |
|---|---|
|
<xref:QirInputData>
|
已编译的程序。 用于 |
dump_machine
eval
评估 Q# 源代码。
输出打印到控制台。
eval(source: str, *, save_events: bool = False) -> Any
参数
| 名称 | 说明 |
|---|---|
|
source
必需
|
要评估的 Q# 源代码。 |
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
save_events
|
如果为 true,将保存并返回所有输出。 如果为 false,则会打印它们。 默认值: 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 个量子比特。 |
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
on_result
|
默认值: None
|
|
save_events
|
默认值: False
|
|
noise
|
默认值: None
|
|
qubit_loss
|
默认值: None
|
|
seed
|
默认值: None
|
|
type
|
默认值: None
|
|
num_qubits
|
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
结果或运行时错误的列表。 如果 |
例外
| 类型 | 说明 |
|---|---|
|
如果解释输入时出错。 |
|
|
如果拍摄次数小于 1。 |
set_classical_seed
设置用于标准库经典随机数运算的随机数生成器的种子。 这适用于在此上下文中执行、编译或估计的所有 Q# 代码。
set_classical_seed(seed: int | None) -> None
参数
| 名称 | 说明 |
|---|---|
|
seed
必需
|
用于经典随机数生成器的种子。 如果为 None,则种子将从 entropy 生成。 |
set_quantum_seed
设置用于量子度量的随机数生成器的种子。 这适用于在此上下文中执行、编译或估计的所有 Q# 代码。
set_quantum_seed(seed: int | None) -> None
参数
| 名称 | 说明 |
|---|---|
|
seed
必需
|
要用于量子随机数生成器的种子。 如果为 None,则种子将从 entropy 生成。 |
属性
code
code: Any