80 likes | 150 Views
There are some of the features in python that can be used in functions.Decorators,closures as well as generators can be used modify,create or return a function.These concepts are discussed along with examples of each.ttt<br>
E N D
A function which returns another function as output. • A closure—unlike a plain function—allows the function to access those captured variables through the closure’s copies of their values or references, even when the function is invoked outside their scope. As closures are used as callback functions, they provide some sort of data hiding. This helps us to reduce the use of global variables.
Eg:def f1(): print('This is f1 Function') def f2(): print('This is f2 function') returnf2a = f1()print(a) a()Eg:def f1(): print('This is f1 Function') def f2(): print('This is f2 function') returnf2a = f1()print(a) a() • O/P: This is f1 Function <function f1.<locals>.f2 at 0x7fc192fc66a8> This is f2 function
Decorators in Python • Decorators are function which takes one function as input and returnsa modified function as output, used mainly to modify an existingfunction • Decorators are very powerful and useful tool in Python since it allows programmers to modify the behaviour of function or class. Decorators allow us to wrap another function in order to extend the behaviour of wrapped function, without permanently modifying it. • In Decorators, functions are taken as the argument into another function and then called inside the wrapper function. • There are some decorators already defined in python such as @classmethod ,@staticmethod ,@property • Syntax:@abc_decoratordef hello_decorator(): print(“abc")
Eg:def decorator(func): def wrapper(x,y): if y == 0: print('Number can not be divided by 0') else: print(func(x,y))return wrapper@decoratordef existing_func(a,b): return a//bexisting_func(10,2)Eg:def decorator(func): def wrapper(x,y): if y == 0: print('Number can not be divided by 0') else: print(func(x,y))return wrapper@decoratordef existing_func(a,b): return a//bexisting_func(10,2) • O/P: 5
Generators in Python • Generator-Function : A generator-function is defined like a normal function, but whenever it needs to generate a value, it does so with the yield keyword rather than return. If the body of a def contains yield, the function automatically becomes a generator function. • Generator-Object : Generator functions return a generator object. Generator objects are used either by calling the next method on the generator object or using the generator object in a “for in” loop (as shown in the above program).
Eg: def my_gen(): yield 10 yield 20 yield 20 for i in my_gen(): print(i) • O/P:10 20 20 • Eg2:def my_gen(): num=-5 while(num<=3): yield num num+=1 a=my_gen() for i in a: print(i) • O/P:-2 -1 0 1 2 3
Thanks for Watching!!! • For more follow us on our social media platforms: • Instagram : learnbay_datascience • Facebook : learnbay • LinkedIn : Learnbay • Twitter : Learnbay1