Python

Что такое "параметры функций" в Пайтоне? Я никак не могу понять

Я книгу читаю A Byte of Python и остановился на этом разделе
Там в примере вот такой код показан, но я вообще не могу понять его логику, разьяснение тоже непонятливое
Сижу как дебил перечитываю каждый раз, но все равно не понимаю
хотя предыдущие разделы были понятливые

def printMax(a, b):
if a > b:
print(a, 'максимально')
elif a == b:
print(a, 'равно', b)
else:
print(b, 'максимально')
printMax(3, 4) # прямая передача значений
x = 5
y = 7
printMax(x, y) # передача переменных в качестве аргументов
велик зайчик
Дорош Александр
Дорош Александр
20 235
Лучший ответ
Конечно, дебил.

До printMax(3, 4) # прямая передача значений - описание функции.
От printMax(3, 4) # прямая передача значений - примеры применения.

Что непонятного?
Влад Зюзин
Влад Зюзин
51 005
def func (a,b):
return a + b
print(func(2,3))
a и b - те самые параметры
Например, в математике есть функция синус. Слышал о такой? Что передаётся в функцию - это её аргумент или параметр. Функция возвращает свой результат. В случае синуса - это значение синуса для переданного аргумента.
y = sin(x)
тут x - аргумент функции. В переменную y будет записан результат.

Функция printMax в вопросе ничего не возвращает, а выводит данные на экран.
def printMax(a, b):
тут a, b - это формальные параметры. Это переменные, которым будет присвоено значение фактических параметров. Фактические параметры указываются при вызове функции.
-Что-то внутри тебя препятствует пониманию элементарных вещей - вероятно какой-нибудь невероятно вредный "чёртик" в голове !
Вот пример вычисления интеграла по методу средних:
def sred(f,a,b,n):
~~h,s=(b-a)/n,0
~~for i in range(n): s+=f(a+(i+0.5)*h)
~~return s*h
Здесь f,a,b,n - это всё формальные параметры функции sred, вычисляющей интеграл, причём n - целое число, a и b - вещественные числа, а f - арифметическая функция. При вызове функции sred вместо формальных параметров подставляются истинные параметры. Например, такой инструктивный скрипт выдаст на экран искомое значение интеграла S{x=0;π}sin(x)dx:
import math; π,sin=math.pi,math.sin
print(sred(sin,0,π,100000))
0 и 100000 передаются прямо, а sin и π по ссылке !..
Б С
Б С
28 648
def sum_numbers(num1, num2): return(num1+num2)

a = 2
b = 5

sum_numbers(a, b)
a и b - аргументы
num1 и num2 - параметры
def printMax(a, b) - вот в твоей функции а и b это и есть параметры.
А printMax(400, 5) - 400 и 5 - это аргументы.
Имена, указанные в объявлении функции, называются параметрами, тогда как значения, которые передают в функцию при её вызове, – аргументами.
Есть еще запись anyFunc(*args) - в таком случае все аргументы передаваемые функции anyFunc запаковываются в кортеж. То есть не нужно явно указывать кучу параметров в стиле (x, y, z, a, b, c и т. д.) при объявлении функции. Стоит сказать что тут главное сам оператор *, вместо args можно любое слово
anyFunc(**kwarg) - тут в словарь запаковываются именованные аргументы. Тогда возможно подобное заполнение аргументов:
anyFunc(name='Vasya', phone=88005553535)
автор чепушила все ответы скрыл