Je suis nouveau à Julia Lang. Je viens de l'arrière-plan de Matlab.
Dans Matlab, en appuyant sur la commande whos
j'obtiendrai toutes les variables dans la portée actuelle; et aussi, je peux les stocker dans une autre variable comme x=whos;
Existe-t-il de telles commandes dans Julia? Exemple de code dans 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.
Je ne sais pas s'il y a quelque chose de mieux, mais
names(Main)[4:end]
semble fonctionner. Le [4:end]
partie est parce qu'il comprend :Main
, :Core
et :Base
ce que je pense que vous ne voudriez pas. J'espère qu'ils seront toujours au début.
Vous pouvez utiliser les fonctions whos
de Julia tout comme la commande 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
Tous les modules (packages/bibliothèques) que vous importez dans votre portée locale (en utilisant using
) s'afficheront également dans la liste (comme Module
s, comme Base, Core et Main ci-dessus).
De plus, vous pouvez vous renseigner sur les noms exportés par les modules. Base
est le module contenant la bibliothèque standard.
Julia> whos(Base)
! Function
!= Function
!== Function
$ Function
% Function
& Function
* Function
+ Function
.... (lots and lots more)
Étant donné que ce résultat défile loin de mon écran, vous pouvez comprendre pourquoi vous souhaitez filtrer les résultats. Pour cela, vous pouvez utiliser des expressions régulières. (Pour plus d'informations sur les expressions régulières de Julia, voir cette section du manuel )
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
Je ne connaissais pas la fonction whos
avant de demander, alors merci de m'avoir aidé à apprendre quelque chose de nouveau aussi. :)
Julia numéro # 339 sur github concerne l'ajout de tailles de mémoire à la sortie whos
. Il fait également référence au fait que whos
renvoie une valeur plutôt que de simplement imprimer les informations.
Une mise à jour:
whos()
... ne fonctionne ni dans iJulia ni à l'invite de commande dans Julia-1.0.0.
Il fonctionne cependant dans Julia-0.6.4.
D'autre part,
varinfo()
.... imprime des informations sur les variables globales exportées dans un module. Par exemple,
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)
J'espère que cela vous sera utile.
whos()
n'est pas disponible dans les nouvelles versions de Julia (à partir de 1.0). Utilisez varinfo()
à la place. Par exemple, varinfo(Core,r".*field.*")
Depuis la version 1.1, il existe également la macro @locals
La macro expérimentale Base. @ Locals renvoie un dictionnaire des noms et valeurs des variables locales actuelles