Как функция может идентифицировать тип рабочего контекста, не указывая его новым параметром, сохраняя существующий синта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 типов случаев:< /strong>

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

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

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

import numpy as np

#...

def func1(array1, param2):
'''
# The content of this multi-line comment is just an illustrative idea, anything else.

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}')
Как видите, я пытался найти способ, с помощью которого функция могла бы идентифицировать тип рабочего случая с каким-то аспектом, присутствующим вне функции, чтобы измените логику функции, чтобы обеспечить идентификацию, поэтому я надеюсь, что другие программисты, имеющие опыт работы с подобными ситуациями, смогут поделиться другими способами эффективного решения этой проблемы.
Заранее спасибо

ОБНОВЛЕНИЕ 1:[/b]
Я действительно не понимаю причины голосовать против этого вопроса. Возможно, большинство из нас прекрасно знают, как «решить» эту проблему, просто добавив в функцию новый параметр, чтобы вручную указать тип рабочего случая, но если бы это было правильное решение, не было бы необходимости открывать ветку. Итак, цель этого вопроса заключалась лишь в поиске других альтернативных способов определения рабочего контекста.

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

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

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

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

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

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