Una variable definida dentro de un bloque de funciones o un bloque de bucle pierde su alcance fuera de ese bloque y se denomina variable local ad para ese bloque. No se puede acceder a una variable local fuera del bloque en el que está definida.
Ejemplo:
Python3
# simple display function def func(num): # local variable a = num print("The number is :", str(a)) func(10) # generates error print(a)
Producción:
NameError: name 'a' is not defined
Aquí obtenemos un error porque ‘a’ es local a la función func() y pierde su alcance fuera de ese bloque. Aquí, la variable local ‘a’ se usa para contener el número pasado y se utiliza en la instrucción de impresión. Pero en algunos casos, las variables locales se declararán asignando algún valor y se dejarán utilizadas para cualquier proceso. Solo asignar algún valor no es utilizar la variable, el valor que contiene debe leerse y usarse para algún cálculo.
La recolección de basura es automática en Python y cuando el recuento de referencias de un objeto llega a cero, el objeto se borrará. Todos sabemos que una variable local de un determinado bloque de código pierde su alcance fuera del bloque. La recolección de basura se invoca automáticamente cuando la diferencia entre la asignación de objetos y la desasignación de objetos cruza un cierto valor de umbral. Si el script consta de unas pocas líneas de código, la gestión de la memoria no es un proceso tedioso. Si el script es muy largo con tareas complejas y hay muchas variables locales sin usar, tiene un efecto considerable en el tiempo de ejecución del código y la gestión de la memoria. Sin embargo, los problemas con la gestión de la memoria son muy menores.
El problema principal que surge debido a estas variables no utilizadas es que disminuye la legibilidad. Cuando el código tiene miles de líneas, cuando se requiere que otro programador trabaje con él, es posible que tenga que pasar mucho tiempo analizando qué se usa para la variable que en realidad se deja sin usar. Uno puede olvidar la variable no utilizada declarada y puede usarla en la parte posterior, lo que puede resultar en una salida no deseada. Siempre es una buena práctica eliminar las variables locales no utilizadas.
Un código con muchas variables locales sin usar, importaciones sin usar o líneas de códigos sin usar se considera código inactivo . Cuando hay situaciones en las que no está seguro de que una variable local pueda tener un rol más adelante en el código, existen algunas convenciones de nomenclatura que se pueden usar para distinguirla del resto de las variables. Nombrar la variable como ‘ficticia’, ‘sin usar’ o cualquier nombre que transmita que esta variable no se usa actualmente en ninguna parte.
¿Cómo suprimir la advertencia ‘variable no utilizada’?
Algunos editores como VScode, PyCharm, Eclipse, PyDev generarán advertencias a veces con respecto a estas variables no utilizadas. Las advertencias no interrumpirán la ejecución del programa. Para suprimir la advertencia, uno puede simplemente nombrar la variable con un guión bajo (‘ _ ‘) solo. Python lo trata como una variable no utilizada y lo ignora sin mostrar el mensaje de advertencia.
Python
# unused function def my_func(): # unused local variable _ = 5 b=2 c=b+10 print(b,c) for i in range(0, 5): print(i)
0 1 2 3 4
Paquete buitre
Hay paquetes que se pueden usar para encontrar el código muerto en los scripts. Uno de esos paquetes es Vulture . El paquete vulture encuentra las variables locales no utilizadas, las importaciones no utilizadas y las partes de cable no utilizadas y proporciona el informe. Para instalar este paquete, escriba el siguiente comando en el indicador de anaconda.
pip instalar buitre
Ahora escriba un script de python y guárdelo con la extensión .py . El archivo se almacenará en el directorio que se abre de forma predeterminada en el indicador de anaconda o en alguna ubicación específica. En caso de almacenar el archivo en alguna otra ubicación, uno debe moverse a ese directorio. Ahora considere el siguiente script como ejemplo. Se guarda como trial1.py
Python
# unused function def my_func(): # unused local variables a = 5 b=2 c=b+10 print(b,c) for i in range(0, 5): print(i)
0 1 2 3 4
Una vez que el archivo se guarde en el directorio deseado, escriba el siguiente comando en el indicador de anaconda para encontrar el código inactivo.
C:\usuario>>buitre juicio1.py
Producción:
El paquete vulture comprende la convención de nomenclatura que se explica a continuación para evitar advertencias. Por lo tanto, cuando se utiliza solo un guión bajo como nombre de variable, se suprime el mensaje de advertencia. Considere trial1.py , donde el nombre de la variable local no utilizada se cambia a guión bajo (‘_’).
Python3
# unused function def my_func(): # unused local variables _ = 5 b=2 c=b+10 print(b,c) for i in range(0, 5): print(i)
Publicación traducida automáticamente
Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA