python импортирует местоположение из одного определения в другое определение для печати местоположения из weather API

#python #api #tkinter #location #weather

#python #API #tkinter #Расположение #Погода

Вопрос:

 def location():
    res = requests.get('https://ipinfo.io/')
    data = res.json()
    stad = data['city']
    location = data['loc'].split('.')
    latitude = location[0]
    longitude = location[1]
    return stad

def get_weather():
    location(stad)
    weather_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    url = 'https://api.openweathermap.org/data/2.5/weather'
    # q=Amsterdamamp;appid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    city = location(stad)
    params = {'q': city, 'APPID': weather_key, 'units': 'metric'}
    response = requests.get(url, params= params)
    print(f'Het weer vandaag in Utrecht is:')
    print(response.json())
  

Уважаемые пользователи stackoverflow,

Я пытаюсь получить свой from city = location(stad) из определения местоположения () ((stad означает город на голландском языке))

но это не работает python говорит, что местоположение (stad) не определено что я могу сделать, чтобы исправить эту проблему?

Ответ №1:

Вы неправильно обработали ответ функции. Вместо того, чтобы присваивать ответ переменной, вы передали параметр (неопределенную переменную) функции «местоположение».

Вместо location(stad) этого вы должны использовать stad = location() .

Кроме того, в вашем коде я видел несколько вещей, которые могут быть ненужными —
в определении «местоположения», поскольку вы возвращаете только город (stad), вам не нужно обрабатывать долготу и широту. Кроме того, поскольку долгота / широта могут быть десятичными, вы можете не получить точных значений, если разделите их с помощью «period» ( . ).

Ответ №2:

location(stad) не определено, поскольку «местоположение» — это функция, которая не получает параметры.

Вы должны написать: city = location() , тогда переменная «stad», которая вычисляется в функции «location», будет присвоена вашей переменной «city». Это понятно?

Кроме того, строка :

 location(stad)
  

(в начале функции get_weather() )
выглядит как ненужная строка. зачем вызывать функцию, если вы не используете то, что было возвращено?