REVIT ARCHITECTURE (934) – PYTHON – Funciones (18) – Alcance (1)

El alcance de un nombre (por ejemplo, el nombre de una variable) es la parte del código donde el nombre es reconocible correctamente.

Por ejemplo, el alcance de un parámetro de una función es la propia función. El parámetro es inaccesible fuera de la función.

Con el siguiente ejemplod de función se puede explicar este concepto de alcance. La función de Python scope_test() se usará para demostrar cómo funciona el alcance de las variables. Aquí está el código:

7258

Se va  a desglosar lo que sucede en este código:

  • Definición de la función scope_test():

7259

Dentro de esta función, se define una variable x y se le asigna el valor 123. Esta variable x tiene un alcance local, lo que significa que solo es reconocible dentro de la función scope_test().

  • Llamada a la función scope_test():

7260

Aquí, la función scope_test() se ejecuta, lo que significa que se crea la variable x dentro del alcance de la función y se le asigna el valor 123. Sin embargo, una vez que la función termina su ejecución, la variable x deja de existir porque su alcance es local a la función.

  • Intento de imprimir la variable x:

7261

En este punto, el programa intenta imprimir la variable x. Sin embargo, dado que x fue definida dentro de la función scope_test() y su alcance es local a esa función, x no existe fuera de la función. Como resultado, el programa generará un error:

7262

El programa fallará al ejecutarse. El mensaje de error dirá:

NameError: name ‘x’ is not defined
output

Este error ocurre porque x no está definida en el alcance global, donde se está intentando imprimirla. La variable x solo existe dentro del bloque de la función scope_test() y no es accesible fuera de ella.

Este ejemplo demuestra que las variables definidas dentro de una función no son accesibles fuera de esa función debido a las reglas de alcance en Python.

Licencia Creative Commons Contenido Web de Yolanda Muriel está sujeto bajo Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.