Python Переменные таблицы Строка Переменные - PullRequest
0 голосов
/ 21 апреля 2020

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

Этот код упрощен для объяснения. Первые 4 функции работают, а последние 3 - нет.

<!-- language: python -->
Fun = functions.get(reference, lambda : print('Invalid Ref'))
fun(my_df, start, stop)

def Ripple(df, start, stop):#Some multi-line function
    temp = df.trc3_s12_db[df.index >= start, df.index <= stop]
    return temp.values.max() - temp.values.min()

def RAve(df, start, stop, ave, spacing=100):#Changing function
    return df.trc3_s12_db.rolling(ave*spacing).[df.index >= start, df.index <= stop].min()

functions = { #Dispatch Table
    'MinA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.min() * (-1),
    'MaxA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.max() * (-1),
    'MinB': lambda df, start, stop: df[df.index >= start, df.index <= stop].tB.min() * (-1),
    'Ripple': Ripple,
    '5MHz Ave': RAve(ave=5),
    '2.2MHz Ave': RAve(ave=2.2),
    '%dMHz Ave': RAve(ave=%d) #Is this possible?
}

Я знаю, что могу передавать функции и аргументы, используя набор, но тогда вся таблица должна быть набором. Могу ли я передать переменные через форматирование строки в таблицу диспетчеризации? Как лучше всего разобраться в этих возможностях?

1 Ответ

0 голосов
/ 21 апреля 2020

В первой части похоже, что вы пытаетесь создать частичную функцию, функцию, созданную из другой функции, некоторые аргументы которой «записаны».

Для второй части '%dMHz Ave': RAve(ave=%d) #Is this possible? - нет, это невозможно Вам понадобится какой-то другой лог c, чтобы обнаружить этот случай, а затем использовать что-то другое, кроме таблицы диспетчеризации (dict) в этом случае. Например, используйте регулярное выражение, чтобы проверить, соответствует ли выражение "xxxMHz Ave", и в этом случае использовать RAve(ave=xxx) m

...