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

Программы на Python
Ответить
Anonymous
 Как функция может идентифицировать тип рабочего контекста, не указывая его новым параметром, сохраняя существующий синта

Сообщение Anonymous »

Ситуация следующая:
  • Функция func1 требует адаптации для работы с новым случаем, теперь имеющим всего 2 кейса, case_A (текущий) и case_B (новый).
  • Есть рабочие скрипты уже имеется определенный синтаксис вызова функции для func1, и по этой причине и другим требованиям часть о том, что синтаксис вызова функции не может быть изменен, т. е. в этом случае добавление еще одного нового параметра в func1 для указания типа случая не является решением, поскольку это приведет к изменению существующего кода, вызывающего вызовы функций. , что означает, что если уже используется func1(array_1, param_2), то использование чего-либо в качестве func1(array_1, param_2, case_type) не будет решением.
  • Итак, элементами, которые можно адаптировать для определения типа случая, являются вычисления функций (без новых параметров) и, например, что-то вроде имен переменных для аргументы в вызове.
:

Функция работает со всеми значениями полученного массива. :

Функция работает только с первым значением индекса полученного массива.
Причина наличия 2 случаев:

Более эффективная обработка и меньшее использование памяти, когда требуется вычисление только одного значения в массиве.

Возможные решения уже рассмотрены на данный момент, чтобы опубликовать этот вопрос:
  • Еще один параметр со значением по умолчанию. Это было бы половинчатым решением, поскольку тот же синтаксис вызова сохраняется только для одного из двух случаев.
  • Использование длины полученного массива для выявления случая. Проблема заключается в том, что длина массива может значительно различаться в обоих случаях, поэтому она будет работать только в некоторых конкретных ситуациях.
  • Кроме того, учитывая добавление к массиву своего рода окончательного «специального» числового значения перед отправкой его в функцию. Это для ситуаций case_B, но этот вариант не выбран, чтобы не пришлось каким-либо образом изменять полученный массив.

    < li>Первоначальная идея заключалась в том, что функция могла идентифицировать регистр по имени переменной, присвоенному одному из аргументов вызова. В принципе, это было бы возможным решением, но кажется, что функция Python не может «видеть» имя строковой переменной, используемой в вызове:
    Как получить имя строки аргумента вызова функции внутри той же функции . Использование этого параметра в качестве «дополнительного параметра», избегая добавления дополнительного параметра

Код: Выделить всё

def func1(array1, param2):
'''
if argument_var_name == format_X:
case = case_A
elif argument_var_name == format_Y:
case = case_B
'''

len_array = len(array1)
func_array = np.zeros(len_array)

for i in range(len_array):
func_array[i] = array1[i] * param2

return func_array

array_1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
param_2 = 2

func1_call = func1(array_1, param_2)

print(f'func1_call: {func1_call}')
Как видите, я пытался найти способ, с помощью которого функция могла бы идентифицировать тип случая с каким-либо аспектом, присутствующим в элементах при вызове функции, поэтому я надеюсь, что другие программисты, имеющие опыт работы с подобными ситуациями, смогут поделиться другими способами эффективного решения этой проблемы.
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/793 ... cify-it-wi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»