Rossihin
@Rossihin
Люблю котиков и хардкор

Каким образом можно передать значение для переменной из функции?

Каким образом можно передать значение переменной из функции? В примере кода юзер пишет в месседже город и надо передать это значение.

Довольно нубский вопрос, но несколько часов уже ломаю голову, а решение так и не могу найти.

location = geolocator.geocode(city)  #СЮДА

@bot.message_handler(func=lambda m: True)
def locate_and_time(message):

	def city_time(message):
		parts = message.split(', ')
		return parts[0], int(parts[1])

	def to_weather(): #определение города и времени
		city, time = city_time(message)
		return(city, time)    #ОТСЮДА

	bot.send_message(message.chat.id, "Отлично!\nВы установили местоположение и время.")
  • Вопрос задан
  • 501 просмотр
Пригласить эксперта
Ответы на вопрос 2
Shamoi
@Shamoi
Python, Flask
Попробуйте сделать как-то так:
@bot.message_handler(func=lambda m: True)
def locate_and_time(message):

  def city_time(message):
    parts = message.split(', ')
    return parts[0], int(parts[1])

  def to_weather(): #определение города и времени
    global location
    city, time = city_time(message)
    location = geolocator.geocode(city)
    return(city, time)    #ОТСЮДА

  bot.send_message(message.chat.id, "Отлично!\nВы установили местоположение и время.")


Причем если у вас много пользователей и нужно хранить локацию для каждого пользователя, то используйте, к примеру, Redis или другое key value хранилище, можно даже в файлах.
Ответ написан
Комментировать
@qwescin
Самый простой вариант использовать "global".
location = geolocator.geocode(city)  #СЮДА

@bot.message_handler(func=lambda m: True)
def locate_and_time(message):

  def city_time(message):
    parts = message.split(', ')
    return parts[0], int(parts[1])

  def to_weather(): #определение города и времени
    global city
    city, time = city_time(message)
    return(city, time)    #ОТСЮДА

  bot.send_message(message.chat.id, "Отлично!\nВы установили местоположение и время.")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы