Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2023 20:07:01

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

а как 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>

Офлайн

#2 Янв. 4, 2023 20:13:18

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

мне нужно просто вызвать функцию из модуля одноменную с 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 (Янв. 4, 2023 20:13:50)

Офлайн

#3 Янв. 4, 2023 20:19:07

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

start-x пример global_command это строка
“start-x” сори дописовал код в окне форума забыл про кавычки
global_command = ‘start-x’

Офлайн

#4 Янв. 4, 2023 20:23:34

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1356
Репутация: +  119  -
Профиль   Отправить e-mail  

запуск функции из переменной

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

Офлайн

#5 Янв. 4, 2023 20:35:23

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

нет это не постоянная 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

Офлайн

#6 Янв. 4, 2023 21:01:56

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

или както так……………

 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>

Отредактировано Genabox (Янв. 4, 2023 21:04:35)

Офлайн

#7 Янв. 4, 2023 21:03:52

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1356
Репутация: +  119  -
Профиль   Отправить e-mail  

запуск функции из переменной

  
import my_commands
commands = {
    'start-x': my_commands.start,
    'stop-x': my_commands.stop
}
def run_programm():
    global global_command
    commands[global_command]()

Офлайн

#8 Янв. 4, 2023 21:16:26

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

     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>

Офлайн

#9 Янв. 4, 2023 21:19:26

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

а так все запустилось

     commands = {
    'start': voice_commands.start,
    'stop': voice_commands.stop
    }
 
    def run_programm():
        global global_command
        commands[global_command]()
 
    run_programm()

Офлайн

#10 Янв. 4, 2023 21:22:27

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск функции из переменной

а можно как то так?

     commands = {
    global_command: voice_commands.global_command,
 
    }
AttributeError: module ‘voice_commands.voice_commands’ has no attribute ‘global_command’
что бы не перепрописывать все эти команды
их там много будет….

Отредактировано Genabox (Янв. 4, 2023 21:23:14)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version