Используя импортированную функцию сохраните выходные переменные - PullRequest
0 голосов
/ 14 мая 2019

У меня есть два .py файла, один с просто функциями, а другой с кодом для запуска функций.

Когда я использую следующее для запуска функции

from Code_function import some_function
some_function()

Она запускает функцию, но не сохраняет переменную в проводнике переменных (я использую spyder)

Пример функции из Code_function.py:

def some_function():
   global csv1
   csv1 = pd.read_csv('csv1.csv') 

Как сделать csv1 доступным в проводнике переменных?

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Прежде всего, в Python, нет необходимости в выходных переменных, потому что функция может возвращать несколько значений (строго говоря, это реализовано как возвращение кортежа):

def fn():
    return 1,2
a,b = fn()

Теперь по вашему вопросу:

Хотя это не указано в 7.12. Глобальный оператор - документация Python 3.7.3 , тест показывает, что global устанавливает имя в лексическом scope * функции *, то есть относительно того, где находится код функции .

Таким образом, переменная csv1 окажется в модуле Code_function. Если в вашей программе нет имени, связанного с этим модульным объектом, вы должны получить к нему доступ как sys.modules['<full name>']:

>>> import Code_function
>>> Code_function.csv1
<...>
>>> sys.modules['Code_function'].csv1
<...>
0 голосов
/ 14 мая 2019

Возможно, вам понадобится вернуть ваш фрейм данных из функции, затем вызвать и назначить его в ваш основной файл.Это работает для меня

def some_function():
   global csv1
   csv1 = pd.read_csv('csv1.csv')

   return csv1

Main:

from Code_function import some_function
df = some_function()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...