获取Julia Lang中的当前变量列表

vin*_*k n 46 julia

我是Julia Lang的新手.我来自Matlab的背景.

在Matlab中,当按下whos命令时我将获得当前范围内的所有变量; 而且,我可以将它们存储在另一个变量中x=whos;,例如Julia中是否存在这样的命令?Matlab中的示例代码:

>> a=3;
>> b=4;
>> whos
Variables in the current scope:

Attr Name        Size                     Bytes  Class
==== ====        ====                     =====  ===== 
    a            1x1                          8  double
    b            1x1                          8  double
    prefix       1x16                        16  char

Total is 18 elements using 32 bytes.
Run Code Online (Sandbox Code Playgroud)

ast*_*nna 36

您可以whos像使用Matlab命令一样使用Julia的函数.

julia> whos()
Base                          Module
Core                          Module
Main                          Module
ans                           Nothing

julia> x = 5
5

julia> whos()
Base                          Module
Core                          Module
Main                          Module
ans                           Int64
x                             Int64
Run Code Online (Sandbox Code Playgroud)

您导入本地范围(使用using)的任何模块(包/库)也将显示在列表中(Module如上所述,如上面的Base,Core和Main).

此外,您可以询问模块导出的名称.Base是包含标准库的模块.

julia> whos(Base)
!                             Function
!=                            Function
!==                           Function
$                             Function
%                             Function
&                             Function
*                             Function
+                             Function
.... (lots and lots more)
Run Code Online (Sandbox Code Playgroud)

考虑到该结果从屏幕上滚动,您可以理解为什么要过滤结果.为此,您可以使用正则表达式.(有关Julia正则表达式的更多信息,请参阅本手册部分)

julia> whos(r"M")
Main                          Module

julia> whos(Base, r"Match"i)
DimensionMismatch             DataType
RegexMatch                    DataType
each_match                    Function
eachmatch                     Function
ismatch                       Function
match                         Function
matchall                      Function
Run Code Online (Sandbox Code Playgroud)

whos在你问之前我没有意识到这个功能,所以感谢你帮助我学习新东西.:)

github上的Julia问题#3393是关于为whos输出添加内存大小.它还引用了whos返回值而不仅仅是打印信息.

  • 您是否考虑过使用IJulia笔记本而不是Julia Studio? (2认同)
  • 这不再有效。见下文。 (2认同)

小智 17

更新:

whos() 
Run Code Online (Sandbox Code Playgroud)

...在iJulia或Julia-1.0.0中的命令提示符下无效.

不过,它正在Julia-0.6.4中工作.

另一方面,

varinfo()
Run Code Online (Sandbox Code Playgroud)

....打印有关模块中导出的全局变量的信息.例如,

julia-1.0> varinfo()
name                    size summary                        
–––––––––––––––– ––––––––––– –––––––––––––––––––––––––––––––
Base                         Module                         
Core                         Module                         
InteractiveUtils 154.271 KiB Module                         
Main                         Module                         
PyPlot           781.872 KiB Module                         
ans               50.323 KiB Plots.Plot{Plots.PyPlotBackend}
myrepl               0 bytes typeof(myrepl)                 
x                   88 bytes 1×6 Array{Int64,2}             
y                    0 bytes typeof(y)                      
Run Code Online (Sandbox Code Playgroud)

希望,这是有用的.

  • 这应该是新的答案 (7认同)

iva*_*rne 13

不确定是否有更好的东西,但是

names(Main)[4:end]
Run Code Online (Sandbox Code Playgroud)

似乎工作.该[4:end]部分是因为它包括:Main,:Core:Base我想你不会想.我希望他们永远都在开始.


小智 8

whos()在较新版本的 Julia(1.0 及以上版本)中不可用。varinfo()代替使用。例如,varinfo(Core,r".*field.*")