Как взять полученный объект из функции, вызванной из другого модуля? - PullRequest
0 голосов
/ 29 августа 2018

Идея в том, что, скажем, у меня есть функция в module2.py с именем def run(example):, в результате которой в качестве объекта запускается объект фрейма данных, назовем его df_1. Если я позвоню module2.run(example) внутри module1.py, смогу ли я продолжать использовать результат df_1 внутри module1.py и манипулировать данными так, как я хочу? Должен ли я поместить функцию в класс внутри module2.py, чтобы сделать это? Или как мне структурировать свой код, если это был план?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Когда был вызван module2.run(example), он создал объект, который занимает место в оперативной памяти, и возвратил указатель на этот объект.

# Inside module2.py
import pandas as pd

def run(example):
    return pd.DataFrame(1, range(10), range(10))

# Inside module1.py
import module2

df_1 = module2.run(example)
df_1.loc[:] = 2

print(df_1)

   0  1  2  3  4  5  6  7  8  9
0  2  2  2  2  2  2  2  2  2  2
1  2  2  2  2  2  2  2  2  2  2
2  2  2  2  2  2  2  2  2  2  2
3  2  2  2  2  2  2  2  2  2  2
4  2  2  2  2  2  2  2  2  2  2
5  2  2  2  2  2  2  2  2  2  2
6  2  2  2  2  2  2  2  2  2  2
7  2  2  2  2  2  2  2  2  2  2
8  2  2  2  2  2  2  2  2  2  2
9  2  2  2  2  2  2  2  2  2  2
0 голосов
/ 29 августа 2018

Да, вы можете сделать именно так, как вы сказали, в module1.py вам просто нужно импортировать module2.py как «import module2» или если функция находится внутри класса, вы можете импортировать его как "из module2 import classname" Затем вы можете создать объект класса и затем вызвать метод. Вам нужно вернуть объект dataframe из функции run, чтобы использовать его. Вы также можете оставить его глобальным, но рекомендуемый способ действий.

например, если у вас есть класс

from module2 import MyClass
my_obj1 = MyClass()
df1 = my_obj1.run(param1,param2 etc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...