Рубрики
Без рубрики

Функции первого класса в Python

Эта статья была впервые опубликована здесь, что являются функциями первого класса? Функции в программе … Помечено Python, программирование, функции, первыеКресты.

Эта статья была впервые опубликована здесь

Каковы функции первого класса?

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

  • Их можно хранить в переменных.
  • Их можно хранить в структурах данных.
  • Их можно пропустить как аргумент к функции.
  • Они могут быть возвращены как значения из другой функции.

Python поддерживает все эти функции, чтобы функции рассматривались как граждане первого класса.

Это не только Python, только в любых средствах, многие другие языки лечат функционируют как граждане первого класса, а именно JavaScript, PHP, Perl. Они в значительной степени необходимы для стиля функционального программирования.

Определение функций

Как вы уже должны знать, мы определим функции в Python с деф ключевое слово.

def foo():
    pass

Функция хранится в месте памяти, как показано ниже по адресу 0x0376cb28 Отказ

>>> foo

Хранение функций в переменных

Как функция в Python – граждане первого класса, вы можете хранить функцию в переменной.

>>> foo

>>> bar = foo
>>> bar

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

Не только вы можете хранить их в простых переменных, но вы можете хранить функции в списке, Dict и других структурах данных, как показано ниже.

# storing in list
>>> mylist = []
>>> mylist.append(foo)

# storing in dict
>>> mydict = {}
>>> mydict['function_foo']= foo

Прохождение функций в качестве аргументов

Функции могут быть переданы как аргументы в другую функцию. Проверьте образец ниже.

def main(func):
    print(func)

def foo():
    pass

print(foo)

main(foo)

Вывод показан ниже …



Функция Foo передается как аргумент для функции Главная И мы можем подтвердить, что это та же функция Foo который Главная Получил в качестве аргумента путем печати адреса памяти (особенность CPYthon) функции глобально, а также в Главная функция.

Возвращая функции

Точно так же функция может вернуть другую функцию.

def foo():
    pass

def main():
    return foo  # returns a function

bar = main()

Как вы видите адрес памяти все еще одинаково для фюра и бар Отказ

>>> foo

>>> bar

Преимущества функций первого класса

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

  • Декораторы
  • Динамический инспекция кода
  • Обратные вызовы

Оригинал: “https://dev.to/therajatsethi/first-class-functions-in-python-1gan”