python версия: 3.8.1
платформа = Windows 10 pro
среда разработки: визуальный студийный код, блокнот jupyter, командная строка
У меня есть функция, которую я импортирую из персонального модуля, чтобы найти все текущие Pandas - кадры данных в памяти или глобальные переменные (). Однако я получаю только глобальные () из модуля. (Теперь я знаю, что globals () относится только к тому модулю, в котором он вызывается) <--- Это моя проблема! </p>
Как уже говорилось выше, я знаю, что даже с помощью нормальная методология. Вот мой код от начала до конца sh. ** Обратите внимание, что я вызываю свою функцию из модуля, и это будет возвращать только «глобальные переменные модуля ()», а не «локальные глобальные ()» из глобальных переменных моего текущего python экземпляра ().
Код из " my_module "module:
# my_module.py #
import pandas as pd
module_dataframe = pd.Dataframe({'yourName'},columns = ['Name']) # creates dataframe in my module
def curDFs():
i ='' # create variable before trying to loop through globals() prevents errors when initiating the loop
dfList = []
for i in globals():
if str(type(globals()[i])) == "<class 'pandas.core.frame.DataFrame'>":
dfList.append(i)
return df_list
, чтобы вы могли видеть, что я создаю Dataframe в моем модуле и создаю функцию curDFs (), которая возвращает имя переменных в globals (), которые являются dataframes.
Ниже приведен код из совершенно новой python сессии:
# new_window.py #
import my_module as mm
#not importing pandas since already imported into "my_module"
new_dataframe = mm.pd.DataFrame({'name'},columns = ['YourName'])
#calling globals() here will return the "local global variable"->"new_dataframe" created above
#if i call my "curDFs()" function from the module, I return not 'new_dataframe' but the 'module_dataframe' from the module
mm.curDFs()
#returns
['module_dataframe']
Мне нужно, чтобы это возвращало только переменную "new_dataframe". Как бы я это сделал? Я так застрял, каждый второй пост просто идет по глобальной и локальной области или как создать файл config.py глобальных переменных. Однако это должно быть динамически c, а не stati c, как я вижу файл congig.py.
Я думаю, было бы хлопотно создавать эту функцию каждый раз, когда я запускаю эту функцию. Я хочу иметь возможность импортировать его, чтобы я мог поделиться с другими или минимизировать повторяющуюся типизацию, вызванную необходимостью копировать вставку или повторную печать в каждом новом python экземпляре.
Любые комментарии или помощь здесь приветствуются.