Julia包是否有API可用?

6

你好,我是一名老Java/Haskell/Cobol程序员。Julia有许多出色的功能,但我正在努力学习我认为的基础知识。特别是如何查找众多软件包(如Flux、Plots、DifferentialEquations等)中的内容。

  1. 我已经尝试过VSCode、Jupyter笔记本和Julia REPL,但没有找到在编写程序时提取这些基本信息的方法。
  2. 我也未能在网络上找到有关此信息的摘要,只能在每个软件包的教程中零散地获取。

是否有"cheetsheet"或类似于Java API的"概述"文档?


1
从社会学的角度来看,Julia非常实用:许多(甚至是成熟的)功能都在Github上的第三方包中,你需要阅读很多Readmes和代码本身。许多包确实有良好的文档(通常是自托管在Github页面或类似页面上),但也有很多没有。这样做的好处是你可以一直习惯于阅读原始来源! - phipsgabler
1个回答

12

对于基础知识,我特别推荐两份“速查表”

然而,软件包生态系统过于多样化,任何速查表都无法覆盖所有有用的软件包,因此针对单个软件包,我建议使用语言内置的一些技巧:

  • 在REPL中使用制表符自动完成。输入PackageName.<tab><tab>将打印出PackageName命名空间中的所有内容,例如:
julia> using Statistics

julia> Statistics.

_conj               _vmean               covm                 quantile!
_getnobs            centralize_sumabs2   covzm                range_varm
_mean               centralize_sumabs2!  eval                 realXcY
_mean_promote       centralizedabs2fun   include              sqrt!
_median             clampcor             mean                 std
_quantile           cor                  mean!                stdm
_quantilesort!      corm                 median               unscaled_covzm
_std                corzm                median!              var
_var                cov                  middle               varm
_varm               cov2cor!             quantile             varm!

请注意,由于这打印包中的所有内容,因此包括可能不适用于一般用途的函数。按照惯例,任何以下划线 _ 开头的函数均不适用于公共使用。

  • names 函数-- 可以列出给定 Julia 包所导出的所有函数的列表(因此比只键入PackageName.<tab><tab>更为选择性)。这实际上是任何给定 Julia 包的公共 API:
julia> using Statistics

julia> names(Statistics)
14-element Vector{Symbol}:
 :Statistics
 :cor
 :cov
 :mean
 :mean!
 :median
 :median!
 :middle
 :quantile
 :quantile!
 :std
 :stdm
 :var
 :varm
  • 当您找到看起来有希望的函数时,通过在REPL提示符下键入?访问内置帮助:
help?> cov
search: cov convert StackOverflowError CUSOLVER has_cusolvermg code_llvm @code_llvm cudaconvert

  cov(x::AbstractVector; corrected::Bool=true)

  Compute the variance of the vector x. If corrected is true (the default) then the sum is scaled with
  n-1, whereas the sum is scaled with n if corrected is false where n = length(x).

  ────────────────────────────────────────────────────────────────────────────────────────────────────

  cov(X::AbstractMatrix; dims::Int=1, corrected::Bool=true)

  Compute the covariance matrix of the matrix X along the dimension dims. If corrected is true (the
  default) then the sum is scaled with n-1, whereas the sum is scaled with n if corrected is false
  where n = size(X, dims).
  ────────────────────────────────────────────────────────────────────────────────────────────────────
...
...
...
  • methodswith函数 -- 可以给你一个列表,列出所有可以在指定Type的对象上操作的函数:
julia> using LinearAlgebra, SparseArrays

julia> methodswith(SparseMatrixCSC)

[1] sizehint!(S::SparseMatrixCSC, n::Integer) in SparseArrays
[2] cov(X::SparseMatrixCSC; dims, corrected) in Statistics
[3] \(L::SuiteSparse.CHOLMOD.Factor, B::SparseMatrixCSC) in SuiteSparse.CHOLMOD 
[4] lu(A::SparseMatrixCSC; check) in SuiteSparse.UMFPACK a
[5] lu!(F::SuiteSparse.UMFPACK.UmfpackLU, A::SparseMatrixCSC; check) in SuiteSparse.UMFPACK
[6] qr(A::SparseMatrixCSC; tol) in SuiteSparse.SPQR 
[7] rank(S::SparseMatrixCSC) in SuiteSparse.SPQR
...
...
...
  • 根据 @OscarSmith 的建议,您可以在 JuliaHub 上搜索多个软件包中的函数、类型和其他符号,以及搜索所有 Julia 软件包的全文。例如:sprandn

最后,为了了解标准库之外的软件包生态系统中有哪些软件包,我建议加入几个 Julia 社区论坛之一,如 discourseslackzulip


2
你可能想添加一行关于JuliaHub能够跨所有包搜索函数的能力。 - Oscar Smith
1
非常感谢。也许我显得有点老,但我永远不会发现这件事。 - david streader
1
还有一个函数apropos,可以通过关键字搜索函数(其中也包括已加载的包)。 - Alex338207

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