Форум сайта python.su
есть переменная global_command в ней название функции которую нужно запустить
как это прописать?
тоесть global_command = "start 1" нужно start 1()
Офлайн
как вариант
def start(): print('func start') commands = { 'start 1': start } commands['start 1']()
Офлайн
а если я запускаю из модуля функцию
voice_commands def start(w): print('TEST*********' + w) print(global_command) pass
global_command = 'test' commands = {runnprogram: voice_commands.start(global_command)} commands[runnprogram]()
Офлайн
скинь минимально рабочий код модуля, и скажи, что нужно сделать в основном модуле.
Офлайн
Genaboxзапомни, если определена функция, то скобки после названия означают - вызвать функцию. У тебя при создании словаря функция сразу же вызвалась
commands = {runnprogram: voice_commands.start(global_command)}
Офлайн
там пустой модуль с тестовыми командами
вот код модуля voice_commands
def start(w): print('TEST*********' + w)
global_command = start-X test11=global_command commands = {test11: voice_commands.start(global_command)} commands[test11]()
Отредактировано Genabox (Янв. 4, 2023 19:47:31)
Офлайн
ааа
все заработало test11=global_command commands = {test11: voice_commands.start} commands[test11](global_command)
Офлайн
финальный код
#================= R U N P R O G R A M M ===============================# def run_programm(): global global_command dictcommand=global_command commands = {dictcommand: voice_commands.start} commands[dictcommand](global_command) run_programm() #================= R U N P R O G R A M M ===============================#
Офлайн
вот функция, она принимает на вход аргумент, внутри работает с ним, на выходе у нее None (если return не указан возвращается по умолчанию None)
def start(w): print('TEST*********' + w) var = start('my_arg') print('var == ', var)
TEST*********my_arg
var == None
Process finished with exit code 0
global_command = start-X test11=global_command
test11 = start-X
Отредактировано xam1816 (Янв. 4, 2023 20:06:40)
Офлайн
Genaboxа вот с global лучше переосмыслить подход к написанию программы, мне в свое время сказали не нужно global, с ними бывает побочка, когда в каком то месте он изменится по ошибке, и ладно если рухнет прога, может просто неправильно работать и понять в каком месте этот global изменился бывает непросто
global global_command
Отредактировано xam1816 (Янв. 4, 2023 20:06:59)
Офлайн