При объявлении переменной в функции она не видна при импорте в другой файл
У меня есть файл 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 шт):
То есть нужно, как-то вычислять значение переменной до её импорта?
Это можно делать так:
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"
Всё работает. В чём подвох?