For example, there is "Text" class as shown below then it works properly displaying "Hello World":
class Text:
text1 = "Hello"
def __init__(self, text2):
self.text2 = text2
def helloWorld(self):
return self.text1 + " " + self.text2
def display(self):
print(self.helloWorld())
text = Text("World")
text.display() # "Hello World"
is displayed
Next, I turned the class attributes upside down as shown below then it still works properly displaying "Hello World":
class Text:
def display(self):
print(self.helloWorld())
def helloWorld(self):
return self.text1 + " " + self.text2
def __init__(self, text2):
self.text2 = text2
text1 = "Hello"
text = Text("World")
text.display() # "Hello World"
is displayed
(Lacking universally accepted terminology to talk about classes, I will make occasional use of Smalltalk and C++ terms. I would use Modula-3 terms, since its object-oriented semantics are closer to those of Python than C++, but I expect that few readers have heard of it.),Another key feature is that the local variables and execution state are automatically saved between calls. This made the function easier to write and much more clear than an approach using instance variables like self.index and self.data.,This is an example demonstrating how to reference the different scopes and namespaces, and how global and nonlocal affect variable binding:,Generally speaking, instance variables are for data unique to each instance and class variables are for attributes and methods shared by all instances of the class:
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
class ClassName:
<statement-1>
.
.
.
<statement-N>
class MyClass:
""
"A simple example class"
""
i = 12345
def f(self):
return 'hello world'
x = MyClass()
def __init__(self): self.data = []
Last Updated : 30 Jan, 2020
Output:
HELLO HELLO
Syntax:
@gfg_decorator
def hello_decorator():
.
.
.
The above code is equivalent to –
def hello_decorator():
.
.
.
hello_decorator = gfg_decorator(hello_decorator)
Variables created inside a function definition are local; you can’t access a local variable from outside its home function. That means you are free to have multiple variables with the same name as long as they are not in the same function.,A variable defined inside a function. A local variable can only be used inside its function.,A box in a stack diagram that represents a function call. It contains the local variables and parameters of the function.,In general, we recommend that you write pure functions whenever it is reasonable to do so and resort to modifiers only if there is a compelling advantage. This approach might be called a functional programming style.
def NAME(LIST OF PARAMETERS): STATEMENTS
def f(x):
return 3 * x ** 2 - 2 * x + 5
>>> f(3) 26 >>> f(0) 5 >>> f(1) 6 >>> f(-1) 10 >>> f(5) 70
>>> def f(x):
...
return 3 * x ** 2 - 2 * x + 5
...
>>>
>>> result = f(3) >>> result 26 >>> result = f(3) + f(-1) >>> result 36
>>> def mystery():
... return
...
>>> what_is_it = mystery()
>>> what_is_it
>>> type(what_is_it)
<class 'NoneType'>
>>> print(what_is_it)
None
In Python, functions behave like any other object, such as an int or a list. That means that you can use functions as arguments to other functions, store functions as dictionary values, or return a function from another function. This leads to many powerful ways to use functions.,A function that uses another function as an input argument or returns a function (HOF) is known as a higher-order function. The most familiar examples are map and filter.,The operator module provides “function” versions of common Python operators (+, *, [] etc) that can be easily used where a function argument is expected.,The most useful function in the functools module is partial, which allows you to create a new function from an old one with some arguments “filled-in”.
import os
import sys
import glob
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%
matplotlib inline %
precision 4
u '%.4f'
def square(x):
""
"Square of x."
""
return x * x
def cube(x):
""
"Cube of x."
""
return x * x * x
# create a dictionary of functions funcs = { 'square': square, 'cube': cube, }
x = 2 print square(x) print cube(x) for func in sorted(funcs): print func, funcs[func](x)
4 8 cube 8 square 4