Python — An Introduction
Python is a general-purpose programming language that is extremely popular. It is an interpreted high-level language that emphasizes code readability with the use of significant indentation. Python is used by programmers to write clean, logical codes for projects of any scale.
Python was conceived in the 1980s as a successor to the ABC programming language by Guido Van Rossum. Since then, Python has remained a popular programming language due to its versatility.
Functions — An introduction
Functions are code blocks that work when called can be called n times in a program. They are structured code statements and perform a specific function, and can be used at any time. Functions are fundamentally classified as:
- User-Defined Function (USF) — Customizable functions that can be changed as per the requirements of the programmer.
- Built-in Functions (BIF) — Functions that cannot be customized and have to be used the way it is available.
Learn Data Science Courses online at upGrad
Python Lambda Functions
Python Lambda functions are essentially anonymous because they do not possess a definite name. A def function is used to denote a normal function in Python. Meanwhile, the keyword Lambda is used to define an anonymous Python function.
The Lambda function is a small function that can take several arguments but only one expression. They also have a more restrictive but concise syntax than regular Python functions. The lambda function was added to the Python Language in 1994 along with map(), filter(), and reduce() functions.
Check our US - Data Science Programs
To define an anonymous function, one has to use the lambda keyword like def is used for normal functions. There are three parts to an anonymous function defined in Python:
- The keyword lambda
- Parameters or a bound variable
- Function body
The syntax to a lambda function is as follows:
Lambda p1, p2: expression
The p1 and p2 are the parameters here. There is no restriction for adding parameters in the lambda function. You can add as many or as few as you want. But the lambda function is syntactically restricted to one expression.
Examples for lambda function in Python:
x =”Lambda Function”
# lambda gets pass to print
(lambda x : print(x))(x)
x = lambda a : a + 10
Our learners also read: Learn Python Online for Free
Differences between normal function and lambda function
The lambda function possesses some syntactic differences than normal functions.
- Only expressions and not statements are used in the body. If any statements like pass, assert, return or raise are used, the output will show a SyntaxError.
>>> (lambda x: assert x == 2)(2)
File “<input>”, line 1
(lambda x: assert x == 2)(2)
SyntaxError: invalid syntax
- A lambda function can only exist as a single expression. Even if the expression is spread throughout the body using multiple strings, it can only remain as a single expression.
>>> (lambda x:
… (x % 2 and ‘odd’ or ‘even’))(3)
When the lambda argument is odd, the code returns the string odd and even when it is not. The code spans across two lines as it is inside the parentheses but remains as a single expression.
- The lambda function does not support type annotations. Adding annotations to a lambda syntax will cause a Syntaxerror.
- IIFE or Immediately Invoked Function Expression is a function executed as soon as it is defined. It is also known as Self Executing Anonymous Function. IIFE is a direct consequence of the lambda function, as a lambda function is callable as it is defined.
Now, let’s see the key differences between normal functions and lambda functions are:
Lambda Functions – Pros and Cons
- It makes the code more readable.
- Ideal for functions that are used one time.
- Easy to understand and can be used for simple logical explanations.
- Multiple independent expressions cannot be performed.
- Using the lambda function is not ideal if a code would span for more than a line in a normal (def) function.
- All the inputs, outputs, and operations cant be explained in a docstring like in a normal function.
Where to use Lambdas?
Even though normal def functions and lambda functions have key differences, internally, they are treated internally.
- The common use of lambda functions in Python is for functional programming. You can use lambda in functional programming to supply a function as a parameter to a different function.
- If you need to reduce the number of lines to specify a function, lambdas are the way to go.
- Lambda is also used with higher-order functions like map(), reduce() etc.
- Response to UI framework events can be tracked using lambda functions.
Where to abstain from using lambda functions?
- Writing complicated lambda functions is not a good practice as it will be difficult to decrypt.
- Refrain from using lambda functions for recurring operations.
- If the code doesn’t follow the Python Style Guide(PEP8).
Lambda functions are tested exactly like regular functions. Both unittest and doctest can be used for this.
Read our Popular US - Data Science Articles
Lambda Function with filter()
Filter() is a built-in Python function and list as arguments. Filter () is used when all the iterable items are on a list, and another list is returned which contains items for which the function is true.
# Python code to illustrate
# filter() with lambda()
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = list(filter(lambda x: (x%2 != 0) , li))
[5, 7, 97, 77, 23, 73, 61]
# Program to filter out only the even items from a list
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
[4, 6, 8, 12]
Lambda Function with map()
The map function is used when all the items are in the list, and the list is returned with items returned by that function for each item.
Example: To double the value of each item in the list, the code is as follows:
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
[2, 10, 8, 12, 16, 22, 6, 24]
Example: To cube every number in the list, the code is as follows
list_1 = [1,2,3,4,5,6,7,8,9]
cubed = map(lambda x: pow(x,3), list_1)
[1, 8, 27, 64, 125, 216, 343, 512, 729]
Lambda Function with reduce() Function
The reduce() function in Python is a list and an argument. It is called to return an iterable and new reduced list. It is somewhat similar to the addition function.
Note: this example is from the functools library.
To get the sum of a list, the code would be,
# Python code to illustrate
# reduce() with lambda()
# to get sum of a list
from functools import reduce
li = [5, 8, 10, 20, 50, 100]
sum = reduce((lambda x, y: x + y), li)
Usage of lambda functions in Python has been a controversial topic among programmers for a long time. While it is true that lambdas can be replaced with built-in functions, list comprehensions, and standard libraries, an understanding of lambda functions are also necessary. It helps you understand the fundamental principles of programming and write better codes.
Even if you do not use lambda functions personally, there might be instances where you might come across these in other people’s programs. So, it’s recommended that you have basic knowledge of lambda functions anyway.
If you are looking to learn full-fledged Python and enhance your career in data science and business analytics, upGrad’s online Professional Certificate Program in Data Science and Business Analytics from the Top US University – University of Maryland is your best bet.
The program offers a chance to study at one of the top 100 global universities and earn a certificate from Maryland Smith to increase your chances of success in the field. It is a 9-months course with access to 300+ hiring partners, assured interview opportunities for freshers, and six mentorship calls.
What are decorators in Python?
A function in Python that takes the argument of one function and returns another function is called a decorator. It is denoted with decorator syntax. Decorators can be applied in lambda functions but not with the decorator syntax. It is usually implemented for debugging purposes. Alternatively, a lambda function can be used as a decorator, but it is not advisable.
What are arguments in Python Lambda functions?
Lambda functions like normal def functions support the different ways of passing arguments. These include: Keyword only argument Keyword arguments/ NAmed arguments Varargs/ Variable list of arguments Variable list of keyword arguments.
What are closures in Python Lambda functions?
Closures or lexical closures are functions where every free variable except the parameters are bound to a particular value in the enclosing scope of the function. Closures can be called from anywhere. Lambda functions like normal def functions can be closures.