On 28/10/16 02:38, nils wagenaar wrote: > Hello, > > > Could i use a variable defined in a function in another function?
By returning it to the caller. > 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 The syntax for return is return value And you can only have one return on the line. But value can be a tuple so to do what you want: return data, latselect, lonselect And your caller can use something like dat,lat,lon = DatasetToSubset(....) The other way to do it is to create a class containing all the functions that use the same data and put the shared variables as instance attributes. class LatAndLon: # think of a better name! :-) def __init__(self, file, lat=None, lon=None): self.file = file self.lat = lat self.lon = lon def datasetToSubset(self, .....): nc = ... ... self.lat = ... self.lon = ... self.data = ... def another_function(self,...): if self.lat == 42: self.process(data) elis self.lon > 66: self.format() #etc... Then create an instance and call the methods as needed vals = LatAndLon(....) vals.datasetToSubset(....) vals.another_function(....) That way the data stays outside the global namespace but the functions that use it can all see it. You will likely find that this greatly reduces the number of params you need to pass to each function since you set them up once, when you create the instance, and don't need to keep passing them into the functions. This makes the code easier to write and maintain. HTH -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor