Оператор * работает как оператор УПАКОВКИ, только в том случае, когда мы делаем множественное присваивание переменным
Пример:
a, b, *c = 1, 2, 3, 4, 5
Вывод : a = 1, b = 2, c = [3,4,5] (упаковалось)
А как оператор РАСПАКОВКИ, во всех других случаях(передача в функцию, распаковка массива, кортежа, множества)
Пример 1:
def Func(*args), где args - кортеж из параметров, которые мы укажем в Func(), который распаковывается там же внутри и превращает всё в набор параметров
Пример 2:
massiv = [1,2,3,4,365]
print(*massiv)
Вывод: 1 2 3 4 365
Оператор ** используется же только в качестве УПАКОВКИ именованных аргументов функции в виде словаря
Пример:
def Func(**kwargs):
...
Func(a=2, b=99, c='hello')
где kwargs - словарь со значениями:
{a: 2, b: 99, c: 'hello'}
Python
Я правильно понимаю, как работает оператор * и ** в Python? (оператор распаковки\упаковки)
Не так. В заголовке функции - это именно упаковка. Когда мы пишем:
И даже в твоём собственном примере в kwards получаем упакованный словарь.
def fun(*par): ...
и вызываем: fun(1, 2, 3, 4, 5)
, то в par получаем: (1, 2, 3, 4, 5)
Упаковка в чистом виде.И даже в твоём собственном примере в kwards получаем упакованный словарь.
Алексей Ленков
** возведение в степень))) я кстати не сразу вкурил за питон, зачем такая дичь
Верно, в примере функции `Func(**kwargs)`, `kwargs` представляет собой словарь, содержащий именованные аргументы и их значения. В данном случае, словарь `kwargs` будет выглядеть следующим образом: `{a: 2, b: 99, c: 'hello'}`. Внутри функции `Func`, вы можете обращаться к значениям аргументов, используя их имена в качестве ключей словаря `kwargs`.
В Python оператор * может использоваться как оператор упаковки и распаковки в зависимости от контекста.
Когда оператор * используется во время присваивания (например, a, b, *c = 1, 2, 3, 4, 5), он работает как оператор упаковки. В этом случае значения, которые не могут быть присвоены в явно указанные переменные, упаковываются в список или кортеж.
Когда оператор * используется при передаче аргументов функции или распаковке последовательностей (например, *args в функции или print(*massiv)), он работает как оператор распаковки. В этом случае значения последовательности (списка, кортежа и т. д.) распаковываются и передаются как отдельные аргументы в функцию или встроенную функцию.
Оператор ** используется только для упаковки именованных аргументов в словарь при передаче их в функцию.
Надеюсь, это помогло вам понять, как работают операторы * и ** в Python.
Когда оператор * используется во время присваивания (например, a, b, *c = 1, 2, 3, 4, 5), он работает как оператор упаковки. В этом случае значения, которые не могут быть присвоены в явно указанные переменные, упаковываются в список или кортеж.
Когда оператор * используется при передаче аргументов функции или распаковке последовательностей (например, *args в функции или print(*massiv)), он работает как оператор распаковки. В этом случае значения последовательности (списка, кортежа и т. д.) распаковываются и передаются как отдельные аргументы в функцию или встроенную функцию.
Оператор ** используется только для упаковки именованных аргументов в словарь при передаче их в функцию.
Надеюсь, это помогло вам понять, как работают операторы * и ** в Python.
Похожие вопросы
- Я не понимаю как сделать Эту функцию по Python! Не понятно!
- Математические операторы в Python
- Как сделать несколько условий для оператора в Python 3?
- Не совсем понимаю Python, да и в целом программирование. Стоит продолжать?
- Какой язык из этих 2 быстрее будет работать на Linux? Python или C#?
- Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.
- Окончил курсы на степике по Python что делать дальше?
- Задача в Python? Помогите решить, не получается! Решить нужно без функций и методов. Только циклы и условные операторы.
- Python программирование. Помогите написать программу.
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.