Variable global dentro de pytohn

¿Cómo puedo usar una variable global creada en un subprograma dentro un código python en otro subprograma?

Gracias
Saludos.

2 Likes

I would like to follow this question.

Esta página del Help Center tal vez pueda ayudarte: How to pass and return data from Studio Pro when working with Python – ElectroNeek Help Center

Yo creo que sea necesário crear una nueva variable en el subprograma para recibir el valor de la variable del código python.

¡Hola @Victor_Rebelo!

Recomiendo revisar el artículo que compartió @cris-dsc, pero agrego un comentario: no es necesario crear nuevas variables en el subprograma para recibir los valores de las variables. Si las variables son globales, pueden ser pasadas como argumentos en la actividad Ejecutar Python sin problemas.

Aquí un rápido ejemplo.

Tenemos nuestro “main.neek” y un subprograma llamado “realizar_suma.neek”.
En “main.neek” seteamos 2 variables (valor1 y valor2), ambas globales.

En “realizar_suma.neek”, ejecutamos nuestro código Python, y lo configuramos así:

Los parámetros se pasan entre comillas (") y con un espacio entremedio, así:

'"' +valor1+ '" "' +valor2+ '"'

El código del archivo .py que estamos ejecutando es el siguiente:

import sys

num1 = int(sys.argv[1])
num2 = int(sys.argv[2])

sum = num1 + num2

print(sum)

Los objetos sys.argv[1] y sys.argv[2] respectivamente son el primer y segundo parámetro que le enviamos al archivo. Y usamos el print(sum) al final para poder luego guardar el resultado en la variable “resultado” al final del subprograma. Es importante tener en cuenta que tanto los argumentos de entrada como el resultado se pasan desde y hacia Studio Pro como cadenas de texto (y en el caso del resultado, incluirá un linebreak al final), por lo cual deben ser convertidos en caso de que necesitemos esos valores en otros formatos - tal como hacemos dentro del código Python via la función str(), y al final del subprograma podríamos agregar lo siguiente para convertirlo a número:

El resultado es inicialmente “14\r\n” (cadena / string), y al final queda 14 (entero / integer) gracias a este código:

parseInt(resultado.replace("\r\n",""))

¡Espero haberte ayudado! Si te sirvió esta respuesta, por favor marcala como solución. ¡Gracias!

4 Likes

Muchas Gracias!!!

Funcionó perfecto.

Saludos.

2 Likes

¡Excelente! No dudes en consultar ante otra duda similar.

¡Saludos!