2016-10-28 7 views
0

В этой части кода я определяю функцию для подмножества интересующей области. Тем не менее, я хочу использовать переменные latselect и lonselect позже в другой функции. Так у меня есть:Как оценить локальную переменную за пределами функции?

def DatasetToSubset(file, LatUpbound, LatLowBound, LonUpBound, LonLowBound): 
    nc=netCDF4.Dataset(file) 
    lats=nc.variables['lat'][:]; lons=nc.variables['lon'][:] 
    latselect=np.logical_and(lats > LatLowBound, lats < LatUpBound)  
    lonselect=np.logical_and(lon > LonLowBound, lon < LonUpBound) 
    data=nc.variables['Runoff'][1000, latselect, lonselect] 
    return data; return latselect; return lonselect 

ответ

1

После того, как функция достигает return заявление, он возвращает это значение и заканчивается сразу же, то есть последующие два заявления никогда не будут выполняться. Вы можете вернуть три значения в виде кортежа, как этот

def DatasetToSubset(file, LatUpbound, LatLowBound, LonUpBound, LonLowBound): 
    nc=netCDF4.Dataset(file) 
    lats=nc.variables['lat'][:]; lons=nc.variables['lon'][:] 
    latselect=np.logical_and(lats > LatLowBound, lats < LatUpBound)  
    lonselect=np.logical_and(lon > LonLowBound, lon < LonUpBound) 
    data=nc.variables['Runoff'][1000, latselect, lonselect] 
    return (data, latselect, lonselect) 

и при вызове этой функции, вы можете распаковать три значения, как этот

(a, b, c) = DatasetToSubset(...) 

a будет содержать значение data, b то latselect, и c, что и lonselect.