在Julia语言的代码示例中看到的 `julia>` 是什么意思?

3

我是Julia语言的新手,看到很多文档中的代码示例中都有julia>

起初,我以为这只是REPL的代码示例,但我在像脚本一样的代码示例中也看到了它们,所以我很困惑。

以下是MJLFlux.jl仓库的一个示例:

using MLJ
import RDatasets
iris = RDatasets.dataset("datasets", "iris");
y, X = unpack(iris, ==(:Species), colname -> true, rng=123);
@load NeuralNetworkClassifier

julia> clf = NeuralNetworkClassifier()
NeuralNetworkClassifier(
    builder = Short(
            n_hidden = 0,
            dropout = 0.5,
            σ = NNlib.σ),
    finaliser = NNlib.softmax,
    optimiser = ADAM(0.001, (0.9, 0.999), IdDict{Any,Any}()),
    loss = Flux.crossentropy,
    epochs = 10,
    batch_size = 1,
    lambda = 0.0,
    alpha = 0.0,
    optimiser_changes_trigger_retraining = false) @ 160

3
我认为这只是意味着他们从一个 repl 中复制并粘贴了代码。Julia 足够聪明,能够忽略行首的 julia> 符号,所以你可以直接复制粘贴。 - Oscar Smith
5
我猜他们想在这些最简范例中展示特定行的输出。因此,他们不想要输出的行被像脚本一样压缩显示,而那些带有 "julia>" 提示符的行则被分隔开来,显示来自 REPL 的输出。 - Benoit Pasquier
3
有些代码可能是从文件中复制的,有些则是从 REPL 中复制的。我也倾向于在何时包含 julia> 提示符以及何时删除它时存在一些不一致性。 - DNF
3
我认为一个好的实践是将从 REPL 复制的代码块与非复制的代码块分开。复制粘贴到 REPL 的能力很神奇,但只有在整个段落被复制时才有效 --- 如果你把上面的代码块粘贴过去,你可能会得到"ERROR: error in method definition: function Base.> must be explicitly imported to be extended"的错误提示,因为 julia> clf = NeuralNetworkClassifier() 会被读作函数定义 >(julia, clf) = ... - mcabbott
@mcabbott,是的,那就是我最初遇到的错误,这促使我提出了这个问题。像您建议的那样有区别和一致性会很好。 - Miss Swiss
显示剩余4条评论
1个回答

2
julia> 只是REPL提示符,就像你说的一样。
在示例中包含它的一个原因是为了让命令的输出立即显示在命令本身下面。我认为这就是您示例代码中不一致的原因。作者可能为了简洁起见省略了前几行的提示符和输出,但确实想展示最后一行的输出。
另一个原因可能是区分作者存储在文件中的代码与在REPL中运行的代码。设置问题环境的代码可能会从文件中运行一次,而调用已建立函数的代码可能会在REPL中进行多次调整和执行。
没有严格的规定,您可以基本忽略它,只需注意提示符下方的文本可能是输出而不是执行的代码。(请注意,对于一个REPL提示符,可能有多个输入和输出行。)
julia> for i in 1:5
           println(i)
       end
1
2
3
4
5

哦,所以我猜这是故意混合的?那我想我只能逐渐习惯了。虽然如此,确认一下还是很好的。谢谢。 - Miss Swiss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接