Зачем говорить х = х в Python? - PullRequest
4 голосов
/ 27 ноября 2009

В этом файле , в функции cross_from_below(x, threshold) есть строка с надписью threshold = threshold. Какой смысл этой линии? Делает ли это что-то иначе, чем если бы этой команды не было?

Ответы [ 4 ]

14 голосов
/ 27 ноября 2009

Нет смысла в этом назначении. Это, вероятно, просто осталось и должно быть удалено. Следующая функция почти идентична и не имеет ее.

8 голосов
/ 27 ноября 2009

Нет, в конкретном примере вы цитируете, что линия (безвредно, но) лишняя - на самом деле очень следующая функция (перекрестная порог сверху, а не снизу) практически идентичен (экономия, конечно, для направления сравнений ), не хватает, что дополнительное назначение, но работает точно так же.

Один и единственный случай, когда что-то вроде threshold=threshold бы разница находится в def заявление, где это идиома, чтобы заставить раннее связывание имени (он использует тот факт, что значения по умолчанию оцениваются на def время, т. Е. «Рано» ;-). Но это не то, что код делает. - просто добавив его для полноты

3 голосов
/ 27 ноября 2009

Это может что-то значить. Например, если threshold является свойством класса, то присвоение его может вызвать метод установки.

Но в данном случае я думаю, что это опечатка. Я посмотрел на changelog , и нет никаких намеков на то, что это было сделано по какой-либо причине

1 голос
/ 27 ноября 2009

Или это может быть один из тех случаев, когда в какой-то момент имело смысл написать что-то вроде:

 self.threshold = threshold

потому что функция была методом некоторого класса, который должен был поддерживать порог. (В таком случае это будет означать что-то еще, не так ли?)

...