Сообщить об ошибке.

Параметры (аргументы) функции

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

Параметры функции представляют собой локальные переменные, которым присваиваются значения в момент ее вызова. Иногда у параметрам задают значения (аргументы), используемые по умолчанию. Конкретные значения, которые передаются в функцию при ее вызове, называются аргументами.

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

Параметры (аргументы) функции передаются в локальную область видимости с использованием вызова по значению, где значение всегда является ссылкой на объект, а не значением объекта.

def func (a, b):
    a = a * b
    b = a / 2
    return a + b

n1 = 10
n2 = 5
rez = func(n1, n2)
print(rez)
print(n1, n2)
# напечатает
75,0
10 5

Изменение значений a и b в теле функции никак не скажется на значениях переменных n1 и n2, определенных в глобальном пространстве. Они останутся прежними. Говорят, что в функцию данные передаются по значению. Когда a присваивалось число 10, то это было уже другое число, не то, на которое ссылается переменная n1. Число 10 было скопировано и помещено в отдельную ячейку памяти для переменной a.

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

Какие бывают аргументы/параметры в функциях Python.

Аргумент - это значение, передаваемое функции (или методу) при вызове функции.

Есть два типа аргументов:

  • ключевой аргумент: аргумент, которому предшествует идентификатор (например, name=) в вызове функции или переданный как значение в словаре, которому предшествует две звездочки ** - обозначение распаковки словаря.

    Например, 3 и 5 являются аргументами ключевого слова в следующих вызовах встроенной функции complex():

    # передача значений ключевым 
    # аргументам функции
    complex(real=3, imag=5)
    
    dict_args ={'real': 3, 'imag': 5} 
    # передача словаря со значениями
    # ключевых аргументов
    complex(**dict_args)
    
  • позиционный аргумент: аргумент, который не является ключевым аргументом. Позиционные аргументы могут появляться в начале списка аргументов и/или передаваться как элементы итерации, которым предшествует одна звездочка * - обозначение распаковки итераций (списков/кортежей). Например, 3 и 5 являются позиционными аргументами в следующих вызовах:

    # передача значений позиционным 
    # аргументам функции
    complex(3, 5)
    
    tuple_args = (3, 5)
    # передача кортежа со значениями
    # позиционных аргументов
    complex(*tuple_args)
    

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

Также смотрите раздел "Варианты передачи аргументов в функцию Python".

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