Я хотел бы импортировать список в функцию Python и запустить эту функцию из терминала кода Visual Studio. Моя функция, которую я назвал «MyFunction.py» и временно сохранил на рабочем столе, выглядит следующим образом:
def MultiplicateLists(a):
import numpy as np
import random
rand_list=[]
for i in range(10):
rand_list.append(random.randint(3,9))
b = np.array(rand_list)
result = a * b
print(a)
print(b)
print(result)
Однако когда я пытаюсь вызвать и запустить функцию из терминала кода Visual Studio, я получаю следующую ошибку, т. е. «zsh: совпадений не найдено»:
(anaconda3) (base) xxxyyyzzz@xxx Desktop % python3 MyFunction.py MultiplicateLists(np.array([1,3,5,6,4,6,7,1,2,7]))
zsh: no matches found: MultiplicateLists(np.array([1,3,5,6,4,6,7,1,2,7]))
Ниже приведен снимок экрана из кода Visual Studio.
введите сюда описание изображения
Может быть, команда «python3 MyFunction.py MulticateLists()» неверна? Как я могу это исправить?
🤔 А знаете ли вы, что...
С Python можно создавать настольные приложения с использованием библиотеки Tkinter.
Вы не можете выполнить программу Python таким образом. Вам нужна основная часть драйвера, которая считывает входные данные, создает массив и передает их функции MultiplicateLists
.
Поэтому добавьте следующее в конец вашего файла:
if __name__ == "__main__":
numbers = []
for x in map(int, sys.argv[1].split(',')):
numbers.append(x)
print(numbers)
MultiplicateLists(np.array(numbers))
Теперь вы можете запустить скрипт командой в следующем виде:
python Myfunction.py 1,3,5,6,4,6,7,1,2,7
Несколько вещей, которые следует отметить: -
Однако вызов импорта внутри функции в Python обычно не рекомендуется, поскольку импорт модулей — относительно дорогостоящая операция.
То, что вы пытаетесь сделать, это передать аргумент в файл MyFunction.py
, который должен обрабатываться самим кодом как системные аргументы. Следовательно, чтобы вызвать функцию из файла Python из терминала, вам нужно изменить свой файл, чтобы он принимал команду. -линейные аргументы или для определения основной функции, которая вызывает нужную функцию.
if __name__ == "__main__":
input_list = list(map(int, sys.argv[1].strip('[]').split(',')))
a = np.array(input_list)
MultiplicateLists(a)
Теперь вы можете легко вызвать его с помощью следующей команды: -
python Myfunction.py 1,3,5,6,4,6,7,1,2,7
Специально для будущих читателей я записываю здесь код, который сработал у меня. В этом коде используются решения @Prateekshit Jaiswal и @OldBoy, которым я большое спасибо!
def MultiplicateLists(a):
import random
rand_list=[]
for i in range(10):
rand_list.append(random.randint(3,9))
b = np.array(rand_list)
result = a * b
print(a)
print(b)
print(result)
if __name__ == "__main__":
import sys
import numpy as np
input_list = list(map(int, sys.argv[1].strip('[]').split(',')))
a = np.array(input_list)
MultiplicateLists(a)
Затем в терминале набираю следующее:
% python3 MyFunction.py 1,3,5,6,4,6,7,1,2,7
И я получаю такой результат:
[1 3 5 6 4 6 7 1 2 7]
[7 4 6 9 6 4 5 7 7 6]
[ 7 12 30 54 24 24 35 7 14 42]