Я новичок в python.В чем разница между этими двумя методами python?
У меня есть один метод питона, который возвращает список рекурсивно (предыдущий является словарь строки и с только строка, которая включена в предыдущем словаре)
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
return [] if (s is None) else path(previous, previous[s]) + [s]
и это тот, который я считаю, должны вернуться тот же результат
def path(previous, s):
"Return a list of states that lead to state s, according to the previous dict."
if s is None:
return []
else:
path(previous, previous[s]) + [s]
Я ожидал, что функциональность мудры эти два метода являются абсолютно идентичными, это только то, что первый из них является более consice. Однако, когда я запускаю второй методы,
Я получаю следующее сообщение об ошибке:
"TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'"
Что я делаю неправильно здесь?
Попробуйте 'else: return path (previous, previous [s]) + [s]' для второго случая –
Во второй версии отсутствует 'return'. –
Первая функция может быть прочитана как «return (value1 if expr else value2)», что означает, что если 'expr' выполняется, весь термин между' ('и') 'будет оцениваться как' value1' и 'expr' не удовлетворяет 'value2'. Затем возвращается. – Phidelux