Найти - Пользователи
Полная версия: запуск функции из переменной
Начало » Python для новичков » запуск функции из переменной
1 2 3 4 5
Genabox
а как start заменить на global_command?
должна вызыватся фцнкция из модуля то что в global_command тоесть одноименна
 commands = {dictcommand: voice_commands.global_command}

Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 407, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 384, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 380, in run_programm
commands = {dictcommand: voice_commands.global_command}
AttributeError: module ‘voice_commands.voice_commands’ has no attribute ‘global_command’
(discord) PS D:\discord>
Genabox
мне нужно просто вызвать функцию из модуля одноменную с global_command
если писать такой код
     def run_programm():
        global global_command
        dictcommand=global_command
        commands = {dictcommand: voice_commands.start}
 
        commands[dictcommand](global_command)
    run_programm()

то его нужно писать на каждую функцию в модуле
global у меня с SQL команды выписасывет перебором по ключам - без глобала никак
Genabox
start-x пример global_command это строка
“start-x” сори дописовал код в окне форума забыл про кавычки
global_command = ‘start-x’
xam1816
Genabox
без глобала никак
my_commands.py
  
COMMAND_A = 'some_command_A'
COMMAND_B = 'some_command_B'

main.py

  
import my_commands
 
print(my_commands.COMMAND_A)
 
def f():
    print(my_commands.COMMAND_B)
f()
>>>

some_command_A
some_command_B

Process finished with exit code 0
Genabox
нет это не постоянная global_command
она выводится через 350 строчек кода после перебора mysql базы
ее нельзя просто так вызвать …..
а весь этот замес происходит в конце программы
      #================= 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 ===============================#

здесь все правильно
но мне нужео не переменную передать в другой модуль а вызвать функцию из дрогого модуля по тому что есть переменной global_command
должно быть как то так
 voice_commands.global_command
Genabox
или както так……………
 def run_programm():
  
        global global_command
        dictcommand='runprogramm'
        x = 'voice_commands.'+ str(global_command)
        print(x)
        commands = {dictcommand:x}
 
        commands[dictcommand](global_command)
        
    run_programm()

voice_commands.start
Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 410, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 387, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 383, in run_programm
commands(global_command)
TypeError: ‘str’ object is not callable
(discord) PS D:\discord>
xam1816
  
import my_commands
commands = {
    'start-x': my_commands.start,
    'stop-x': my_commands.stop
}
def run_programm():
    global global_command
    commands[global_command]()
Genabox
     commands = {
    'start-x': voice_commands.start,
    'stop-x': voice_commands.stop
    }
 
    def run_programm():
        global global_command
        commands[global_command]()
 
    run_programm()
Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 408, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 385, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 383, in run_programm
commands()
KeyError: ‘start’
(discord) PS D:\discord>
Genabox
а так все запустилось
     commands = {
    'start': voice_commands.start,
    'stop': voice_commands.stop
    }
 
    def run_programm():
        global global_command
        commands[global_command]()
 
    run_programm()
Genabox
а можно как то так?
     commands = {
    global_command: voice_commands.global_command,
 
    }
AttributeError: module ‘voice_commands.voice_commands’ has no attribute ‘global_command’
что бы не перепрописывать все эти команды
их там много будет….
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB