Что такое функция первого класса в Python

Я все еще не понимаю, что first-class functions являются. Если я правильно понимаю, first-class functions следует использовать одну функцию в качестве объекта. Это правильно?

Это first-class function?

def this_is_example(myarg1):
    return myarg1

def this_is_another_ example(myarg):
     return this_is_example(myarg)+myarg

this_is_another_ example(1)

6 ответов

Функция первого класса не является определенным видом функции. Все функции в Python являются функциями первого класса. Сказать, что функции являются первоклассными в определенном языке программирования, означает, что их можно передавать и манипулировать аналогично тому, как вы бы передавали и манипулировали объектами других типов (например, целыми числами или строками). Вы можете назначить функцию переменной, передать ее в качестве аргумента другой функции и т. Д. Различие не в том, что отдельные функции могут быть первоклассными или нет, а в том, что целые языки могут обрабатывать функции как объекты первого класса или не могут,

"Функции первого класса" (FCF) - это функции, которые рассматриваются как так называемые "граждане первого класса" (FCC). FCC в языке программирования являются объектами (здесь очень свободно используется термин "объекты"), которые:

  • Может использоваться в качестве параметров
  • Может использоваться как возвращаемое значение
  • Может быть назначен переменным
  • Может храниться в структурах данных, таких как хеш-таблицы, списки,...

На самом деле, очень грубо и просто, FCF - это переменные типа "функция" (или переменные, которые указывают на функцию). Вы можете делать с ними все, что можете делать с "нормальной" переменной.

Зная это, оба this_is_another_example(myarg) а также this_is_example(myarg1) являются функциями первого класса, так как все функции являются первоклассными в определенных языках программирования.

Нет. Вы говорите о функциях высшего порядка - см.

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

Python, JavaScript и C(указатели) поддерживают функции первого класса.

Простой пример (на питоне):

def square(x): return x * x
def cube(x): return x * x * x

def print_result(x, func):
    """recieve a function and execute it and return result"""
    return func(x)

do_square = square     # assigning square function to a variable
do_cube = cube         # assigning cube function to a variable

res = print_result(5, do_square)   # passing function to another function
print res
res = print_result(5, do_cube)
print res

Эта программа только для иллюстрации.

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

Концепция "первоклассного" касается только функций в языках программирования. Первоклассные функции означают, что язык обрабатывает функции как значения - что вы можете назначить функцию переменной, передать ее и т. Д. Это редко используется при обращении к функции, такой как "функция первого класса". Гораздо чаще говорят, что "язык имеет / не имеет поддержки первоклассных функций". Таким образом, "имеет первоклассные функции" - это свойство языка.

Свойства функций первого класса:

  • Функция - это экземпляр типа Object.
  • Вы можете сохранить функцию в переменной.
  • Вы можете передать функцию в качестве параметра другой функции.
  • Вы можете вернуть функцию из функции.
  • Вы можете хранить их в структурах данных, таких как хеш-таблицы, списки и т. Д.

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

def pie(r):
    def circleArea(d):
        return r * (d ** 2)
    return circleArea

c = pie(3.14)
print c(2)

Выше приведен пример для функции первого класса в Python.

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

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

Свойства функций первого класса:
Функция является экземпляром типа Object.
- Вы можете сохранить функцию в переменной. - Вы можете передать функцию в качестве параметра другой функции. - Вы можете вернуть функцию из функции. - Вы можете хранить их в структурах данных, таких как хеш-таблицы, списки,...

Примеры, иллюстрирующие функции первого класса в Python
1. Функции являются объектами: функции Python являются объектами первого класса. В приведенном ниже примере мы присваиваем функцию переменной. Это назначение не вызывает функцию. Он берет объект функции, на который ссылается shout, и создает второе имя, указывающее на него, yell.



    # Python program to illustrate functions
    # can be treated as objects
    def shout(text):  
        return text.upper()      
    print shout('Hello') 
    yell = shout 
    print yell('Hello')

Выход:
ПРИВЕТ
ПРИВЕТ

  1. Функции могут быть переданы в качестве аргументов другим функциям: поскольку функции являются объектами, мы можем передавать их в качестве аргументов другим функциям. Функции, которые могут принимать другие функции в качестве аргументов, также называются функциями высшего порядка. В приведенном ниже примере мы создали функцию greet, которая принимает функцию в качестве аргумента.


    # Python program to illustrate functions
    # can be passed as arguments to other functions
    def shout(text):
        return text.upper()
    def whisper(text):
        return text.lower()
    def greet(func):
        #storing the function in a variable
        greeting = func("Hi, I am created by a function passed as an argument.")
        print greeting     
    greet(shout)
    greet(whisper)

Выход:
ПРИВЕТ, Я СОЗДАН ФУНКЦИЕЙ, ПРОЙДЕННОЙ В АРГУМЕНТЕ.
привет, я создан функцией, переданной в качестве аргумента

  1. Функции могут возвращать другую функцию: поскольку функции являются объектами, мы можем вернуть функцию из другой функции. В приведенном ниже примере функция create_adder возвращает функцию adder.


    #Python program to illustrate functions
    #Functions can return another function    
    def create_adder(x):  
        def adder(y):  
            return x+y  
        return adder  
    add_15 = create_adder(15)
    print add_15(10)

Выход:
25

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

Это хороший пример, иллюстрирующий первоклассные функции Python в их классической форме: переменная, содержащая лямбда-функцию:

twice = lambda x: 2 * x
d = twice(5)
print(d)  # 10
Другие вопросы по тегам