• Tutorials
  • Interview Questions

Python Fundamentals

Tutorial Playlist

Table of content

Show More

Python Fundamentals

Fundamentals of Python consists of a discussion of the basic building blocks of the Python programming language. Here, “Fundamentals of Python” is divided into the following categories. And we will be discussing each topic separately.

Watch this Video on Python Course

Video Thumbnail

Fundamental of Python

First and foremost, we will be discussing statements in Python.

Statements

Python statements are nothing but logical instructions that interpreters can read and execute. It can be both single and multiline.
There are two categories of statements in Python:

  • Expression Statements
  • Assignment Statements

Statements

Expression Statement:

With the help of expressions, we perform operations like addition, subtraction, concentration etc.
In other words, it is a statement that returns a value.
it is an expression if it appears-

  • On the right side of an assignment,
  • As a parameter to a method call.

Note: An expression must have a return.
Example:

  • Using simple arithmetic expression:
(1+5) * 3
18
  • Using a function in an expression:
pow (3,2)
9

Assignment Statements

With the help of assignment statements, we create new variables, assign values and also change values.

Structure of an assignment statement syntax:

#LHS <=> RHS
variable = expression

We can categorize Assignment statements into three primary categories based on what’s on the Right-Hand Side of the statement.

  • Value-Based Expression on RHS
  • Current Variable on RHS
  • Operation on RHS

Certification in Full Stack Web Development

Value-Based Expression on the RHS:

In this case, Python allocates a new memory location to the newly assigned variable.
Let us take an example of this category.

  • First, let’s create a string and assign it to a variable “test”,
  • Then, we will check the memory location id python has assigned for the variable
test= "Hello World"
id(test)

Note:
Look at the example shown below:

test1="Hello"
id(test1)

output:
2524751071304

 

test2="Hello"
id(test2)

output:
2524751071304

As you might have noticed that we have assigned the same string to two different variables. But python allocated the same memory location for both the variables. That is because:
Python allocates the same memory location for the two cases mentioned below:

  • If the strings with less than 20 characters that don’t have white spaces and
  • Integers ranging between (-5 to +255).

This concept used by Python to save memory is also called Interning.

Get 100% Hike!

Master Most in Demand Skills Now!

Current Python variable on RHS:

In this case, Python doesn’t allocate a new memory location.
Let’s understand that with the help of an example:

current_var= "It's HumbleGumble"
print(id(current_var))
new_var= current_var
print(id(new_var))
24751106240
2524751106240

As you can see we have the same location id allotted for the two variables.

Operation on RHS:

In this category, we have an operation on the right side of the statement, which is the defining factor of the type of our statement.
Let’s understand that with the help of an example:

test= 7 * 2
type(test)
int

 

test1= 7 * 2 / 10
type(test1)

output:
float

Multiline statements

There are two ways to define multiline statements.

  • Implicit Method
  • Explicit Method

The end of a statement in python is considered as a newline character, to extend the statements over multiple lines we can use two methods.

  • Implicit: By using parenthesis like (), {} or [].

e.g.

a = (0 + 1 + 2 + 3 + 4 + 5)
  • Explicit: By using continuation character “”.
a = 0 + 1 + 2 + 3 + 4 + 5

Indentation

Unlike most programming languages python uses indentation to mark a block of code. According to python style guidelines or PEP8, you should keep an indent size of four.
Indentation
Most of the programming languages provide indentation for better code formatting and don’t enforce to have it. But in Python it is mandatory. This is why indentation is so crucial in Python.

Comments

Comments are nothing but tagged lines of in codes which increases the readability of the code and make the code self-explanatory. Comments can be of two categories:

Single-line comments:

With the help of one ‘#’, we begin a single-line comment
Example:

test= 7 * 2
type(test)
#Single-line comment

Multi-line comments:

With the help of ‘‘‘… ’’,’ we write multiline comments in python.
Example:

test1= 7 * 2 / 10
type(test1)
'''
line one
line two
line three
'''

Docstring comments:

Python has the documentation strings (or docstrings) feature. It gives programmers an easy way of adding quick notes with every Python module, function, class, and method.
The strings defined using the triple-quotation mark are multiline comments. However, if such a string is placed immediately after a function or class definition or on top of a module, then they turn into docstrings.
Example:

def SayFunction():
    '''
   Strings written using '''_''' after a function represents docstring of func
   Python docstrings are not comments
   '''
   print("just a docstring")
print("Let us see how to print the docstring value")
print(theFunction.__doc__)

Become a Full Stack Web Developer

Variables:

A variable is a memory address that can change and when a memory address cannot change then it is known as constant. Variable is the name of the memory location where data is stored. Once a variable is stored then space is allocated in memory. It defines a variable using a combination of numbers, letters, and the underscore character.

Assigning Values to Variables

There is no need for an explicit declaration to reserve memory. The assignment is done using the equal (=) operator. Some examples of legal python variables are –

 = 1
j = 2

Multiple Variable Assignment:

You can assign a single value to the multiple variables as follows –

a=2

Also, we can assign multiple values to the multiple variables as follows –

a, b, c = 2, 25, ‘abc’

Note: Python is a type inferred language i.e. it automatically detects the type of assigned variable.
For instance,

test=1
type(test)

output:
int

 

test1="String"
type(test1)

output:
str

Constants:

Constant is a type of variable that holds values, whose value cannot be changed. In reality, we rarely use constants in python.

Assigning a value to a constant in Python

  • Constants are usually declared and assigned on a different module/file.
#Declare constants in a separate file called constant.py
PI = 3.14
GRAVITY = 9.8
  • Then import it to the main file.
#inside main.py we import the constants
import constant
print(constant.PI)
print(constant.GRAVITY)

Token

Tokens are the smallest unit of the program. There are the following tokens in Python:

  • Reserved words or Keywords
  • Identifiers
  • Literals
  • Operators

Token

Keywords:

Keywords are nothing but a set of special words, which are reserved by python and have specific meanings. Remember that we are not allowed to use keywords as variables in python.
Keywords in python are case sensitive.
We’ve just captured here a snapshot of the possible Python keywords.

help> keywords
Here is a list of the Python keywords.  Enter any keyword to get more help.
False              def               if                   raise
None              del               import           return
True               elif                in                  try
and                else              is                  while
as                  except          lambda         with
assert            finally            nonlocal       yield
break             for                 not
class              from              or                 continue         global           pass

Identifiers

Identifiers in Python are nothing but user-defined names to represent programmable entities like variables, functions, classes, modules, or any other objects.
However, there are a few rules that we need to follow while defining an identifier. They are:

  • You can use a sequence of letters (lowercase (a to z) or uppercase (A to Z)). You can also mix up digits (0 to 9) or an underscore (_) while defining an identifier.
  • You can’t use digits to begin an identifier name.
  • You should not use Reserved Keywords to define an identifier.
  • Other than underscore (_) you are not allowed to use any other special characters.
  • Even though python doc says that you can name an identifier with unlimited length. But it is not entirely true.

Using a large name (more than 79 chars) would lead to the violation of a rule set by the PEP-8 standard. It says.

Literals:

The other built-in objects in python are Literals. Literals can be defined as data that is given in a variable or constant. Python has the following literals:
Literals

String Literals:

A string literal is a sequence of characters surrounded by quotes. We can use both single, double, or triple quotes for a string in Python. And, a character literal is a single character surrounded by single or double-quotes.

Numeric Literals:

Numeric Literals are immutable (unchangeable). Numeric literals can belong to 3 different numerical types Integer, Float, and Complex.

Boolean Literals:

A Boolean literal can have any of the two values: True or False.

Collection literals:

There are four different literal collections List literals, Tuple literals, Dict literals, and Set literals. 

Special literals:

Python contains one special literal i.e. None. We use it to specify that field that is not created.

Operators:

Operators are the symbols that perform the operation on some values. These values are known as operands.
In Python, operators are categorized into the following categories:

  • Arithmetic Operators
  • Relational Operators
  • Assignment Operators
  • Logical Operators
  • Membership Operators
  • Identity Operators
  • Bitwise Operators

Arithmetic Operators

Arithmetic Operators Operator Name Description Example
+ Addition Perform Addition I=40, J=20
>>>I+ J
>>>60
Subtraction Perform Subtraction I=40, J=20
>>>I – J
>>>20
* Multiplication Perform Multiplication I=40, J=20
>>>I * J
>>> 800
/ Division Perform Division I=30, J=20
>>>I /J
>>> 2.5
% Modulus Return the remainder after Division I=40, J=20
>>>I /J
>>> 0
** Exponent Performs exponential (power) calculation I=4, J=20
>>>I /J
>>> 204
// Floor Division Perform division remove the decimal value and return Quotient value I=30, J=20
>>>I//J
>>> 1

Relational Operators

It is also known as the comparison operator because it compares the values. After comparison, it returns the Boolean value i.e. either true or false.

Operator Operator Name Description Example
== Equal to If the values of two operands are equal, then then it returns true. I = 20, J = 20
(I == J) is True
!= Not Equal to If the values of two operands are not equal, then it returns true. I = 20, J = 20
(I == J) is False
Less than If the value of the left operand is less than the value of the right operand, then it returns true I = 40, J = 20
(I < J) is False
> Greater than If the value of the left operand is greater than the value of the right operand, then it returns true I= 40, J = 20
(I > J) is True
<= Less than or equal to If the value of the left operand is less than or equal to the value of the right operand, then it returns true I = 40, J = 20
(I <= J) is False
>= Greater than or equal to If the value of the left operand is greater than or equal to the value of the right operand, then it returns true. I = 40, J = 20
(I >= J) is True
<>  Not equal to (similar to !=) If the values of two operands are not equal, then the condition becomes true I=40, J = 20
(I <> J) is True.

Assignment Operators

Operator Operator Name Description Example
= Assignment It assigns a value from right side operand to left side operand I = 40
It assigns 40 to I
+= Add then assign It performs addition and then results is assigned to the left-hand operand I+=J
that means I = I + J
-= Subtract then assign It performs subtraction and then results is assigned to the left-hand operand I-=J
that means I = I – J
*= Multiply the assign It performs multiplication and then the results are assigned to the left-hand operand. I*=J
that means I = I * J
/= Divide then assign It performs division and then results is assigned to the left-hand operand I/=J
that means I = I / J
%= Modulus then assign It performs modulus and then results is assigned to the left-hand operand I%=J
that means I = I % J
**= Exponent then assign It performs exponent and then results is assigned to the left-hand operand I**=J
that means I = I ** J
//= The floor division then assign It performs floor division and then results is assigned to the left-hand operand I//=J
that means I = I // J

Logical Operators

Operator Operator Name Description Example
and Logical AND When Both side condition is true the result is true otherwise false 2<1 and 2<3
False
or Logical OR When at least one condition is true then the result is true otherwise false 2<1 or 2<3
True
not Logical NOT Reverse the condition Not (5>4)
False

Membership Operators

Operator Description Example
in It returns true if it finds a variable in the sequence otherwise returns false List = [1,2,3,4,5,6,7,8]
i=1
if i in List:
   print(‘i is available in list’)
else:
   print(‘i is not available in list’)
Output – i is available in list
not in It returns true if it does not find a variable in the sequence otherwise returns false List = [1,2,3,4,5,6,7,8]
j=10
if j not in List:
print (‘j is not available in list’)
else:
print (‘j is available in list’)
Output – j is not available in list

Bitwise Operators

It performs bit by bit operation.
Suppose there are two variables,

I = 10 and
J = 20

and their binary values are:

I = 10 = 0000 1010
J = 20 = 0001 0100

now let us see how bitwise operators perform.

Operator Operator Name Description Example
& Binary AND If both bits are 1 then 1 otherwise 0 I & J
0000 0000
| Binary OR If one of the bits is 1 then 1 otherwise 0 I | J
0001 1110
^ Binary XOR If both bits are same, then 0 otherwise 1 I ^ J
0001 1110
~ Binary Complement If bit is 1 the make it 0 and if bit is 0 the make it 1 ~I
1111 0101
<<  Binary Left Shift The left operand is moved left by the number of bits specified by the right operand. I << 2
240 i.e. 1111 0000
>>  Binary Right Shift The left operand is moved right by the number of bits specified by the right operand. I >> 2
15 i.e. 1111

Identity Operators

These operators are used to compare the memory address of two objects.

Operator Description Example
is It returns true if both operand‘s identity is same otherwise false I = 20
J = 20
if(I is J):
   print (‘I and J have the same identity)
else:
   print (‘I and J have not same identity’)
Output – I and J have same identity
is not It returns true if both operand‘s identity is not the same otherwise false I = 20
J = 230
if(I is not J):
   print (‘I and J have not same identity’)
else:
   print (‘I and J have the same identity)
Output – I and J have not same identity

This brings us to the end of this module. The next module in Learn Python Online highlights Python datatypes. See you there!

Course Schedule

Name Date Details
Python Course 28 Dec 2024(Sat-Sun) Weekend Batch View Details
04 Jan 2025(Sat-Sun) Weekend Batch
11 Jan 2025(Sat-Sun) Weekend Batch

About the Author

Senior Consultant Analytics & Data Science

Sahil Mattoo, a Senior Software Engineer at Eli Lilly and Company, is an accomplished professional with 14 years of experience in languages such as Java, Python, and JavaScript. Sahil has a strong foundation in system architecture, database management, and API integration.