Вы находитесь внутри функции и, следовательно, вне того же пространства имен, где vars()
не содержит этих переменных. Посмотрите на этот пример:
x = 1
print('Outside', x, 'x' in vars())
def f():
global x
print('Inside', x, 'x' in vars())
f()
Он печатает:
Outside 1 True
Inside 1 False
Как видите, даже если у нас есть global x
и мы можем напечатать его значение, это не ключ vars()
внутри функции.
Также: Почему глобальные переменные являются злыми?
Почему вы решили использовать vars()
в первую очередь? Может быть, вы могли бы вместо этого использовать отдельный объект dict
? В этом вопросе много информации Python: Использование vars () для присвоения строки переменной
Улучшенная версия приведенного выше примера может выглядеть следующим образом:
data = {}
key = 'x'
data[key] = 1
print('Outside', data['x'], 'x' in data)
def f(data):
print('Inside', data['x'], 'x' in data)
f(data)
Конечно, вместо 'x'
вы можете использовать свои собственные ключи, например str("var_cheeze_sum"+str(serie))
.