Строка внутри функции в Python

Я хочу написать функцию на 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,:,:]?
Jean-François Fabre 19.04.2018 16:47

Я думаю, вам следует погуглить определение слова "объединение"

Code-Apprentice 19.04.2018 16:52

Я думаю, вы неправильно понимаете, как аргументы работают в Python. Насколько я могу судить, у вас есть функция plot(model, lat, long, var). Если вы вызываете его с аргументами model1 и т. д. (Например, plot(model1, lat1, lon1, var1)), то функция будет работать с этими объектами. Если вас не интересует имя файла?

RCA 19.04.2018 16:55

Если я вызываю plot (model1, lat1, lon1, var1), python интерпретирует его как / scratch / local1 / m300481 / Data / Observation / SF1 / BAF_2001-2013_m‌ odel.nc ', но я хочу / scratch / local1 / m300481 / Данные / Наблюдение / SF1 / BAF_2001-2013_m‌ odel1.nc '

scriptgirl_3000 19.04.2018 16:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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')

quanty 19.04.2018 17:05

Спасибо, да, у меня возникли проблемы, чтобы изложить свою точку зрения, но это отлично работает!

scriptgirl_3000 19.04.2018 17:07

Другие вопросы по теме