【问题标题】:How to list all of Julia's internal variables?如何列出 Julia 的所有内部变量?
【发布时间】:2016-05-24 23:20:49
【问题描述】:

Julia 有许多内部变量,例如 WORD_SIZE(指示目标系统是 32 位还是 64 位)和 CPU_CORES(当前可用的 cpu 内核数)。

在 Julia REPL 中,有没有办法列出所有这些内部变量?

AFAIK、whosnames(Main) 没有显示它们...

编辑:从这个previous question on listing exported function names,我看到names(Base) 确实显示了这些内部变量,以及Base 模块中的所有其他导出项。

【问题讨论】:

  • 这些变量在 Base 的子模块中,whos(Base.Sys) 显示它们。
  • 谢谢!把它作为答案,我会把它标记为正确的,@GnimucK。
  • 这并没有为我列出所有变量,只是其中的几个。不是,比如 JULIA_HOME、STDIN、ENV 等。
  • @DNF 嗯,是的,我现在看到了...所以这意味着我的问题仍然没有答案...

标签: julia read-eval-print-loop


【解决方案1】:

正如@DNF 在上面的评论中指出的那样,whos(Base.Sys) 不会打印Base 中的所有internal(constant) 变量。但我们可以通过以下方式直接从whos(Base) 搜索这些变量:

julia> whos(Base, r"^\s*[A-Z_]+$")
                          ARGS      0 bytes  0-element Array{UTF8String,1}
                          BLAS    214 KB     Module
                     CPU_CORES      8 bytes  Int64
                        C_NULL      8 bytes  Ptr{Void}
                    ENDIAN_BOM      4 bytes  UInt32
                           ENV      0 bytes  Base.EnvHash with 29 entries
                          FFTW    149 KB     Module
                          HTML    168 bytes  DataType
                             I      8 bytes  UniformScaling{Int64}
                            IO     92 bytes  DataType
                    JULIA_HOME     66 bytes  ASCIIString
                        LAPACK    933 KB     Module
                     LOAD_PATH    190 bytes  2-element Array{ByteString,1}
                          MIME    148 bytes  DataType
                       OS_NAME      0 bytes  Symbol
                        STDERR    217 bytes  Base.TTY
                         STDIN     64 KB     Base.TTY
                        STDOUT    217 bytes  Base.TTY
                       VERSION     40 bytes  VersionNumber
                     WORD_SIZE      8 bytes  Int64

这在于 Julia 的常量是大写的。您可能会发现一些模块也在列表中,但很容易识别。事实上,可以使用更复杂的正则表达式来驱逐它们。

请注意,那些未导出到Base 的变量将不会显示出来。例如

whos(Base.Libdl)

【讨论】:

  • 啊,我也尝试使用正则表达式,但使用匿名函数和find。您的解决方案要好得多。
猜你喜欢
  • 2010-10-19
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多