def...

Время чтения: меньше 5 мин

Кратко

Секция статьи "Кратко"

Функция в python - объект, принимающий аргументы и возвращающий значение. Обычно функция определяется с помощью инструкции def.

        
          
          def add(x, y):    return x + y
          def add(x, y):
    return x + y

        
        
          
        
      

Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y.

        
          
          add(1, 10)# 11add('abc', 'def')# 'abcdef'
          add(1, 10)
# 11
add('abc', 'def')
# 'abcdef'

        
        
          
        
      

Функция может быть любой сложности и возвращать любые объекты (списки, кортежи, и даже функции!):

        
          
          def newfunc(n):    def myfunc(x):        return x + n    return myfuncnew = newfunc(100)  # new - это функцияnew(200)# 300
          def newfunc(n):
    def myfunc(x):
        return x + n
    return myfunc
new = newfunc(100)  # new - это функция
new(200)
# 300

        
        
          
        
      

Функция может и не заканчиваться инструкцией return, при этом функция вернет значение None:

        
          
          def func():    passprint(func())# None
          def func():
    pass

print(func())
# None

        
        
          
        
      

Аргументы функции

Секция статьи "Аргументы функции"

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

        
          
          def func(a, b, c=2): # c - необязательный аргумент    return a + b + cfunc(1, 2)  # a = 1, b = 2, c = 2 (по умолчанию)# 5func(1, 2, 3)  # a = 1, b = 2, c = 3# 6func(a=1, b=3)  # a = 1, b = 3, c = 2# 6func(a=3, c=6)  # a = 3, c = 6, b не определенTraceback (most recent call last):  File "", line 1, in    func(a=3, c=6)TypeError: func() takes at least 2 arguments (2 given)
          def func(a, b, c=2): # c - необязательный аргумент
    return a + b + c

func(1, 2)  # a = 1, b = 2, c = 2 (по умолчанию)
# 5
func(1, 2, 3)  # a = 1, b = 2, c = 3
# 6
func(a=1, b=3)  # a = 1, b = 3, c = 2
# 6
func(a=3, c=6)  # a = 3, c = 6, b не определен
Traceback (most recent call last):
  File "", line 1, in
    func(a=3, c=6)
TypeError: func() takes at least 2 arguments (2 given)