#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)