Sto progettando un linguaggio con la sintassi Pythonesque, inclusa la creazione casuale di variabili per assegnazione. Mi chiedo al momento esattamente come affrontare l'assegnazione alle variabili globali (e alle variabili oggetto / classe, dato che sto implementando le classi come ambiti). In Python stesso, per impostazione predefinita il tentativo creerà invece una variabile locale:
x = 1
def f():
x = 2 # creates a local variable
ma puoi sovrascriverlo con una dichiarazione global
:
x = 1
def f():
global x
x = 2 # updates the global variable
Sto per implementare un prefisso .
per il riferimento a variabili in ambiti esterni (in qualche modo simile al prefisso ::
in C ++, ma probabilmente salterò un ambito invece di tutto), in modo che possa essere scritto come:
x = 1
def f():
.x = 2 # updates the global variable
Sarebbe meglio avere solo questo modo di fare le cose, o sarebbe più chiaro o più conveniente avere il meccanismo di dichiarare le variabili come globali nel modo in cui lo fa Python?