J'ai un fichier appelé functions.py
dans mon répertoire de projet qui contient quelques fonctions simples.ne fonctionne pas correctement la fonction Python lors de l'importation, que lorsqu'elle est définie localement
L'une de ces fonctions (load()
) est censé créer des variables globales sans demander à l'utilisateur de les définir au préalable.
Quand j'importer les fonctions du fichier en utilisant
from functions import load
Il ne fonctionne pas correctement, ce qui signifie les variables globales ne sont pas créés.
Cependant, lorsque je copie coller la fonction pour définir au lieu d'importer à partir du fichier, il fonctionne correctement. Voici la fonction complète:
def load(cnv):
global hd1, hd2, variables, datapoints
hd1, hd2, variables, datapoints = [], [], [], []
o = open(cnv)
r = o.readlines()
o.close()
for line in r:
if not line:
pass
elif line.startswith('*'):
hd1.append(line)
elif line.startswith('#'):
hd2.append(line)
if line.startswith('# name'):
line = line.split()
variables.append(line[4])
else:
float_list = []
line = line.split()
for item in line:
float_list.append(float(item))
datapoints.append(float_list)
datapoints = filter(None, datapoints)
global df
df = pd.DataFrame(datapoints, columns = variables)
Par ailleurs il y a un tiret dans le corps de la fonction après l'instruction def(). Je ne suis pas sûr pourquoi il n'apparaît pas quand je le colle dans ce post.
Je suis très nouveau à la programmation, donc je prends des suggestions sur la façon d'améliorer potentiellement ce code.
Merci d'avance.
Salut Christian, merci pour l'entrée. Cependant, lorsque je tente: def foo(): global a a = 25 si je lance: f() et tapez impression (a) La sortie est 25, même si Je n'ai pas défini un avant. Ce qui signifie qu'il a créé un «global» à partir de l'intérieur de la fonction. –
@ViniSalazar pouvez-vous également coller comment vous essayez d'utiliser les variables globales. Vous devriez essayer functions.hd1 pour accéder à – Harry
@ViniSalazar Ne tenez pas compte de mon commentaire précédent. Je n'avais pas utilisé 'global' depuis un moment, et j'étais rouillé sur les détails. –