我是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返回值而不仅仅是打印信息.
小智 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)
希望,这是有用的.
iva*_*rne 13
不确定是否有更好的东西,但是
names(Main)[4:end]
Run Code Online (Sandbox Code Playgroud)
似乎工作.该[4:end]部分是因为它包括:Main,:Core和:Base我想你不会想.我希望他们永远都在开始.