Назначение * и ** в Python

  1. Определение * в Python
  2. Определение ** в Python
  3. Использование * и ** в вызовах функций в Python

В этой статье объясняется назначение символов * и ** в Python.

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

Мы можем передать любое количество аргументов функции Python одним из следующих способов.

  1. Позиционные аргументы (*)
  2. Аргументы ключевого слова (**)

Определение * в Python

Используйте символ * в Python, чтобы разрешить функцию переменного числа позиционных аргументов / параметров.

Следуйте приведенному ниже примеру.

def function_singleasterix(*someargs):
    for i in someargs:
        print(i)

Теперь код драйвера со списком или кортежем выглядит следующим образом.

listdata=[ "Alex","Tom","John","Alice"]
function_singleasterix(listdata)

Выход:

['Alex', 'Tom', 'John', 'Alice']

Используйте только позиционные аргументы, если вы не хотите, чтобы пользователи знали имена параметров.

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

Определение ** в Python

Используйте символ ** в Python, чтобы разрешить функцию переменного числа аргументов / параметров ключевого слова. Обратите внимание, что аргумент после должен быть элементом сопоставления (пара ключ-значение словаря), а не кортежем или списком.

Следуйте приведенному ниже примеру кода.

def function_doubleasterix(**keywordargs):

    print("The keys in the kwargs dicionary are -", keywordargs.keys())
    print("The values in the kwargs dicionary are -", keywordargs.values())

    print("--The key value assignment in the 'keywordargs' dictionary are as follows--")
    for key, value in keywordargs.items():
        print ("%s == %s" %(key, value))

В приведенном выше примере ключевые слова связаны со словарем, как в программе ниже.

function_doubleasterix(SNo001 ='Alex', SNo002 ='Tom')

Выход:

The keys in the 'keywordargs' dicionary are - dict_keys(['SNo001', 'SNo002'])
The values in the 'keywordargs' dicionary are - dict_values(['Alex', 'Tom'])
--The key value assignment in the 'keywordargs' dictionary are as follows--
SNo001 == Alex
SNo002 == Tom

В приведенном выше примере **keywordargs предоставляет аргументы ключевого слова в виде пар ключ-значение словаря.

Использование * и ** в вызовах функций в Python

Символы * и ** также используются в вызовах функций. Используйте их для передачи переменного числа аргументов функции, используя одно из следующих действий.

  • список - *
  • кортеж - *
  • словарь - **

Вот несколько примеров, которым вы можете следовать.

Вызов функции с списком переменных в качестве входа. Используйте * как следует

varlist = ["Tom","John","Alice"]
functiondef(*varlist)

Вызовите функцию с переменным словарем в качестве входных данных. Используйте ** как следует

vardict = {'a':"Tom",'b':"John",'c':"Alice"}
functiondef(**vardict)

Вызов функции с переменной кортеж в качестве входа. Используйте * как следует

vartuple = ("Tom","John","Alice")
functiondef(*vartuple)

Результатом для всех вышеупомянутых случаев является:

SNo1=Tom
SNo2=John
SNo3=Alice