Вам не хватает глобального ключевого слова.
Вы не можете изменить глобальную переменную внутри функции без использования глобального ключевого слова.
См .: Каковы правила для локальные и глобальные переменные в Python?
new_object_list = []
my_list = []
def get_input_object(prompt):
global my_list, new_object_list
while True:
chosen_object = input(prompt)
if chosen_object in my_list:
new_object_list.append(chosen_object)
if chosen_object == '\r':
break
if chosen_object == 'all':
new_object_list = my_list.copy()
break
return chosen_object
print(get_input_object('Enter entities separated by space'))
print(new_object_list)
Однако это не очень хорошая идея, и это немного сбивает с толку ... почему бы просто не передать свой список в качестве параметра и вернуть новый список с chosen_object
- отрицание необходимости глобальных значений, например
def get_input_object(prompt, original_list):
output = []
while True:
chosen_object = input(prompt)
if chosen_object in original_list:
output.append(chosen_object)
if chosen_object == '\r':
break
if chosen_object == 'all':
output = original_list.copy()
break
return chosen_object, output
chosen, new_list = get_input_object('Enter entities separated by space')
print(chosen)
print(new_list)