Python - параметры по-умолчанию | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Читая про Python наткнулся на habrahabr.ru вот на такой пример:
Проверил, действительно - Python работает именно так. Это несколько не укладывается в рамки привычного опыта. Например, в том же JavaScript всё работает так, как надо:
Автор приводит аргументацию такого поведения: Цитата: В общем - взорвало мозг. Коллеги - есть какие то соображения, почему Python ведёт себя именно так? P.S. Пример на VFP придумать не смог. |
Re: Python - параметры по-умолчанию | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Объяснение автора абсолютно не понятно. Например, если в Python-е заменить список на строку, получается "как надо"
|
Re: Python - параметры по-умолчанию | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Там в комментах объясняется.
Строка - immutable объект, а список - нет. Поэтому если список УЖЕ ЕСТЬ, то он не "обнулится" при присвоении ему [] а строка - будет пересоздана. На вопрос "почему" искать ответ бессмысленно. Так сделан интерпретатор. Вот почему в фоксе по умолчанию все переменные private и видны "абы где" ниже по стеку вызовов? И почему нет команды объявления private переменной (только при помощи "присвоения значения" можно её объявить), тогда как есть явные команды объявления и глобальных и локальных переменных Ответ тут один - by design ------------------ WBR, Igor |
Re: Python - параметры по-умолчанию | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
В общем, как в комментах написал один товарищ:
Цитата: Если что - мне для работы Python не нужен, ни один из моих знакомых на Python-е ни чего не ваяет. Это так, для расширения кругозора. |
Re: Python - параметры по-умолчанию | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
При расширении кругозора границы незнания также расширяются...
|
Re: Python - параметры по-умолчанию | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Если сделать:
Т.е. если присвоить уже существующему списку [] он вполне себе обнуляется. Т.е. проблема именно в реализации интерпретатора. Что ж. Язык этот "динамично развивающийся", может будет ещё версия 4, обратно не совместимая с 3 Исправлено 1 раз(а). Последнее : S-type, 05.02.17 19:55 |
Re: Python - параметры по-умолчанию | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Кстати, на счёт "расширения кругозора". До создания примера на JavaScript попытался создать пример на C#, и обнаружил - не могу! При указании:
Вижу:
Действительно, это ведь компилятор, а не интерпретатор При этом понимаю, что для списков нет инициализирующего выражения. Т.е. для массива можно вместо:
указать
Для списка есть:
Но,
выдаёт ошибку. Нет такого "упрощённого" (сладкого) выражения? И ещё вопрос. Если параметр типа список (List), как для него задать "значение по умолчанию" отличное от Null? Исправлено 1 раз(а). Последнее : S-type, 05.02.17 21:40 |
Re: Python - параметры по-умолчанию | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
"Параметры по умолчанию" в C# могут быть либо константой (включая "значения" из перечислений), либо "пустым" ValueType вида new ... или же default().
При том что на самом деле эта синтаксическая конструкция лишь хинт для компилятора - он подставит в точке вызова эти самые значения в команду вызова метода. Инициализирующие выражения тут совершенно не при чём. Сделать "параметром со значением по умолчанию" string[] нельзя так же как и List<string>. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |