Почему global не работает в команде exec?

#python #function #for-loop #global

#python #функция #для цикла #глобальный

Вопрос:

это мой код. Я в основном создал функцию, которая автоматически генерирует списки в зависимости от длины таблицы pandas. Функция принимает таблицу pandas в качестве входных данных, и вам нужно указать, в каком столбце вы хотите, чтобы строки были преобразованы в списки (column_name), и функция в основном выполняет списки автоматически. Весь код работает отлично, однако есть проблема. Я хочу, чтобы каждый сгенерированный список (i) в цикле for был глобальным списком. итак, я попытался поместить exec(f’global {i}’) в цикл в попытке сделать все списки глобальными.

Решение состояло в том, чтобы поместить весь блок кода за пределы функции, и он будет работать нормально, однако мне действительно нужно, чтобы код был в функции. Любые советы о том, как сделать каждый сгенерированный список глобальным списком, используя exec(f’global {i}’)??

Спасибо

 def auto_generate_lists(x):
namesoflistssss1=[]
names_of_listsss = []
for i in range(0,len(x)):
    names_of_listsss.append(f'ls{i}')

for i,j in zip(names_of_listsss,range(0,len(x))):
    exec(f'global {i}')
    exec(f'{i} = []')
    exec(f"{i}.append(x['column_name'][{j}])")
    exec(f"namesoflistssss1.append('{i}')")
    
      
  

Комментарии:

1. @bauman.space: Что? Нет, это совершенно не похоже на то, как exec работает Python.

2. @bauman.space но это работает..