Я пытаюсь отслеживать изменения dataframe
, чтобы создать отчет в конце Jupiter
блокнота, поэтому я использую magic
для него.Я получаю имя некоторого dataframe в виде строки, и мне нужно получить его значение.Я использовал globals () ['df'] и все было хорошо, пока я не переместил magics_class
в отдельный файл, так что при импорте он использует другой globals()
.
Существуют ли какие-либо механизмы для использования импортированного модуляглобальные переменные, откуда она была импортирована, или любые другие способы получить значения переменной по имени?
Пример:
import pandas as pd
def print_df_by_name(name='df'):
print(globals()[name])
df = pd.DataFrame({'A': [1,2]})
print_df_by_name('df')
Все в порядке, теперь создайте файл my_module.py с таким содержимым:
def print_df_by_name(name='df'):
print(globals()[name])
def show_module_globals_keys():
print(globals().keys())
Если мы попытаемся импортировать наш модуль, функция не будет работать:
from my_module import *
import pandas as pd
df = pd.DataFrame({'A': [1,2]})
print_df_by_name('df')
Это вызовет ошибку, поскольку она использует глобальные переменные файла, это можно увидетьсо второй функцией мы создали:
show_module_globals_keys()