Ошибка возникает только тогда, когда функция импортируется из соседнего файла - PullRequest
0 голосов
/ 20 октября 2019

Когда я определяю и вызываю функцию в скрипте, она прекрасно работает. Когда я импортирую его из смежного файла, я получаю сообщение об ошибке: «UnboundLocalError: локальная переменная« data », на которую ссылаются перед присваиванием»

Я пытался включить «return (json_normalize (data))» в оператор IF, ноэто ничего не вернуло.

Импортируемая функция.

def get_query(query_num):
    if __name__ == '__main__':
        params = {'p_param': query_num}
        query_id = query_num
        data = get_fresh_query_result('https://redash.domain.io', query_id, api_key, params)

    return(json_normalize(data))

get_fresh_query_result работает нормально при импорте.

Ожидаемый результат - Pandas df. но вместо этого я получаю сообщение об ошибке!

Ответы [ 2 ]

3 голосов
/ 20 октября 2019

Ошибка возникает из-за оператора if, проверяющего, является ли текущий модуль __main__. Это только в том случае, если функция находится в основном скрипте. Удалите оператор if, и модуль можно будет импортировать из других мест.

0 голосов
/ 20 октября 2019

Ой, я понял это сразу после публикации. Полностью избавился от оператора IF и добавил:

def get_query(query_num):
    params = {'p_param': query_num}
    query_id = query_num
    data = get_fresh_query_result('https://redash.domain.io', query_id, api_key, params)
    return(json_normalize(data))

Теперь он работает нормально.

...