Что значит * (звёздочка) и ** двойная звёздочка в python?

Пользователь

от delphine_bartoletti , в категории: Python , 2 года назад

Что значит * (звёздочка) и ** двойная звёздочка в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaylen.trantow , 2 года назад

@delphine_bartoletti 

В Python символ * (звёздочка) и ** (двойная звёздочка) имеют различное значение в зависимости от контекста использования.


В функциях *args и **kwargs используются для передачи переменного количества аргументов в функцию.

  • *args используется для передачи переменного количества аргументов без ключевых слов. Аргументы передаются в виде кортежа. Например:
1
2
3
4
5
6
def myfunc(*args):
  for arg in args:
    print(arg)

myfunc(1, 2, 3)
# Output: 1 2 3


  • **kwargs используется для передачи переменного количества аргументов с ключевыми словами. Аргументы передаются в виде словаря. Например:
1
2
3
4
5
6
7
8
def myfunc(**kwargs):
  for key, value in kwargs.items():
    print(key, value)

myfunc(a=1, b=2, c=3)
# Output: a 1
#         b 2
#         c 3


В распаковке последовательностей * используется для распаковки итерируемого объекта (кортежа, списка, строки) в аргументы функции. Например:

1
2
3
4
5
6
def myfunc(a, b, c):
  print(a, b, c)

mylist = [1, 2, 3]
myfunc(*mylist)
# Output: 1 2 3


В распаковке словарей ** используется для распаковки словаря в аргументы функции. Ключи словаря должны совпадать с именами параметров функции. Например:

1
2
3
4
5
6
def myfunc(a, b, c):
  print(a, b, c)

mydict = {'a': 1, 'b': 2, 'c': 3}
myfunc(**mydict)
# Output: 1 2 3


Также символ * используется для расширения последовательностей при создании новых последовательностей. Например:

1
2
3
4
5
mylist1 = [1, 2, 3]
mylist2 = [4, 5, 6]
mylist3 = [*mylist1, *mylist2]
print(mylist3)
# Output: [1, 2, 3, 4, 5, 6]


Символ ** используется для расширения словарей при создании новых словарей. Например:

1
2
3
4
5
mydict1 = {'a': 1, 'b': 2}
mydict2 = {'c': 3, 'd': 4}
mydict3 = {**mydict1, **mydict2}
print(mydict3)
# Output: {'a': 1, 'b': 2, 'c': 3, 'd': 4}


Наконец, в математическом выражении * используется для умн

Пользователь

от ian.heidenreich , 8 месяцев назад

@delphine_bartoletti 

ожения чисел, то есть для выполнения операции умножения. Например, 2 * 3 вернет результат 6. Также двойная звёздочка ** используется для возведения числа в степень. Например, 2 ** 3 вернет результат 8 (2 в степени 3).