Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2023 21:28:41

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

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

     def run_programm():
        global global_command
        b = str('voice_commands.' + global_command)
        commands = {
        global_command: b,
        }
        
        commands[global_command]()
 
    run_programm()
Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 411, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 388, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 386, in run_programm
commands()
TypeError: ‘str’ object is not callable
(discord) PS D:\discord>

Офлайн

#2 Янв. 4, 2023 21:41:52

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

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

     def run_programm():
        global global_command
        b = 'voice_commands.' + global_command
        commands = {
        global_command: b,
        }
        print(commands)
        commands[global_command]()
 
    run_programm()
{'start': ‘voice_commands.start’}
Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 411, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 388, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 386, in run_programm
commands()
TypeError: ‘str’ object is not callable
(discord) PS D:\discord>

ну если так то он ключ в стринг лепит

Офлайн

#3 Янв. 4, 2023 22:13:01

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

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

если записать global_command в ключ словаря то это именно то что и нужно….
пока такое: TypeError: ‘str’ object is not callable

Отредактировано Genabox (Янв. 4, 2023 22:13:47)

Офлайн

#4 Янв. 4, 2023 23:02:24

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

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

     def run_programm():
        global global_command
        sss = ast.literal_eval("{'voice_commands." + global_command + "'}")
        res = dict.fromkeys(sss, global_command)
        
        print(res)
 
 
        res[global_command]()
 
    run_programm()
{'voice_commands.start': ‘start’}
>>>>>>>>class dict
Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 413, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 390, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 388, in run_programm
res()
KeyError: ‘start’
(discord) PS D:\discord>

KeyError: ‘start’ - тут должно все работать но не хочет

Офлайн

#5 Янв. 5, 2023 00:33:28

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

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

     def run_programm():
        global global_command
        s = "{'"+ global_command +"' : 'voice_commands." + global_command + "' }"
        json_acceptable_string = s.replace("'", "\"")
        d = json.loads(json_acceptable_string)
        print(d)
        commands = {
    'start': voice_commands.start
}
        print (commands)
        d[global_command]()
 
    run_programm()

{'start': ‘voice_commands.start’}
{'start': <function start at 0x000002900FB5EF80>}
Traceback (most recent call last):
File “d:\discord\sql\sqlquerty.py”, line 419, in <module>
DATABASEASK()
File “d:\discord\sql\sqlquerty.py”, line 396, in DATABASEASK
run_programm()
File “d:\discord\sql\sqlquerty.py”, line 394, in run_programm
dd()
TypeError: ‘str’ object is not callable
(discord) PS D:\discord>

Офлайн

#6 Янв. 5, 2023 09:33:03

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

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

есть идеи? для меня загадка почему 2 одинаковых словаря по разному работают

 {'start': voice_commands.start}
{'start': <function start at 0x000002900FB5EF80>}

Отредактировано Genabox (Янв. 5, 2023 10:12:47)

Офлайн

#7 Янв. 5, 2023 14:17:18

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

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

Genabox
есть идеи? для меня загадка почему 2 одинаковых словаря по разному работают
потому что основы знаешь посредственно, то что ты делаешь, это пиздец. То строку вызываешь как функцию, то запрашиваешь ключ из словаря которого нет, не пробовал расшифровать ошибки, там об этом написано, только по английски

Офлайн

#8 Янв. 5, 2023 14:28:20

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

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

 {'start': voice_commands.start}
{'start': <function start at 0x000002900FB5EF80>}
хм я понимая что объект стринг отличается от интеджера ключа
первый словарь создан через json
второй твой пример
вот все есть… чего нет?

Офлайн

#9 Янв. 5, 2023 14:57:16

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

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

Genabox
а так все запустилось
чем тебе этот пример не понравился

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

Офлайн

#10 Янв. 5, 2023 14:59:37

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

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

потому что у меня программа должна видеть
global_command
а тут start и stop
это бот который ощет ответы в базе mysql
и сам подумай 100 вопросов - 100 функций
за заколупаюсь это все писать

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version