В python, если функция не имеет оператора return, что он возвращает?
Учитывая эту примерную функцию:
def writeFile(listLine,fileName):
'''put a list of str-line into a file named fileName'''
with open(fileName,'a',encoding = 'utf-8') as f:
for line in listLine:
f.writelines(line+'\r\n')
return True
Этот оператор return True
делает что-то полезное?
Какая разница между ним и без него? Что произойдет, если не будет никакой функции возврата?
Ответы
Ответ 1
Если функция не указывает возвращаемое значение, она возвращает None
.
В условном выражении if/then None
имеет значение False. Поэтому теоретически вы можете проверить возвращаемое значение этой функции для успеха/отказа. Я говорю "теоретически", потому что для кода в этом вопросе функция не захватывает и не обрабатывает исключения и может потребовать дополнительного упрочения.
Ответ 2
Функция всегда возвращает None
, если явно не указано return
.
Ответ 3
Если у вас есть return True
в конце функции, вы можете сказать следующее: a=writeFile(blah, blah)
Однако, поскольку он всегда будет True
, он совершенно бессмыслен. Было бы лучше вернуть True, если файл был написан правильно и т.д.
Если вы явно ничего не возвращаете, значение будет None
Ответ 4
Не имеет смысла иметь оператор return самостоятельно, не приписываясь или не проверяя функциональность.
Python возвращает None, если ничего не возвращается. В вашем случае вы должны, вероятно, вернуться к истине, если файл открытия и запись будут успешными