What is first class function in Python
Asked Answered
A

8

33

I am still confused about what first-class functions are. If I understand correctly, first-class functions should use one function as an object. Is this correct?

Is this a 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)
Augustin answered 10/12, 2014 at 2:31 Comment(0)
D
46

A first-class function is not a particular kind of function. All functions in Python are first-class functions. To say that functions are first-class in a certain programming language means that they can be passed around and manipulated similarly to how you would pass around and manipulate other kinds of objects (like integers or strings). You can assign a function to a variable, pass it as an argument to another function, etc. The distinction is not that individual functions can be first class or not, but that entire languages may treat functions as first-class objects, or may not.

Dilworth answered 10/12, 2014 at 2:35 Comment(0)
Y
22

"First-Class Functions" (FCF) are functions which are treated as so called "First-Class Citizens" (FCC). FCC's in a programming language are objects (using the term "objects" very freely here) which:

  • Can be used as parameters
  • Can be used as a return value
  • Can be assigned to variables
  • Can be stored in data structures such as hash tables, lists, ...

Actually, very roughly and simply put, FCF's are variables of the type 'function' (or variables which point to a function). You can do with them everything you can do with a 'normal' variable.

Knowing this, both this_is_another_example(myarg) and this_is_example(myarg1) are First-Class Functions, since all functions are First-Class in certain programming languages.

Yonah answered 10/12, 2014 at 2:39 Comment(0)
H
6

No. You are talking about higher-order functions -- refer.

First class functions: If a function can be assigned to a variable or passed as object/variable to other function, that function is called as first class function.

Python, JavaScript and C(pointers) support first class functions.

A simple example (in python):

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

This program is just for illustration.

Heidelberg answered 24/2, 2017 at 21:1 Comment(2)
Does C really treat functions as first class citizens? Care to add the example in C?Inexpugnable
@ypercubeᵀᴹ im not a C guy. Sorry for that. But i do recall that u may pass pointers to your function calls. Im not sure though.Heidelberg
W
5

First Class functions in Python:

The “first-class” concept only has to do with functions in programming languages. First-class functions means that the language treats functions as values – that you can assign a function into a variable, pass it around etc. It’s seldom used when referring to a function, such as “a first-class function”. It’s much more common to say that “a language has/hasn’t first-class function support”.So "has first-class functions" is a property of a language.

Properties of first class functions:

  • A function is an instance of the Object type.
  • You can store the function in a variable.
  • You can pass the function as a parameter to another function.
  • You can return the function from a function.
  • You can store them in data structures such as hash tables, lists etc.

So, languages which support values with function types, and treat them the same as non-function values, can be said to have "first class functions".

Walters answered 26/10, 2019 at 6:23 Comment(1)
Well explained link from youtube: youtube.com/watch?v=kr0mpwqttM0Walters
G
1
def pie(r):
    def circleArea(d):
        return r * (d ** 2)
    return circleArea

c = pie(3.14)
print c(2)

Above is an example for first class function in python.

Genome answered 18/5, 2017 at 7:15 Comment(0)
S
1

First Class functions in Python

First class objects in a language are handled uniformly throughout. They may be stored in data structures, passed as arguments, or used in control structures. A programming language is said to support first-class functions if it treats functions as first-class objects. Python supports the concept of First Class functions.

Properties of first class functions:
A function is an instance of the Object type.
- You can store the function in a variable. - You can pass the function as a parameter to another function. - You can return the function from a function. - You can store them in data structures such as hash tables, lists, …

Examples illustrating First Class functions in Python
1. Functions are objects: Python functions are first class objects. In the example below, we are assigning function to a variable. This assignment doesn’t call the function. It takes the function object referenced by shout and creates a second name pointing to it, 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')

Output:
HELLO
HELLO

  1. Functions can be passed as arguments to other functions: Because functions are objects we can pass them as arguments to other functions. Functions that can accept other functions as arguments are also called higher-order functions. In the example below, we have created a function greet which takes a function as an argument.


    # 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)

Output:
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT.
hi, i am created by a function passed as an argument.

  1. Functions can return another function: Because functions are objects we can return a function from another function. In the below example, the create_adder function returns adder function.


    #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)

Output:
25

Schnurr answered 1/8, 2017 at 13:57 Comment(1)
Seems to be a copy of this: dbader.org/blog/python-first-class-functions. But still a useful explanation!Stegman
J
0

Every function in python is first class, because they can be passed around like any other object.

Jimjams answered 10/12, 2014 at 3:7 Comment(0)
M
0

This is a good example to illustrate Python first-class functions in their classical form: a variable holding a lambda function:

twice = lambda x: 2 * x
d = twice(5)
print(d)  # 10
Motto answered 21/4, 2020 at 20:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.