Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/55: Рейтинг темы: голосов - 55, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 37

Переменное число параметров

05.09.2016, 19:46. Показов 11442. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, начал изучать Python, как прошла неделя уже), скачал книгу "Укус питона", очень доходчивая книжка, но вот не до конца понял одну тему "Переменное число параметров", там довольно простой пример, но мне как человеку с интеллектом ниже среднего все же не до конца все ясно.
Python
1
2
3
4
5
6
7
8
9
def total(initial=5, *numbers, **keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
 
print(total(10, 1, 2, 3, vegetables=50, fruits=100))
Вот этот код, объясните пожалуйста что происходит в этом коде. За какое время можно подучить этот язык что бы было достаточно знаний и опыта, дабы устроится на работу? Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2016, 19:46
Ответы с готовыми решениями:

Переменное число параметров
Читаю книгу A byte of piton Глава 10.7 (Переменное число параметров) Собственно вопрос в том, что я не понял что делает задача (ответ...

Переменное число именованных аргументов
Здравствуйте, нуждаюсь в вашей помощи. Имеется такое вот задание: найти среднеквадратическое отклонение 4 чисел, используя в решении...

Переменное число аргументов в функции python
Здравствуйте, скажите пожалуйста, можно ли данную функцию как - нибудь преобразовать в функцию с переменным количеством аргументов? ...

10
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.09.2016, 00:08
initial это аргумент со значением по умолчанию, в него будет передано первый переданный аргумент из списка всех аругментов, в numbers будут засунуты все не именованный аргументы, а в keywords все именованные (vegetables, fruits).
Что конкретно не понятно?
1
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 37
06.09.2016, 18:42  [ТС]
То есть initial это "аргумент" к которому присвоили значение 5(значение) и потом это значение будет автоматически присвоено numbers и к keywords? Затем count присвоили initial. Затем идет массив, который делает что то непонятное. number пересчитывает до numbers? или что это за процесс? затем идет count = count + number, откуда number взялся? был же numbers. Дальше аналогично, затем идет return count, это мы "вернули"? Что мы вернули? Простите если не разборчиво.
0
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
06.09.2016, 19:25
initial - это счётчик. initial по умолчанию равно 5, если не присваивается другого при вызове функции. После первого аргумента (initial) может задаваться некоторое количество значений, которые записываются в множество numbers. Дальше можно задать несколько именованных значений, которые запишутся в словарь keywords.
В приведённом примере первый аргумент функции есть число, он меняет значение count с 5 на 10. Следующие три значения записываются в (1, 2, 3), и первый цикл, проходя по этому множество, прибавляет каждое его значение к count. Т.е. после 1-го цикла count = 16. Оставшиеся 2 аргумента записываются в словарь {'fruits': 100, 'vegetables': 50}. Второй цикл прибавляет значение каждого элемента его к счётчику. Т.е. эта функция вернёт значение 166.
0
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 37
06.09.2016, 19:45  [ТС]
Тоесть
Python
1
print(total(10, 1, 2, 3, vegetables=50, fruits=100))
он взял эти четыре цифры и сплюсовал их. Тогда зачем вообще нужно было в аргументах присваивать к 5? И вот недопонял. Зачем и что дает вот
PHP/HTML
1
2
3
4
5
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
Он считает по колличеству букв в этом слове "number"? как он понимает что это за слово и что с ним делать?Почему тут можно делать разницу в слове в одну букву"s"? Разве "number" не нужно присваивать к переменной с начала? Почему тут квадратные скобки "[key], что они дают? Или я вообще ничего не понял.
0
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
06.09.2016, 20:21
Тогда зачем вообще нужно было в аргументах присваивать к 5?
Если мы подадим на вход функции total(vegetables=50, fruits=100) или вообще total(), то начальное значение счётчика count будет равно 5.
Он считает по колличеству букв в этом слове "number"?
В цикле мы проходим по итерируемому объекту с помощью итератора. В Вашем случае это number и key. Часто итератор называют буквой i.
Почему тут можно делать разницу в слове в одну букву"s"?
Конечно, нельзя. number и numbers - это две разные переменные.

Каждый проход цикла итератору присваивается поочерёдно значение элемента итерируемого объекта. number будет равно (1, 2, 3). Т.е. в первом цикле number сначала будет присвоено значение 1, потом оно прибавится к count. Потом присваивается и прибавляется значение 2, потом 3. Во втором цикле итератор key проходит по значениям словаря keywords {'fruits': 100, 'vegetables': 50}. Нужно к count прибавить ключи, т.е. числа. Поэтому нужно извлечь ключ из словаря с помощью квадратных скобок.

Не знаю, как объяснить ещё подробней.Почитайте получше о циклах.
0
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 37
07.09.2016, 19:07  [ТС]
Давайте пробежимся по коду еще раз, если можно). Вот мы объявили функцию TOTAL, вот мы создали три агрумента, initial, *numbers, **keywords. Зачем то поставили знак "звездочка", затем создали переменную count, присвоили ей значение initial. Затем итерируем, слово то какое непонятное кое как разобрался с переводом на русский), то есть берем переменную и проводим ее, итерируем тоесть создаем массив, "number"- количество раз, цифры (1,2,3) по порядку. Затем переменную count = count + number, производим какую то операцию, тоесть взяли число 10 и стали прибавлять сначала 1, потом 2, потом 3. в общей сумме получили 16. Тогда вопрос, зачем мы это сделали если можно было бы просто взять и сплюсовать это все? Затем идет переменная key, мы берем данные от "vegetables" и "fruits" , а тоесть count=count + keywords[key], а именно то что мы получили с верху, цифру 16, мы ее взяли и приплюсовали к сумме обоих значений, vegetables" и "fruits". И дальше идет return, который возвращает такое колличество раз итерацию, сколько указанно в
Python
1
print(total(10, 1, 2, 3, vegetables=50, fruits=100))
, а тоесть 10. Хуух, все правльно понял? Спасибо еще раз за внимание.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.09.2016, 19:14
Цитата Сообщение от billerafont Посмотреть сообщение
Зачем то поставили знак "звездочка"
Для того, чтобы функция могла принимать переменное количество не именованных переменных и переменное количество именованных.
0
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 37
07.09.2016, 19:24  [ТС]
а в этом примере не именованные переменные это 1, 2, 3 же? а именованные это vegetables=50, fruits=100?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.09.2016, 19:26
Да.
1
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 1
20.03.2019, 21:36
А зачем нам вообще нужен параметр initial? Ведь без него переменной count можно присвоить 0 и она будет работать как счётчик и программа будет работать также. Объясните пожалуйста какую функцию выполняет параметр initial. Спасибо заранее за ответ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.03.2019, 21:36
Помогаю со студенческими работами здесь

QStringList в переменное число параметров
Прошу показать как объявить метод с переменным числом параметров типа QStringList, и как перемещаться по этим параметрам?

Переменное число параметров в функции c++
Нужна функция, которая будет принимать переменное число параметров и при этом параметры будут разных типов данных. Пример: template...

Переменное число параметров шаблона
Здоровеньки булы. Не уверен, что название темы точно отражает суть вопроса. Есть заготовка шаблонного делегата, параметры которого -...

Переменное число параметров в шаблонной функции c++
Есть вот такая шаблонная функция: template <typename T> void show(int num, T a1...) { T* ptr = &a1; while (num--) { ...

Переменное число параметров в шаблонном классе
Добрый вечер, подскажите пожалуйста, почему при создании шаблонного класса с типом double значения выводятся корректно, а при использовании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru