Функция 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]
Я действительно не понимаю причины голосовать против этого вопроса. Возможно, большинство из нас прекрасно знают, как «решить» эту проблему, просто добавив в функцию новый параметр, чтобы вручную указать тип рабочего случая, но если бы это было правильное решение, не было бы необходимости открывать ветку. Итак, цель этого вопроса заключалась лишь в поиске других альтернативных способов определения рабочего контекста.
Ситуация следующая: [list] [*]Функция func1() требует адаптации для рассмотрения ранее не рассмотренного типа рабочий случай. Таким образом, после новых изменений функция будет иметь всего 2 типа рабочих случаев: case_A (текущий) и case_B (новый). [*][b]Существует набор рабочих сценариев, уже имеющих определенный синтаксис вызова функций для func1(), и по этой причине и другим требованиям[/b], часть, посвященная синтаксис вызова функции не может быть изменен, а это значит, что в данной ситуации это не решение добавление еще одного нового параметра в func1() для указания типа рабочего случая, поскольку это изменит существующие инструкции, которые выполняют вызовы функций, т. е. если уже используется func1(array_1, param_2), то это не было бы решением теперь использовать что-то как func1(array_1, param_2, case_type).
[*]Итак, цель найти способ определить тип рабочего случая, но без добавления новых параметров в функцию, а для этого, конечно, потребуется модифицировать логику функции.
[code]case_A[/code]:
Функция работает со всеми значениями полученного массива. [code]case_B[/code]:
Функция работает только с первым значением индекса полученного массива. [b]Причина наличия 2 типов случаев:< /strong>
Более эффективная обработка и меньшее использование памяти, когда требуется вычисление только одного значения в массиве.
Возможные решения на данный момент уже рассматривал возможность опубликовать этот вопрос:
[*]Еще один параметр со значением по умолчанию. Это было бы половинчатым решением, поскольку тот же синтаксис вызова сохраняется только для одного из двух типов случаев. Уточнение здесь заключается в том, что «нового» кода для вызовов не будет, и это потому, что оба типа рабочих случаев уже существуют, поэтому ключевой момент — найти способ сделать один из них более эффективным (при работе только с первое значение индекса массива).
[*]Использование длины полученного массива для определения типа дела. Проблема в том, что длина массива может значительно различаться в обоих случаях, поэтому это будет работать только в некоторых конкретных ситуациях.
[*] Кроме того, было рассмотрено добавление к массиву своего рода окончательного «специального» числового значения перед отправкой его в функцию, что является первым шагом в рабочем процессе программы. Это для ситуаций case_B, но этот вариант не выбран, чтобы не пришлось каким-либо образом изменять полученный массив.
[*]Первоначальная идея (как и в ходе мозгового штурма) заключалась в том, что функция могла идентифицировать тип рабочего случая по имени переменной, присвоенному одному из аргументов в вызове. В качестве идеи на бумаге это было бы возможным решением, но кажется, что функция Python не может «видеть» имя строковой переменной, используемой в вызове: Как получить имя строки аргумента вызова функции внутри та же функция. Использование этого параметра в качестве «дополнительного параметра», избегая добавления дополнительного параметра
[/list] [code]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 '''
print(f'func1_call: {func1_call}') [/code] Как видите, я пытался найти способ, с помощью которого функция могла бы идентифицировать тип рабочего случая с каким-то аспектом, присутствующим вне функции, чтобы измените логику функции, чтобы обеспечить идентификацию, поэтому я надеюсь, что другие программисты, имеющие опыт работы с подобными ситуациями, смогут поделиться другими способами эффективного решения этой проблемы. Заранее спасибо
ОБНОВЛЕНИЕ 1:[/b] Я действительно не понимаю причины голосовать против этого вопроса. Возможно, большинство из нас прекрасно знают, как «решить» эту проблему, просто добавив в функцию новый параметр, чтобы вручную указать тип рабочего случая, но если бы это было правильное решение, не было бы необходимости открывать ветку. Итак, цель этого вопроса заключалась лишь в поиске других альтернативных способов определения рабочего контекста.