Я новичок в переполнении стека и новичок в программировании. Я наткнулся на методы void; Я понимаю, что они из себя представляют и что они означают/делают, но я чувствую, что они пока не совсем подходят мне.
t = ['d', 'c', 'e', 'b', 'a']
t = t.sort()
Этот код выше, например, не будет работать (это из учебника/безделушки freeCodeCamp "Python для всех").
Я погуглил и знаю о возврате и о том, что это, вероятно, то, что делает метод недействительным. Думаю, я знаю, как, но хочу знать, почему, что, вероятно, удовлетворит меня.
функции в python не возвращают void, это обычная практика, когда функции, которые изменяют свои входные данные, возвращают None
, который является объектом python, обратите внимание на следующую функцию.
def zero_first_lement(some_list):
some_list[0] = 0
return None
t = ['d', 'c', 'e', 'b', 'a']
t = zero_first_lement(t)
выполнение вышеуказанной функции приведет к тому, что t
будет None
.
функции python, которые не имеют возврата, также возвращают None
, потому что они «должны что-то возвращать», отсутствие строки return None
не имеет значения.
python — это интерпретируемый язык, интерпретатор не знает, какое значение t
станет из t = zero_first_lement(t)
, пока функция не запустится, и если функция не возвращает что-то явно, тогда t
будет присвоено None
.
Спасибо! Итак, функция возвращает «Нет», потому что они напрямую изменяют ввод, верно? Кроме того, когда я пытаюсь назначить функцию void переменной, переменная ищет возвращаемое значение (если это имеет смысл), поэтому она возвращает «Нет», потому что это возвращаемое значение?
@Dreaj да, точно, t.sort()
- это метод класса, поэтому он принимает t
в качестве своего первого аргумента (посмотрите на классы), поэтому он попадает под зонтик «он изменяет свои входные данные».
Спасибо большое, теперь намного понятнее.
void
просто означает, что функция ничего не возвращает.