Почему не работают два оператора в lambda?
import sys
defaults_commands = {
'help': lambda: print('text'),
'shut up': lambda: print('\n Exiting...') sys.exit()
}
File "ToDoList.py", line 8 } ^ SyntaxError: invalid syntax
Зарание спасибо.
Ответы (2 шт):
Вот так вроде работает. В Питоне можно через запятую команды писать. А чтобы всё в одну лямбду попало надо в скобки взять. Ну или по факту tuple тут получается, лень уже разбираться.
defaults_commands = {
'help': lambda: print('text'),
'shut up': lambda: (print('\n Exiting...'), sys.exit())
}
- Во-первых, предполагаю, что часть кода будет ругать синтакс при котором lambda пытается использовать print
- Во-вторых, sys.exit() следует вынести за фигурные скобки.
Предполагаю, что для задачи, которую Вы пытаетесь решить данный комментарий может быть лишним, потому предлагаю lambda-функции переопределить на обычные.
Пример:
import sys
def help_function(text):
print(text)
def exit_function(text):
print(text)
sys.exit()
defaults_commands = {
'help': help_function('text'),
'shut up': exit_function('\n Exiting...'),
# Внимание! Код после вызова sys.exit()
# в функции exit_function работать НЕ БУДЕТ!
# Python завершил свою работу и дальше код НЕ ЧИТАЕТ.
'show me': help_function('Show me please!')
}
# Внимание! Код ниже работать НЕ БУДЕТ!
print('example text')
В данном примере надо понимать, что при присвоении какой-либо функции к элементу массива defaults_commands - функции будут вызваны автоматически (то бишь сработает вызов и они отработают свой код).
По-этому Ваш скрип выполнится не полностью и завершит свою работу.