web-dev-qa-db-ja.com

Julia Langの現在の変数のリストを取得する

ジュリアラングは初めてです。私はMatlabのバックグラウンドから来ています。

Matlabでは、whosコマンドを押すと、現在のスコープ内のすべての変数が取得されます。また、それらをx=whos;などの別の変数に格納できます。そのようなコマンドはジュリアに存在しますか? 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.
48
vinu k n

もっと良いものがあるかどうかはわかりませんが、

names(Main)[4:end]

動作するようです。 [4:end]の部分は、:Main:Core:Baseが含まれているためです。私は彼らが常に最初にいることを望みます。

12
ivarne

Juliaのwhos関数は、そのMatlabコマンドと同じように使用できます。

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

usingを使用して)ローカルスコープにインポートしたモジュール(パッケージ/ライブラリ)もリストに表示されます(上記のBase、Core、MainなどのModulesとして)。

さらに、モジュールによってエクスポートされた名前について尋ねることができます。 Baseは、標準ライブラリを含むモジュールです。

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

その結果が画面からはみ出してスクロールすることを考えると、結果をフィルター処理する理由を理解できます。そのためには、Regexesを使用できます。 (ジュリアの正規表現の詳細については、 このマニュアルのセクション を参照してください)

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

あなたが尋ねる前は、whos関数に気づいていなかったので、何か新しいことを学ぶのを手伝ってくれてありがとう。 :)

githubでのJuliaの問題#3393 は、whos出力にメモリサイズを追加することに関するものです。また、単に情報を出力するのではなく、whosに値を返すように参照します。

36
astrieanna

アップデート:

whos() 

...は、iJuliaでも、Julia-1.0.0のコマンドプロンプトでも機能しません。

ただし、Julia-0.6.4で動作しています。

一方、

varinfo()

....モジュールにエクスポートされたグローバル変数に関する情報を出力します。例えば、

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)                      

これが役に立つと思います。

14
Long short

whos()は、Juliaの新しいバージョン(1.0以降)では使用できません。代わりにvarinfo()を使用してください。たとえば、varinfo(Core,r".*field.*")

1
teu

バージョン1.1以降には、@ localsマクロもあります。

実験的なマクロBase。@ localsは、現在のローカル変数の名前と値の辞書を返します

リリースノート

0
TimD