【问题标题】:String within function in pythonpython中函数内的字符串
【发布时间】:2018-09-30 03:01:11
【问题描述】:

我想用 python 编写一个函数来读取我的数据。在这个函数之外,这样的东西可以工作

model = open_ncfile('/data/BAF_2001-2013_model.nc')
lat_model = model.variables['lat'][:]
lon_model = model.variables['lon'][:]
data = model.variables['var'][0,:,:]

如何将其放入函数中?

def plot(model, lat, lon, var):
    model = open_ncfile('/data/BAF_2001-2013_model.nc')
    lat_model = model.variables['lat'][:]
    lon_model = model.variables['lon'][:]
    model = model.variables['var'][0,:,:]

我想这里的基本问题是我如何在 python 的函数中连接字符串,所以如果我调用

plot(model1, lat1, lon1, var1)

我的函数会产生

model1 = open_ncfile('/data/BAF_2001-2013_model1.nc')
lat_model1 = model1.variables['lat1'][:]
lon_model1 = model1.variables['lon1'][:]
model1 = model1.variables['var1'][0,:,:]

所以我可以使用不同的模型来调用函数,这些模型的变量名具有不同的名称。到处都找不到! 谢谢:)

【问题讨论】:

  • return model.variables['var'][0,:,:] ?
  • 我认为你应该用谷歌搜索“连接”的定义
  • 我认为您误解了参数在 python 中的工作方式。据我所知,你有一个函数plot(model, lat, long, var)。如果您使用参数model1 等(例如plot(model1, lat1, lon1, var1))调用它,这些对象就是函数将操作的对象。除非您想知道文件名?
  • 如果我调用 plot(model1, lat1, lon1, var1),python 会将其解释为 /scratch/local1/m300481/Data/Observation/SF1/BAF_2001-2013_model.nc',但我想要/scratch/local1/m300481/Data/Observation/SF1/BAF_2001-2013_model1.nc'

标签: python string python-2.7 function concatenation


【解决方案1】:

您的问题非常不清楚,但我想您基本上是想动态获取模型并检索其数据,所以这应该可以解决问题:

def plot(model_name, lat_name, lon_name, var_name):
    model = open_ncfile('/data/BAF_2001-2013_{}.nc'.format(model_name))
    lat = model.variables[lat_name][:]
    lon = model.variables[lon_name][:]
    var = model.variables[var_name][0,:,:]
    return (model, lat, lon, var)

然后你可以:

model, lat, lon, data = plot('model', 'lat', 'lon', 'var')
model1, lat1, lon1, data1 = plot('model1', 'lat1', 'lon1', 'var1')
model42, lat42, lon42, data42 = plot('model42', 'lat42', 'lon42', 'var42')

【讨论】:

  • 我认为在这个答案中包含进行字符串连接的选项也是一个好主意:model = open_ncfile('/data/BAF_2001-2013_' + model_name + '.nc')跨度>
  • 谢谢,是的,我在表达我的观点时遇到了一些麻烦,但这非常有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2018-12-23
  • 1970-01-01
  • 2014-01-26
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多