Предположим, вы написали 1 функцию для печати имени.

def print_my_name(name): print('hi ', name)

И для вызова этого метода вы вызвали этот метод, используя приведенный ниже код.

nm = 'name' print_my_name(nm)

В приведенном выше примере, когда вы написали код функции, передал их имя, это упоминается как параметр. Когда вы вызываете эту функцию, используя имя функции и все, что вы передаете, это называется аргументом. Здесь аргумент передается по ссылке, что означает, что мы передаем адрес памяти nm этому имени или строковому значению.

Позиционный параметр

Смотрите ниже код добавления функции

def add(a, b): return a + b

В этой позиции параметр сначала, а затем б. когда мы вызываем эту функцию, мы передаем

add(10, 20)

Значения a = 10 и b = 10 означают, что мы передаем параметры в порядке их присутствия в функции.

Значение по умолчанию

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

def add(a, b=100): return a + b

в приведенном выше коде, когда мы вызываем эту функцию добавления, и даже если мы не предоставляем значение b, то он также выполняет функцию, потому что у нас есть значение по умолчанию для этого и

add (10) в этом случае a = 10 и python принял b = 100, это значение по умолчанию, но когда мы вызываем

добавить (22,32) в этом случае а = 22 и б = 32.

Если вы хотите присвоить параметру значение по умолчанию, вы должны объявить, что этот параметр является последним параметром в функции, иначе он выдаст ошибку.

Ниже код не скомпилируется.

def add(a, b=100,c): return a + b

Ключевое слово или Именованные аргументы

Посмотрите на код ниже

def add(a, b=100, c=232): return a + b + c

и для вызова этого метода мы пишем код ниже

add(a=10, c=11)

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

В названном аргументе взял ниже код

add(a=10, 11)

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

* арг:

Если функция содержит этот параметр, то это означает, что он получит любое количество параметров или аргументов. Вы не можете добавить позиционный параметр после * args.

def add(a, b, *args): c = a + b for e in args: c = c + e print(c) return c add(10, 20, 30, 40, 50) # output - 150

Позиционные аргументы с * args:

def add(a, b=10, *args, d): c = a + b + d for e in args: c = c + e print(c) # output - 40 add(10, d=20) def add(a, b=10, *, d): c = a + b + d print(c) # output - 40 add(10, d=20)

В приведенном выше примере * это конец позиционных аргументов.

** kwargs: в этом параметре нет после kwargs (аргумент только для ключевого слова). kwargs это словарь и принял параметр в качестве словаря.

def add(a, **kwargs): print(a ,kwargs) add(10, b=22, d=20) # output - 10 {'b': 22, 'd': 20}
def sub(**kwargs): c = 0 for b in kwargs: c = c - kwargs[b] print(c) sub(b=22, d=20) # output - -42
def mul(*args, **kwargs): print(args, kwargs) mul(10, 20, b=22, d=20) # output - (10, 20) {'b': 22, 'd': 20}