Невозможно использовать переменную, возвращенную из функции

#python #function #variables

Вопрос:

Код выглядит следующим образом:

 def join_files(Fund):
Month_1 = pd.read_excel(Fund[0])
Month_2 = pd.read_excel(Fund[1])
Joined_1 = Month_1[["UNIQUE_ID","NET_AMOUNT"]].merge(Month_2[["UNIQUE_ID","NET_AMOUNT",]], on = "UNIQUE_ID", how = "left")
return Joined_1

join_files(GF)  
print(Joined_1)
 

Когда я запускаю код, он выдает мне ошибку в строке «print(Joined_1)» и говорит, что это неопределенное имя, даже если приведенный выше код успешно выполняется.

Я знаю, что функция работает, так как, если я изменю оператор return на print (), вывод будет напечатан.

Комментарии:

1. Вы не сохранили возвращенное значение, сделайте Joined_1 = join_files(GF) это .

2. Потрясающе. Спасибо. Все еще довольно новый и выясняю это по ходу дела.

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

4. Пожалуйста, повторите свои учебные материалы по функциям, чтобы узнать, как возвращать и использовать значение.

Ответ №1:

Это потому, что ваша переменная Joined_1 содержится в функции join_files (). После возврата Joined_1 возвращается значение этой переменной (но не фиксируется). Затем вы просите распечатать переменную, но в этот момент скрипт больше не знает о переменной Joined_1. Я думаю, вы ищете что-то более похожее на это.

 def join_files(Fund):
     ...                // I haven't verified your your excel read logic
     return(Joined_1)

ret_val = join_files(GF)
print(ret_val)
 

Вы могли бы провести небольшой тест с помощью этого, чтобы запустить шаблон для вас:

 def use_returned_value(some_val)
    new_value = some_val
    return new_value

return_value = use_returned_value(1234)
print(return_value)