如何从函数返回全局变量

你好,
我正在尝试根据图像文件的名称提取坐标。我创建了一个使用函数执行此操作的脚本:

选择 | 换行 | 行号
  1. def lat(dd):
  2.     global lat
  3.     lat_lon = dd.split('_')[1]
  4.     if 'N' in lat_lon:
  5.         lat = int(lat_lon[1:3])
  6.     else:
  7.         lat = int(lat_lon[1:3]) * -1
  8.  
  9. def lon(dd):
  10.     global lon
  11.     lat_lon = dd.split('_')[1]
  12.     if 'W' in lat_lon:
  13.         lon = int(lat_lon[4:]) * -1
  14.     else:
  15.         lon = int(lat_lon[4:])
  16.  
  17. list = ['ASTMGTM2_N37W110', 'ASTMGTM2_N45E80']
  18. for n in list:
  19.     lat(n)
  20.     lon(n)
  21.     print lat, lon

对于列表中的第一个值,脚本运行正确。它返回'37-110'。但是,当它达到第二个值时,我会收到一个错误:
TypeError:'int'对象不可调用
有人知道我做错了什么吗?我是新手,以前从未真正使用过'global'变量。
我还尝试使用'Return'关键字而不是全局变量:

选择 | 换行 | 行号
  1. def lat(dd):
  2.     lat_lon = dd.split('_')[1]
  3.     if 'N' in lat_lon:
  4.         lat = int(lat_lon[1:3])
  5.         return lat
  6.     else:
  7.         lat = int(lat_lon[1:3]) * -1
  8.         return lat
  9.  
  10. def lon(dd):
  11.     lat_lon = dd.split('_')[1]
  12.     if 'W' in lat_lon:
  13.         lon = int(lat_lon[4:]) * -1
  14.         return lon
  15.     else:
  16.         lon = int(lat_lon[4:])
  17.         return lon
  18.  
  19. list = ['ASTMGTM2_N37W110', 'ASTMGTM2_N45E80']
  20. for n in list:
  21.     lat(n)
  22.     lon(n)
  23.     print lat, lon

这没有错误,但我无法获得数值。我收到:
我目前使用的是64位的Python2.6和Windows7。谢谢你的帮助!

# 回答1


对函数和值使用唯一的标识符(名称)。在函数中
Lat()
您可以取消对标识符的赋值
稍后

选择 | 换行 | 行号
  1. def lat(dd):
  2.     lat_lon = dd.split('_')[1]
  3.     if 'N' in lat_lon:
  4.         return int(lat_lon[1:3])
  5.     else:
  6.         return int(lat_lon[1:3]) * -1

不要使用
列表
用于变量名。内置的Python函数
列表()
都会戴上面具。
您的值可按如下方式访问:

选择 | 换行 | 行号
  1. seq = ['ASTMGTM2_N37W110', 'ASTMGTM2_N45E80']
  2. for n in seq:
  3.     v1 = lat(n)
  4.     v2 = lon(n)
  5.     print v1, v2
# 回答2


谢谢,bvdet!这就像一种护身符。

标签: python

添加新评论