61
votes

I am new to Julia Lang. I am coming from the background of Matlab.

In Matlab, when pressing whos command I will get all variables in the current scope; and also, I can store them in another variable like x=whos; Is there such commands exists in Julia? Example code in 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.
5

5 Answers

37
votes

You can use Julia's whos functions just like that Matlab command.

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

Any modules (packages/libraries) you import into your local scope (using using) will also show up in the list (as Modules, like Base, Core, and Main above).

Additionally, you can ask about names exported by Modules. Base is the module containing the standard library.

julia> whos(Base)
!                             Function
!=                            Function
!==                           Function
$                             Function
%                             Function
&                             Function
*                             Function
+                             Function
.... (lots and lots more)

Considering that that result scrolls way off my screen, you can understand why you'd want to filter the results. For that you can use Regexes. (For more info on Julia's regexes, see this manual section)

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

I wasn't aware of the whos function before you asked, so thanks for helping me learn something new too. :)

Julia issue #3393 on github is about adding memory sizes to the whos output. It also references making whos return a value rather than just printing the information out.

35
votes

An Update:

whos() 

... is not working either in iJulia or at the command prompt in Julia-1.0.0.

It is working in Julia-0.6.4, though.

On the other hand,

varinfo()

....prints information about the exported global variables in a module. For Example,

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)                      

Hope, this is found useful.

23
votes

Not sure if there is something better, but

names(Main)[4:end]

seems to work. The [4:end] part is because it includes :Main, :Core and :Base which I think you would not want. I hope they will always be at the beginning.

4
votes

whos() is not available in newer versions of Julia (1.0 onward). Use varinfo() instead. For example, varinfo(Core,r".*field.*")

1
votes

As of version 1.1 there is also the @locals macro

The experimental macro Base.@locals returns a dictionary of current local variable names and values

Release notes