При объявлении переменной в функции она не видна при импорте в другой файл

У меня есть файл main где объявляется переменная phonenumber введите сюда описание изображения

Далее она импортируется в другой файл from index.telegram.main import phonenumber и используется

В данной функции ей присваиваются значения в файле main введите сюда описание изображения

Но т.к переменная объявляется в самом начале, то у неё всегда значение no, а если её объявить в какой-то функции, то при импорте возникает ошибка cannot import name 'phonenumber' from 'index.telegram.main' (/mnt/c/WEB/codepython/PaymentForParking/index/telegram/main.py). Как можно решить данную проблему?


Ответы (1 шт):

Автор решения: Yuri Khristich

То есть нужно, как-то вычислять значение переменной до её импорта?

Это можно делать так:

def get_value():
    value = 'no'
    return value

phonenum = get_value()

И дальше импортируем переменную и используем как обычно:

from global_var import phonenum

print(phonenum) # 'no'


Update

Сделал файл main.py и в нём определил phonenumber таким образом

# @bot.message_handler(content_types=['contact'])

def contact(message):
    if message is not None:
        keyboard2 = types.ReplyKeyboardRemove()
        bot.send_message(message.chat.id, 'Вы успешно отправили свой номер', reply_markup=keyboard2)
        phonenumber = message.contact.phone_number
        # print(phonenumber)
    else:
        phonenumber = "Hi there"
    return phonenumber

phonenumber = contact(None)

Сделал другой файл и в нёго импортировал phonenumber и распечатал:

from main import phonenumber

print(phonenumber) # it prints "Hi there"

Всё работает. В чём подвох?

→ Ссылка