apispy_m.py
def aspy_geolocate(api_spy_akey, api_spy_ytvid):
function_name = "geolocate"
function_description = """Get location of a youtube video!"""
if api_spy_akey == "":
errcode = 001
aspy_errhandler(function_name, errcode)
else:
pass
r = requests.get('https://www.googleapis.com/youtube/v3/videos?part=recordingDetails&id=%s&key=%s'%(api_spy_ytvid, api_spy_akey))
api_spy_jsondata = json.loads(r.text)
try:
lat = api_spy_jsondata['items'][0]['recordingDetails']['location']['latitude']
lon = api_spy_jsondata['items'][0]['recordingDetails']['location']['longitude']
alt = api_spy_jsondata['items'][0]['recordingDetails']['location']['altitude']
except KeyError:
lat = "N/A"
lon = "N/A"
alt = "M/A"
moduletest.py
import apispy_m
api_spy_akey = "*Super secret api key ;)*"
api_spy_ytvid = "*youtube vid id*"
aspy = apispy_m
aspy.aspy_geolocate(api_spy_akey, api_spy_ytvid)
print aspy.lat
print aspy.lon
print aspy.alt
运行testmodule.py后的错误(使用python2(:
Traceback (most recent call last):
File "test.py", line 6, in <module>
print aspy.lat
AttributeError: 'module' object has no attribute 'lat'
我似乎无法解决此错误。我已经尝试了from apispy_m import *
和from apispy_m import aspy_geolocate
。这是我第一次创建Python模块。
帮助您将不胜感激!
您在功能中具有本地变量,而不是模块属性(Globals(。在功能之外的任何人都看不到本地变量(在功能退出时抓住存在(。
您想返回这些值:
try:
lat = api_spy_jsondata['items'][0]['recordingDetails']['location']['latitude']
lon = api_spy_jsondata['items'][0]['recordingDetails']['location']['longitude']
alt = api_spy_jsondata['items'][0]['recordingDetails']['location']['altitude']
return (lat, lon, alt)
except KeyError:
return ("N/A", "N/A", "N/A")
(假设您要返回"N/A"
,如果缺少3个组件的任何(。
然后将这3个值分配给调用函数的代码中的三个新变量:
lat, lon, alt = aspy.aspy_geolocate(api_spy_akey, api_spy_ytvid)
print lat
print lon
print alt