A Byte of Python

Variables locals

Quan declarem variables dins de la definició d'una funció, aquestes no tenen cap relació amb altres variables amb mateix nom usades fora de la funció. És a dir, els noms de les variables definides dins una funció són locals a la funció. Això és coneix com l'àmbit de la variable. Totes les variables tenen com a àmbit, el bloc on són declarades i a partir del punt en que apareixen per primer cop.

Ús de variables locals

Example 7.3. Ús de variables locals

				
#!/usr/bin/python
# Filename: func_local.py

def func(x):
	print 'x is', x
	x = 2
	print 'Changed local x to', x

x = 50
func(x)
print 'x is still', x
				
				

Sortida

				
$ python func_local.py
x is 50
Changed local x to 2
x is still 50
				
				

Com funciona

A la funció, el primer cop que fem servir el value del nom x, Python fa servir el valor del paràmetre declarat a la funció.

A continuació, assigna el valor 2 a x. El nom x és local a la funció, de manera que quan canvia el seu valor dins la funció, no afecta el valor de la variable x definida en el bloc principal.

La darrera instrucció print confirma que no ha canviat el valor inicial de x al bloc principal.

Ús de la sentència global

Per fer servir el valor d'un nom definit fora de la funció, cal indicar a Python que aquest no és local sinó global. Aquest fet s'indica amb la paraula clau global. No és possible assignar un valor a una variable definida fora d'una funció sense la marca de global.

Es poden fer servir els valors de les variables definides fora de la funció sempre i quan no hi hagi variables locals amb el mateix nom. En tot cas, és una pràctica no recomanada i és preferible evitar-la, ja que complica la lectura del programa en no quedar clar on ha estat definida la variable. La marca global indica clarament que la variable ha estat definida en un bloc extern.

Example 7.4. Ús de la sentència global

				
#!/usr/bin/python
# Filename: func_global.py

def func():
	global x

	print 'x is', x
	x = 2
	print 'Changed global x to', x

x = 50
func()
print 'Value of x is', x
				
				

Sortida

				
$ python func_global.py
x is 50
Changed global x to 2
Value of x is 2
				
				

Com funciona

La marca global indica que x és una variable global. Per tant, quan assignem un valor a x dins de la funció, el canvi es reflecteix en la variable x del bloc principal.

Es poden identificar més d'una variable global a partir d'una mateixa global. Per exemple, global x, y, z.