Verificação de Acesso

Carregando...

Formulário de contato

Nome

E-mail *

Mensagem *

Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Imagem

Python: Como Gerar Variáveis Dinâmicas com Argumentos entre Scripts

@CanalQb Python - Gerando Variáveis Dinâmicas entre Scripts
@CanalQb

Em projetos Python que envolvem múltiplos scripts, pode ser necessário passar dados entre eles e criar variáveis dinamicamente com base nesses dados. Neste exemplo, explicamos como um script pode chamar outro, passando argumentos, e como o segundo script pode gerar variáveis globais com nomes definidos a partir desses argumentos.

Funcionamento básico

O script script1.py chama o script2.py usando a biblioteca subprocess e envia um texto como argumento. O script2.py captura esse argumento via sys.argv e cria uma variável global com o nome recebido e valor definido.

Exemplo do script1.py

import subprocess

nome_script2 = 'script2.py'
texto = 'texto_ja_definido'

subprocess.call(['python', nome_script2, texto])
  

Exemplo do script2.py

import os
import sys

# Obtém o nome do script que chamou este script
nome_script1 = os.path.basename(sys.argv[0])

# Obtém o argumento passado pelo script1.py
texto = sys.argv[1]

# Cria uma variável global com nome igual ao argumento e um valor definido
globals()[texto] = "Valor da variável"

# Exibe os resultados
print(f"Nome do script chamador: {nome_script1}")
print(f"Nome da variável criada: {texto}")
print(f"Valor da variável: {globals()[texto]}")
  

Explicações importantes

  • globals(): Função que retorna um dicionário representando o namespace global atual, permitindo criar variáveis dinamicamente.
  • sys.argv: Lista que contém os argumentos da linha de comando. sys.argv[0] é o nome do script atual, e os seguintes índices são os argumentos passados.
  • os.path.basename: Utilizado para extrair apenas o nome do arquivo do caminho completo.
  • subprocess.call: Permite executar outros scripts Python ou comandos externos, passando argumentos facilmente.

Boas práticas e cuidados

Embora seja possível criar variáveis dinamicamente com globals(), essa prática deve ser usada com cuidado, pois pode dificultar a manutenção e legibilidade do código. Em geral, é preferível usar dicionários para armazenar valores dinâmicos.

Além disso, sempre valide os argumentos recebidos para evitar erros inesperados:

if len(sys.argv) < 2:
    print("Uso correto: python script2.py nome_variavel")
    sys.exit(1)
  

Referências oficiais para aprofundamento

Conclusão

Passar dados entre scripts Python é simples usando o módulo subprocess e argumentos de linha de comando. A criação dinâmica de variáveis com globals() deve ser usada com atenção e, preferencialmente, substituída por estruturas de dados como dicionários para garantir clareza e segurança do código.

Comentários