Aller au contenu

Examiner les espaces de noms

globals() : accéder aux noms globaux

globals() renvoie le dictionnaire des noms globaux du module courant. Dans une fonction, il s'agit du module où cette fonction a été définie.

DEFAULT_TAX_RATE = 0.20
print(globals()["DEFAULT_TAX_RATE"])  # 0.2

Une modification de ce dictionnaire peut modifier les variables globales ; l'accès direct aux noms reste préférable dans le code courant.

Equivalent en C#

var settings = new Dictionary<string, object>
{
    ["DEFAULT_TAX_RATE"] = 0.20
};
Console.WriteLine(settings["DEFAULT_TAX_RATE"]);

C# ne fournit pas de dictionnaire natif vivant de tous les noms globaux équivalent à globals(). Un objet de configuration, une classe statique ou un dictionnaire explicite répond au besoin d’organisation, sans reproduire l’espace de noms du langage.

locals() : examiner les noms locaux

def describe(name, price):
    information = locals()
    print(information["name"])
    print(information["price"])

describe("Clavier", 69.90)
# Clavier
# 69.9

Le comportement dépend de la portée. Depuis Python 3.13, dans une fonction, chaque appel fournit un instantané des liaisons locales : modifier le dictionnaire obtenu ne réaffecte pas les variables locales. Évitons donc de l'utiliser pour modifier ces variables.

Equivalent en C#

string name = "Clavier";
double price = 69.90;
var information = new { Name = name, Price = price };
Console.WriteLine(information.Name);
Console.WriteLine(information.Price);

Il n’existe pas d’API C# ordinaire équivalente pour obtenir automatiquement un dictionnaire des variables locales. Nous construisons explicitement les données à inspecter. Les informations accessibles à un débogueur ne constituent pas ce même mécanisme.