在哪里可以找到 Julia 中函数的签名?

And*_*yuk 6 julia

刚开始使用 Julia,但我不知道你是如何在任何文档中找到函数签名的......

例如,假设我想查看gradientFlux 包的函数采用哪些参数。我怎样才能找到那个?如果我去flux docs,它主要是英文文档而不是函数签名。类似于 julia 文档。

任何提示表示赞赏。

Bog*_*ski 6

使用该methods函数获取给定函数的所有方法的签名列表。例如:

julia> methods(sin)
# 13 methods for generic function "sin":
[1] sin(x::BigFloat) in Base.MPFR at mpfr.jl:727
[2] sin(::Missing) in Base.Math at math.jl:1197
[3] sin(a::Complex{Float16}) in Base.Math at math.jl:1145
[4] sin(a::Float16) in Base.Math at math.jl:1144
[5] sin(z::Complex{T}) where T in Base at complex.jl:804
[6] sin(x::T) where T<:Union{Float32, Float64} in Base.Math at special/trig.jl:29
[7] sin(x::Real) in Base.Math at special/trig.jl:53
[8] sin(A::LinearAlgebra.Hermitian{var"#s827",S} where S<:(AbstractArray{var"#s828",2} where var"#s828"<:var"#s827") where var"#s827"<:Complex) in LinearAlgebra at /home/bkamins/julia/share/julia/stdlib/v1.5/LinearAlgebra/src/symmetric.jl:922
[9] sin(A::Union{LinearAlgebra.Hermitian{var"#s828",S}, LinearAlgebra.Symmetric{var"#s828",S}} where S where var"#s828"<:Real) in LinearAlgebra at /home/bkamins/julia/share/julia/stdlib/v1.5/LinearAlgebra/src/symmetric.jl:918
[10] sin(D::LinearAlgebra.Diagonal) in LinearAlgebra at /home/bkamins/julia/share/julia/stdlib/v1.5/LinearAlgebra/src/diagonal.jl:576
[11] sin(A::AbstractArray{var"#s828",2} where var"#s828"<:Real) in LinearAlgebra at /home/bkamins/julia/share/julia/stdlib/v1.5/LinearAlgebra/src/dense.jl:836
[12] sin(A::AbstractArray{var"#s828",2} where var"#s828"<:Complex) in LinearAlgebra at /home/bkamins/julia/share/julia/stdlib/v1.5/LinearAlgebra/src/dense.jl:843
[13] sin(J::LinearAlgebra.UniformScaling) in LinearAlgebra at /home/bkamins/julia/share/julia/stdlib/v1.5/LinearAlgebra/src/uniformscaling.jl:139
Run Code Online (Sandbox Code Playgroud)


Prz*_*fel 5

似乎此功能缺乏适当的文档,并且其他答案中描述的标准方法(?用于帮助 REPL 或方法)不会很有用。

在这种情况下,我通常会输入以下内容:

@edit gradient(1,2)   
Run Code Online (Sandbox Code Playgroud)

这让我methods想到了函数定义(实际上我可以怀疑第一个参数是一个函数,但运行没有任何指示。

这将打开编辑器,您将看到如下内容:

function gradient(f, args...)
  y, back = pullback(f, args...)
  return back(sensitivity(y))
end
Run Code Online (Sandbox Code Playgroud)

所以在这个阶段你知道你的函数在做什么。如果没有,也许您可​​以搜索pullback键入?pullback. 当你这样做时,你会发现没有这方面的文档,但它是Zygote.

但是,输入 GoogleZygote.pullback会将您转至所需的文档:https : //fluxml.ai/Zygote.jl/latest/adjoints/

所以这有点骇人听闻。大多数 Julia 库都有很好的文档记录,但如果不是,我总是从@edit宏开始工作。