LINUX.ORG.RU

История изменений

Исправление soomrack, (текущая версия) :

Таки на call-site этого не видно, так что я соглашусь с Вашими оппонентами. Как вариант - передача параметра by-ptr была бы немножко нагляднее (и с тем же asm’ом, кстати), но в этом примере - приём и возврат double by-value самый чистый, и самый быстрый (точно никогда не медленней).

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

А в питоне нужно понимать, что переменная может измениться в любой функции, т.к. всегда передача идет по ссылке. А еще нужно понимать, что var += 1 это забытие старой переменной «var» и создание новой переменной «var», а var[0] += 1 это работа с той же переменной-списком, но забытие старой переменной-первого-элемента и создание новой переменной-первого-элемента. Короче, нужно получать элементы концепции функционального программирования, т.е. неизменность «переменных», что само по себе звучит как оксюморон. В итоге получается, что простые переменные в питоне неизменны, а сложные вполне себе меняются, ведь список изменился после var[0] += 1, и var какой была, такой и осталась. Короче какая-то полуфункциональщина получилась. Это несколько смущает детские мозги, да и мои, если честно, тоже.

Исходная версия soomrack, :

Таки на call-site этого не видно, так что я соглашусь с Вашими оппонентами. Как вариант - передача параметра by-ptr была бы немножко нагляднее (и с тем же asm’ом, кстати), но в этом примере - приём и возврат double by-value самый чистый, и самый быстрый (точно никогда не медленней).

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

А в питоне нужно понимать, что переменная может измениться в любой функции, т.к. всегда передача идет по ссылке. А еще нужно понимать, что var += 1 это забытие старой переменной «var» и создание новой переменной «var», а var[0] += 1 это работа с той же переменной-списком, но забытие старой переменной-первого-элемента и создание новой переменной-первого-элемента. Короче, нужно получать функционального программирования, т.е. неизменность «переменных», что само по себе звучит как оксюморон. В итоге получается, что простые переменные в питоне неизменны, а сложные вполне себе меняются, ведь список изменился после var[0] += 1, и var какой была, такой и осталась. Короче какая-то полуфункциональщина получилась. Это несколько смущает детские мозги, да и мои, если честно, тоже.