我尝试返回JSON,因此我可以将返回值存储到变量中,但JSON变量得到print但不返回值。 或者还有其他方法可以将这些变量提取到除全局变量之外的其他函数。
import json
import urllib.request
class Weather:
def set_api(self):
url = 'http://api.wunderground.com/api/8187218c2aca04ca/geolookup/conditions/q/IA/Cedar_Rapids.json'
f = urllib.request.urlopen(url)
json_string = f.read()
parsed_json = json.loads(json_string)
location = parsed_json['location']['city']
temp_c = parsed_json['current_observation']['temp_c']
print (location, temp_c) #WORKING
return location,temp_c #NOT WORKING
f.close()
myweather = Weather()
myweather.set_api()
Cedar Rapids 10.2 #print output
答案 0 :(得分:0)
您正在返回该值但丢弃该值。应该更正为。
myweather = Weather()
location, temp_c = myweather.set_api()
再见,你的f.close无法到达
return location,temp_c # WORKING
f.close()
答案 1 :(得分:-1)
我修复了它返回的代码,但它已保存在变量中,然后需要打印或传递给其他函数。 实际上我想要整个JSON,因此我需要从列表字典中获取必填字段。
import json
import urllib.request
class Weather:
def set_api(self):
url = 'http://api.wunderground.com/api/8187218c2aca04ca/geolookup/conditions/q/IA/Cedar_Rapids.json'
f = urllib.request.urlopen(url)
json_string = f.read()
parsed_json = json.loads(json_string)
return parsed_json
f.close()
myweather = Weather()
yoweather = myweather.set_api()
print(yoweather['location']['city'],yoweather['current_observation']['temp_c'])
Cedar Rapids 10.0