0% found this document useful (0 votes)
15 views

Python Programming A Stepbystep Guide To Learning The Language C K Dhaliwal download

The document is a comprehensive guide to learning Python programming, authored by C. K. Dhaliwal, Poonam Rana, and T. P. S. Brar. It covers various topics including Python's history, basic syntax, data types, control structures, functions, modules, exceptions, file operations, and object-oriented programming concepts. The book is structured into chapters that progressively introduce concepts and provide practical examples for learners.

Uploaded by

lodhiruisery
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Python Programming A Stepbystep Guide To Learning The Language C K Dhaliwal download

The document is a comprehensive guide to learning Python programming, authored by C. K. Dhaliwal, Poonam Rana, and T. P. S. Brar. It covers various topics including Python's history, basic syntax, data types, control structures, functions, modules, exceptions, file operations, and object-oriented programming concepts. The book is structured into chapters that progressively introduce concepts and provide practical examples for learners.

Uploaded by

lodhiruisery
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 61

Python Programming A Stepbystep Guide To

Learning The Language C K Dhaliwal download

https://ebookbell.com/product/python-programming-a-stepbystep-
guide-to-learning-the-language-c-k-dhaliwal-56520724

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Python Programming For Advanced The Updated Advanced Guide To Master


Python Programming Step By Step In A Few Days With Machine Learning
And Data Science Resources Vol 3 Bill Steven

https://ebookbell.com/product/python-programming-for-advanced-the-
updated-advanced-guide-to-master-python-programming-step-by-step-in-a-
few-days-with-machine-learning-and-data-science-resources-vol-3-bill-
steven-232306752

Python The First Stepbystep Guide For Beginners To Programming And


Deep Learning With Python Data Science Andrew Johnson

https://ebookbell.com/product/python-the-first-stepbystep-guide-for-
beginners-to-programming-and-deep-learning-with-python-data-science-
andrew-johnson-36695666

Absolute Beginners Guide To Python Programming Master Coding Quickly


With Handson Realworld Projects Stepbystep Guidance And Comprehensive
Learning For All Ages Stirling Hale

https://ebookbell.com/product/absolute-beginners-guide-to-python-
programming-master-coding-quickly-with-handson-realworld-projects-
stepbystep-guidance-and-comprehensive-learning-for-all-ages-stirling-
hale-58084436

Python 3 A Stepbystep Guide To Learn In An Easy Way The Fundamentals


Of Python Programming Language John Bach

https://ebookbell.com/product/python-3-a-stepbystep-guide-to-learn-in-
an-easy-way-the-fundamentals-of-python-programming-language-john-
bach-43213818
Mastering Python Programming For Iot Development A Step By Step Guide
To Build Smart Devices And Systems With Pyth The Essential Python
Workbooks Book 8 Ruder

https://ebookbell.com/product/mastering-python-programming-for-iot-
development-a-step-by-step-guide-to-build-smart-devices-and-systems-
with-pyth-the-essential-python-workbooks-book-8-ruder-231559626

Langchain Programming For Beginners A Stepbystep Guide To Ai


Application Development With Langchain Python Openaichatgpt
Googlegemini And Other Llms Code With Nathan Sebhastian

https://ebookbell.com/product/langchain-programming-for-beginners-a-
stepbystep-guide-to-ai-application-development-with-langchain-python-
openaichatgpt-googlegemini-and-other-llms-code-with-nathan-
sebhastian-58491116

Learn To Program With Python 3 A Stepbystep Guide To Programming 2nd


Edition Irv Kalb

https://ebookbell.com/product/learn-to-program-with-
python-3-a-stepbystep-guide-to-programming-2nd-edition-irv-
kalb-42280876

Computer Programming Allinonecoding For Beginners A Stepbystep Guide


To Learn Python Java Sql C C C Html And Css From Scratch Michail
Klling

https://ebookbell.com/product/computer-programming-allinonecoding-for-
beginners-a-stepbystep-guide-to-learn-python-java-sql-c-c-c-html-and-
css-from-scratch-michail-klling-55885230

Python Programming The Ultimate Beginners Guide To Python Language


Fundamentals A Crash Course With Stepbystep Exercises John Russel

https://ebookbell.com/product/python-programming-the-ultimate-
beginners-guide-to-python-language-fundamentals-a-crash-course-with-
stepbystep-exercises-john-russel-53747934
Python Programming
A Step-by-Step Guide to Learning the Language
Python Programming
A Step-by-Step Guide to Learning the Language

Dr. C. K. Dhaliwal
Assistant Professor
Chandigarh Business School of Administrations
Mohali, Punjab
***
Poonam Rana
Assistant Professor
Chandigarh Business School of Administrations
Mohali, Punjab
***
Dr. T. P. S. Brar
Professor & Head of Department
Chandigarh Group of Colleges
Mohali, Punjab
First published 2025
by CRC Press
4 Park Square, Milton Park, Abingdon, Oxon, OX14 4RN
and by CRC Press
2385 NW Executive Center Drive, Suite 320, Boca Raton FL 33431
CRC Press is an imprint of Informa UK Limited
© 2025 Manakin Press Pvt. Ltd
The right of of C. K. Dhaliwal, Poonam Rana and Dr. T. P. S. Brar to be identified as authors
of this work has been asserted in accordance with sections 77 and 78 of the Copyright,
Designs and Patents Act 1988.
All rights reserved. No part of this book may be reprinted or reproduced or utilised in any
form or by any electronic, mechanical, or other means, now known or hereafter invented,
including photocopying and recording, or in any information storage or retrieval system,
without permission in writing from the publishers.
For permission to photocopy or use material electronically from this work, access www.
copyright.com or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive,
Danvers, MA 01923, 978-750-8400. For works that are not available on CCC please contact
mpkbookspermissions@tandf.co.uk
Trademark notice: Product or corporate names may be trademarks or registered trademarks,
and are used only for identification and explanation without intent to infringe.
Print edition not for sale in South Asia (India, Sri Lanka, Nepal, Bangladesh, Pakistan or
Bhutan).
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library
ISBN: 9781032646558 (hbk)
ISBN: 9781032669571 (pbk)
ISBN: 9781032691053 (ebk)
DOI: 10.4324/9781032691053
Typeset in Times New Roman
by Manakin Press, Delhi
Organization of the Book
Chapter 1 This is an introductory chapter that provides an overview of Python,
covering its history, features, applications, and installation process. It highlights
Python's dynamic, high-level, and object-oriented language features and cross-
platform compatibility. The chapter emphasizes the use of Python in web development,
data science, and machine learning. It also explains Python interactive help and
demonstrates how to install and execute Python on different platforms. Additionally,
the chapter covers how Python differs from other programming languages.

Chapter 2 This chapter introduces the basics of Python programming language. It


covers keywords and identifiers, explaining their differences and how to use them
properly. The chapter then moves on to Python statements and demonstrates how to
use them to create simple programs. It highlights the importance of documentation and
indentation in Python programming. The chapter covers variables and their declaration
in Python, including the rules for naming variables. It also covers the different data
types in Python, such as numbers, strings, lists, and tuples, along with examples of
how to use them.

Chapter 3 This chapter covers Python operators, including arithmetic, relational,


logical, bitwise, assignment, and identity operators. It also explains the precedence
and associativity of operators, which determine the order in which they are evaluated.
The chapter demonstrates how to use expressions, which are combinations of operands
and operators, to perform calculations and manipulate data.

Chapter 4 This chapter covers conditional statements in Python, including if, if-
else, and if-elif-if statements. It also covers loops in Python, including while, for,
and infinite loops, along with examples of how to use them. Additionally, the chapter
covers the use of the break, continue, and pass statements in Python loops, which are
used to change the flow of control in a program.

Chapter 5 This chapter covers the native data types in Python, including numbers,
lists, tuples, sets, dictionaries, and strings. It provides examples and use cases for
each data type. The chapter highlights the differences between mutable and immutable
data types and how to work with them. Additionally, it covers how to manipulate and
operate on data types, including slicing and indexing.

Chapter 6 This chapter covers Python functions, including the types of functions in
Python, such as built-in functions, user-defined functions, and anonymous functions.
It discusses the advantages of using functions, such as code reusability, modularity,
and easier debugging. The chapter also covers the differences between pass by value
and pass by reference and demonstrates recursion, which is the ability of a function
to call itself.
vi Python Programming: A Step-by-Step Guide to Learning the Language

Chapter 7 This chapter covers Python modules, which are files that contain Python
definitions and statements. It demonstrates how to create a module and how to import
it into another Python program. Additionally, the chapter covers standard modules,
which are built-in modules that come with Python, and Python packages, which are
directories containing modules. It highlights how to use and install standard modules
and how to create and install Python packages.

Chapter 8 This chapter covers Python exceptions, which are errors that occur during
program execution. It explains the different types of built-in exceptions in Python,
such as ZeroDivisionError and TypeError. The chapter demonstrates how to handle
exceptions using the try-except block and how to raise and catch user-defined
exceptions. It also provides examples of exception handling and how to use the else
and finally clauses with the try-except block.

Chapter 9 This chapter covers file operations in Python, including how to create,
open, read, write, and close files using file methods such as read() and write(). The
chapter also covers renaming and deleting files, as well as creating and navigating
directories in Python using the os module. It provides examples of how to use file
methods and how to handle file exceptions.

Chapter 10 This chapter covers designing classes in Python, which are templates for
creating objects that have similar properties and behaviors. It explains how to create
objects from a class, how to access object attributes, and how to use built-in class
attributes, such as name and doc. The chapter also covers garbage collection in Python,
which is the process of freeing up memory that is no longer being used by a program.
It provides examples of how to design and use classes in Python.

Chapter 11 This chapter covers inheritance in Python, which is the ability to create
a new class from an existing class. It explains the different types of inheritance in
Python, including single inheritance, multiple inheritance, and multilevel inheritance.
The chapter also covers method overriding in Python, which is the ability to redefine a
method in a subclass. Additionally, the chapter discusses special functions in Python,
which are predefined methods that are called under certain circumstances, such as init
and str. It provides examples of how to use inheritance and special functions in Python.

Chapter 12 This chapter covers operator overloading in Python, which is the ability to
redefine the behavior of an operator in a class. It explains how to overload the + and -
operators in Python, as well as bitwise and relational operators. The chapter provides
examples of how to use operator overloading to customize the behavior of operators
in Python.

The Appendix- I is given which provides the list of Python Standard Modules with
the description of each.

The bibliography is given at the end for reference of readers.

Authors
Detailed Contents

1. Introduction to Python Language 1–24


1.1 Programming Language 2
1.2 History of Python Language 3
1.3 Origin of Python Programming Language 5
1.4 Features of Python 5
1.5 Limitations of Python 6
1.6 Major Applications of Python 7
1.7 Getting Python 8
1.8 Installing Python 8
1.8.1 Unix and Linux Installation 9
1.8.2 Windows Installation 9
1.8.3 Macintosh Installation 10
1.9 Setting up Path 10
1.9.1 Setting up Path at Unix/Linux 11
1.9.2 Setting up the Path at windows 11
1.10 Python Environment Variables 11
1.11 Running Python 12
1.11.1 Interactive Interpreter 13
1.11.2 Script from the Command-Line 13
1.11.3 Integrated Development Environment 14
1.12 First Python Program 14
1.12.1 Interactive Mode Programming 15
1.12.2 The Script Mode Programming 16
1.13 Python’s Interactive Help 16
1.13.1 Python Help Through a Web Browser 17
1.14 Python Differences From Other Languages 17
1.14.1 Difference Between C and Python 18
1.14.2 Difference Between C++ and Python 19
1.14.3 Difference Between Java and Python 21
1.15 Summary 22
Review Questions 22
viii Python Programming: A Step-by-Step Guide to Learning the Language

2. Python Data Types and Input Output 25–52


2.1 Keywords 25
2.2 Identifiers 27
2.3 Python Statements 28
2.4 Indentation 29
2.5 Python Documentation 30
2.5.1 Single Line Comment 30
2.5.2 Multi Line Comments 30
2.6 Docstrings 31
2.7 Variables 32
2.7.1 Variable Assignment 33
2.7.2 Variable Types in Python 33
2.8 Multiple Assignment 34
2.9 Python Data Types 36
2.9.1 Numeric Datatype 37
2.9.1.1 Integers 37
2.9.1.2 Floating-point Numbers 38
2.9.1.3 Complex Numbers 39
2.9.2 Strings 40
2.9.2.1 Indexing of a String: 40
2.9.2.2 Negative Indexing: 41
2.9.2.3 Slicing 41
2.9.3 Booleans 42
2.9.4 Lists 42
2.9.5 Tuples 43
2.9.6 Sets 44
2.7.8 Dictionaries 46
2.10 Data Type Conversion 48
2.10.1 Implicit Type Conversion in Python 49
2.10.2 Explicit Type Conversion in Python 49
2.11 Input and Output 50
2.12 Import 51
2.13 Summary 51
Review Questions 52
3. Operators and Expressions 53–70
3.1 Operator 53
3.1.1 Arithmetic Operators 54
Detailed Contents ix

3.1.2 Comparison Operators 56


3.1.3 Assignment Operator 58
3.1.4 Logical Operators 59
3.1.5 Bitwise Operators 61
3.1.6 Special Operators 63
3.1.6.1 Identity Operators 63
3.1.6.2 Membership Operators 64
3.2 Expressions 65
3.2.1 Python Operator Precedence 66
3.2.2 Associativity 67
3.2.3 Non-Associative Operators 68
3.3 Summary 68
Review Questions 68
4. Control Structures 71–92
4.1 Decision Making Statements 72
4.1.1 Python if Statement 72
4.1.2 Python if-else Statement 73
4.1.3 Python if-elif-else 75
4.1.4 Python Nested if Statements 77
4.2 Python Loops 78
4.2.1 Types of Loops 79
4.2.2 Python While Loop 79
4.2.3 The Infinite Loop 81
4.2.4 Using else with While Loop 81
4.2.5 Python for Loop 82
4.2.6 The range() Function 84
4.2.7 For Loop with else 85
4.2.8 Nested Loops 86
4.3 Python Control Statements 87
4.3.1 Python Break Statement 87
4.3.2 Python Continue Statement 89
4.3.3 Python Pass Statement 90
4.4 Summary 90
Review Questions 91
5. Python Native Data Types 93–142
5.1 Numbers 94
5.1.1 Number Type Conversion 94
x Python Programming: A Step-by-Step Guide to Learning the Language

5.1.2 Python Mathematical Functions 95


5.1.3 Python Trigonometric Functions 97
5.1.4 Python Random Number Functions 99
5.1.5 Python Mathematical Constants 100
5.2 Python Lists 101
5.2.1 Creating a List 101
5.2.2 Traversing a List 101
5.2.2.1 Indexing 102
5.2.2.2 Traversing Nested Lists 103
5.2.2.3 Negative Indexing 104
5.2.2.4 Slicing 105
5.2.3 Changing or Adding Elements to a List 105
5.2.4 List Methods 106
5.2.5 List Functions 107
5.2.6 List Comprehension 108
5.2.7 List Membership Test 108
5.3 Python Tuples 109
5.3.1 Creating a Tuple 110
5.3.2 Unpacking Tuple 111
5.3.3 Traversing Elements in a Tuple 111
5.3.3.1 Indexing 112
5.3.3.2 Negative Indexing 113
5.3.3.3 Tuple Slicing 113
5.3.3.4 Changing/Updating a Tuple 114
5.3.3.5 Deleting a Tuple 115
5.3.3.6 Python Tuple Methods 115
5.3.3.7 Python Tuple Functions 116
5.3.3.8 Advantages of Tuple 116
5.4 Python Sets 117
5.4.1 Creating a Set 118
5.4.2 Changing/Adding Elements to a Set 118
5.4.3 Removing Elements from a Set 119
5.4.4 Python Set Operations 119
5.4.4.1 Set Union 120
Detailed Contents xi

5.4.4.2 Set Intersection 120


5.4.4.3 Set Difference 120
5.4.4.4 Set Symmetric Difference 121
5.4.5 Python Set Methods 122
5.4.6 The in Operator 123
5.4.7 Python Set Functions 123
5.4.8 Frozen Sets 124
5.5 Python Dictionary 125
5.5.1 Creating a Dictionary 125
5.5.2 Accessing a Dictionary 125
5.5.3 Updating a Dictionary 126
5.5.4 Removing or Deleting Elements of a Dictionary 127
5.5.5 Python Dictionary Methods 127
5.5.6 Python Dictionary Membership Test 128
5.5.7 Python Dictionary Functions 129
5.6 Python Strings 130
5.6.1 Creating a String in Python 131
5.6.2 Accessing String Characters 132
5.6.3 Changing or Deleting String Characters 133
5.6.4 Python String Operations 135
5.6.4.1 Concatenation 136
5.6.4.2 Iteration and Membership Test 137
5.6.5 String Formatting 138
5.6.6 Python String Built-in Methods 139
5.7 Summary 140
Review Questions 140
6. Python Functions 143–160
6.1 Python Functions 143
6.2 Advantages of Python 144
6.3 Types of Functions 145
6.4 Built-in Functions 145
6.5 Python User Defined Functions 146
6.5.1 Function Definition 147
6.5.2 Function Call 147
xii Python Programming: A Step-by-Step Guide to Learning the Language

6.5.3 Types of Function Arguments (Parameters) 148


6.5.3.1 Function with No Arguments 149
6.5.3.2 Function with Required Arguments 150
6.5.3.3 Function with Arbitrary Length Arguments 150
6.5.3.4 Function with Keyword Based Arguments 151
6.5.3.5 Function with Default Arguments 152
6.6 Python Anonymous Functions 153
6.6.1 Characteristics of Lambda Form 154
6.7 Pass by Value vs. Pass by Reference 154
6.7.1 Pass by Value 155
6.7.2 Pass by Object Reference 156
6.8 Recursion 156
6.8.1 Advantages of Recursion 157
6.8.2 Disadvantages of Recursion 158
6.9 Scope and Lifetime of Variables 158
6.10 Summary 159
Review Questions 159
7. Python Modules 161–172
7.1 Need of Module 162
7.2 Module Definition 163
7.3 Creating a Module 163
7.4 Importing Module in The Interpreter 164
7.5 Importing Module in The Another Script 165
7.6 Importing Modules 165
7.7 Search Path of Module 166
7.8 Module Reloading 167
7.9 The dir() Function 168
7.10 Standard Modules 168
7.11 Python Packages 169
7.12 Summary 170
Review Questions 171
8. Exception Handling 173–182
8.1 Exception 173
8.2 Python Built-in Exceptions 174
Detailed Contents xiii

8.3 Exception Handling 175


8.3.1 Try, Except, Else and Finally 176
8.3.2 Catching Specific Exceptions in Python 178
8.3.3 try….finally 179
8.4 Python User Defined Exceptions 179
8.5 Summary 181
Review Questions 181
9. File Management in Python 183–196
9.1 Operations on Files 183
9.1.1 Opening a File 184
9.1.2 File Modes 185
9.1.3 File Object Attributes 186
9.1.4 File Encoding 186
9.1.5 Closing a File 187
9.2 write() and read() Methods 188
9.2.1 Writing to a File 188
9.2.2 Reading from a File 188
9.3 Python File Methods 189
9.4 tell() and seek() Methods 190
9.5 Renaming and Deleting Files 190
9.5.1 Rename() Method 191
9.5.2 Remove() Method 191
9.6 Directories in Python 192
9.6.1 mkdir() Method 192
9.6.2 chdir() Method 193
9.6.3 getcwd() Method 193
9.6.4 rmdir() Method 194
9.6.5 listdir() Method 194
9.7 Python Directory Methods 194
9.8 Summary 195
Review Questions 195
10. Classes and Objects 197–212
10.1 Designing Classes 199
10.2 Creating Objects 200
xiv Python Programming: A Step-by-Step Guide to Learning the Language

10.2.1 Class Variable 201


10.2.2 Instance Variable 202
10.3 Types of Methods 203
10.4 Access Specifiers in Python 204
10.5 Accessing Attributes 205
10.6 The Class Program 206
10.6.1 Using a Class with Input 207
10.6.2 A Class Program with Computations 208
10.7 Editing Class Attributes 208
10.8 Built-in Class Attributes 209
10.9 Garbage Collection/Destroying Objects 211
10.10 Summary 211
Review Questions 212
11. Inheritance 213–220
11.1 Python Single Inheritance 214
11.2 Python Multiple Inheritance 215
11.3 Python Multilevel Inheritance 216
11.4 Method Overriding in Python 217
11.5 Special Functions in Python 218
11.6 Summary 219
Review Questions 220
12. Python Operator Overloading 221–226
12.1 Overloading ‘+’ Operator in Python 221
12.2 Overloading ‘-’ Operator in Python 222
12.3 Overloading Bitwise Operators 223
12.4 Overloading Relational Operators 224
12.5 Summary 225
Review Questions 225
Appendix 227-232
Bibliography 233
1

Introduction to Python
Language

Highlights
l Introduction and History of Python Language
l Features of Python
l Applications of Python
l Python Interactive Help
l Installing and Executing Python
l How Python Differs from Other Languages

We can see that computers have a wide range of real-world problem-solving


abilities. The issues could be as straightforward as multiplying two numbers
or as complex as designing and launching a space shuttle. Assuming that a
machine can complete all jobs on its own would be wrong. Any problem
whose solution is not defined cannot be resolved by a computer. A computer
cannot solve any issue whose answer is not known. The computer merely
executes the set of instructions that a programmer has provided to it. There
may be mistakes and no resolution if the computer cannot comprehend the
instructions. As a result, it is the programmer’s grave responsibility to come
up with a solution by giving the machine the right commands. As a result, it
is the programmer’s grave responsibility to come up with a solution by giving
the machine the right commands.
2 Python Programming: A Step-by-Step Guide to Learning the Language

1.1 Programming Language


A programming language is a formal language used to instruct a computer to
perform a specific task or set of tasks. It provides a set of rules and syntax
for creating and manipulating code, allowing developers to write programs
and applications that can run on a computer.
Programming languages can be classified into different types based on their
purpose and structure. Some common types of programming languages
include:
1. Procedural languages: These languages use a series of steps to solve a
problem or accomplish a task. Examples include C, Fortran, and Pascal.
2. Object-oriented languages: These languages model the problem as a set
of objects that interact with each other to accomplish a task. Examples
include Java, Python, and C++.
3. Functional languages: These languages focus on the evaluation
of expressions and functions, treating them as mathematical equations.
Examples include Haskell, Lisp, and ML.
4. Scripting languages: These languages are used to automate tasks, such
as web development, and are often interpreted rather than compiled.
Examples include JavaScript, PHP, and Python.
There are many programming languages in use today, each with its own
strengths and weaknesses, and new languages are continually being developed
to meet the evolving needs of the technology industry.
Some of the most common programming languages used today include:
1. Java: Java is an object-oriented programming language that is widely
used for developing enterprise-level applications, mobile applications,
and web applications.
2. Python: Python is a high-level programming language that is popular for
its readability, ease of use, and versatility. It is commonly used for web
development, data analysis, and artificial intelligence.
3. JavaScript: JavaScript is a scripting language that is used for developing
web applications and interactive front-end interfaces.
4. C#: C# is an object-oriented programming language that is commonly
used for developing Windows desktop applications, video games, and
web applications.
Introduction to Python Language 3

5. C++: C++ is a high-performance language that is used for developing


operating systems, video games, and other resource-intensive applications.
6. PHP: PHP is a server-side scripting language that is used for developing
dynamic web applications and websites.
7. Ruby: Ruby is a high-level scripting language that is known for its
simplicity and ease of use. It is commonly used for web development
and building web applications.
It is worth noting that the popularity of programming languages can vary
depending on factors such as industry trends, the rise of new technologies,
and the emergence of new use cases.

1.2 History of Python Language


Python is a high-level, interpreted programming language that was first
released in 1991 by its creator, Guido van Rossum. It was designed to be
easy to read and write, and to emphasize code readability and simplicity. The
origin of the name “Python” comes from a TV show from the 1970s called
“Monty Python’s Flying Circus”. Guido van Rossum is a big fan of the show,
and he named the language after it.
Python was initially developed as a hobby project, and its first version was
released in February 1991. The language was designed with a clear and
concise syntax that allowed developers to write code quickly and efficiently.
Python’s creators were also focused on making the language easily readable,
which has helped to make it popular with beginners and experts alike.
Following are the illustrations of different versions of Python along with the
timeline.
In 2000, Python 2.0 was released, which included many new features such as
garbage collection, Unicode support, and list comprehensions. This version
of the language became the dominant version of Python for many years, and
it is still widely used today, despite being officially deprecated as of 2020.
In 2008, Python 3.0 was released, which was a major overhaul of the
language that introduced many changes and new features. One of the most
significant changes was the removal of backward compatibility with Python
2.x, which made it more difficult for developers to transition to the new
version. However, Python 3.0 brought many improvements and new features,
including better Unicode support, improved I/O, and more efficient handling
of exceptions.
4 Python Programming: A Step-by-Step Guide to Learning the Language

Fig. 1.1: Versions of Python Programming Language.

Today, Python is one of the most popular programming languages in the world,
and is used in a wide variety of applications, including web development, data
analysis, artificial intelligence, and scientific computing. It is a powerful and
flexible language that is well-suited to many different tasks, and it has a large
and vibrant community of developers who continue to work on improving the
language and developing new libraries and tools.
Introduction to Python Language 5

1.3 Origin of Python Programming Language


Python programming language was created by Guido van Rossum in the
late 1980s, while he was working at the Netherlands-based research institute
called the National Research Institute for Mathematics and Computer Science
(CWI). Guido was tasked with creating a successor to the ABC programming
language that was easy to learn and use. He aimed to design a language with
an easy-to-understand syntax, which would allow developers to write and
maintain code more efficiently.

1.4 Features of Python


Python is a high-level, interpreted programming language that is known for
its simplicity, readability, and ease of use. Here are some of the key features
of Python:
1. Simple and easy-to-learn syntax: Python has a simple and concise
syntax, which makes it easy to read and write. Its code is easy to
understand, even for beginners, and this simplicity is one of the reasons
why Python has become so popular.
2. Interpreted language: Python is an interpreted language, which means
that you don’t need to compile your code before running it. This makes
it faster to develop and test code, as you can run it immediately and see
the results.
3. Cross-platform compatibility: Python code can run on many different
platforms, including Windows, Linux, and macOS. This is because
Python code is interpreted, and the interpreter is available on all of these
platforms.
4. Large standard library: Python comes with a large and comprehensive
standard library that provides many useful functions and modules for
developers. This makes it easy to perform common tasks, such as reading
and writing files, working with databases, and performing network
operations.
5. Third-party modules and libraries: Python has a huge and active
community of developers who create and maintain many useful third-party
modules and libraries. These libraries provide additional functionality,
such as scientific computing, data analysis, web development, and
artificial intelligence.
6 Python Programming: A Step-by-Step Guide to Learning the Language

6. Object-oriented programming support: Python supports object-


oriented programming, which allows developers to write modular,
reusable, and maintainable code.
7. Dynamic typing: Python is a dynamically-typed language, which means
that the type of a variable is determined at runtime, rather than at compile
time. This makes it more flexible and allows developers to write code
more quickly.
8. High-level abstractions: Python provides many high-level abstractions,
such as list comprehensions, lambda functions, and decorators, which
make it easier to write code that is concise and expressive.
Overall, Python is a powerful and flexible programming language that is
well-suited to many different tasks, and its features make it easy to learn and
use, even for beginners

1.5 Limitations of Python


While Python is a popular and powerful programming language, it has some
limitations that developers should be aware of. Here are some of the main
limitations of Python:
1. Performance: Python is an interpreted language, which means that it is
generally slower than compiled languages like C++ or Java. This can be
a limitation when developing applications that require high performance
or low latency, such as real-time systems or high-transaction web
applications.
2. Global Interpreter Lock (GIL): The GIL is a mechanism that ensures
that only one thread executes Python bytecode at a time. This can limit
the ability of developers to take advantage of multiple processors or
cores, which can impact performance.
3. Weak typing: While dynamic typing is a key feature of Python, it can
also be a limitation in some cases. Without type checking, errors can go
undetected until runtime, and the lack of strong typing can make it more
difficult to reason about code and catch errors early.
6. Mobile development: While Python can be used to develop mobile
applications, it is not as well-suited to mobile development as other
languages, such as Java or Kotlin. This is because the Android and iOS
ecosystems are primarily based on those languages, and they offer more
robust support for mobile development.
Introduction to Python Language 7

5. Memory consumption: Python is known for its high memory


consumption, which can be a limitation when developing applications
that need to run on low-memory devices or in constrained environments.
6. Dependencies and version compatibility: Python has a large and
active community of developers who create and maintain many useful
third-party modules and libraries. However, this can lead to version
compatibility issues and dependency management challenges.
It’s worth noting that many of these limitations can be mitigated by using best
practices, such as optimizing code, using appropriate libraries, and following
good design principles. Despite these limitations, Python remains a popular
and versatile language that is well-suited to many different applications

1.6 Major Applications of Python


Python is a versatile language that can be used for many different applications,
from web development to scientific computing. Here are some of the major
applications of Python:
1. Web development: Python is widely used for web development, both
on the server-side and the client-side. Popular web frameworks include
Django, Flask, Pyramid, and Bottle.
2. Data analysis and scientific computing: Python has become a popular
language for data analysis and scientific computing, thanks to libraries
such as NumPy, Pandas, SciPy, and Matplotlib. These libraries provide
support for numerical operations, data manipulation, statistical analysis,
and data visualization.
3. Machine learning and artificial intelligence: Python is widely used in
the field of machine learning and artificial intelligence, thanks to libraries
such as TensorFlow, Keras, PyTorch, and Scikit-learn. These libraries
provide support for deep learning, neural networks, natural language
processing, and other AI applications.
4. Desktop applications: Python can be used to develop desktop
applications with graphical user interfaces (GUIs), thanks to libraries
such as PyQt, PyGTK, and wxPython.
5. Game development: Python is increasingly being used in the field of
game development, thanks to libraries such as Pygame and Panda3D.
6. Automation and scripting: Python is a popular language for automation
and scripting tasks, thanks to its simple syntax and extensive library
support.
8 Python Programming: A Step-by-Step Guide to Learning the Language

7. DevOps: Python is used in DevOps for automation, testing, and


deployment, thanks to libraries such as Fabric and Ansible.
8. Education: Python is a popular language for teaching programming,
thanks to its simple syntax and ease of use.
Overall, Python is a versatile language that can be used for many different
applications, and its popularity and extensive library support make it a
valuable tool for developers in many fields.

1.7 Getting Python


Python can be downloaded for free from the official Python website, which
provides installers for Windows, macOS, and Linux. Here are the steps to
get Python:
1. Go to the Python website: Visit the official Python website at https://
www.python.org/ and click on the “Downloads” link at the top of the
page.
2. Select your operating system: Choose your operating system from the
list of available options. You can choose between Windows, macOS, and
a variety of Linux distributions.
3. Choose your Python version: Python is available in two major versions,
Python 2 and Python 3. While Python 2 is still in use, it is no longer
actively developed and new users are advised to use Python 3. Choose
the version of Python that you want to install.
4. Download the installer: Once you have chosen your operating system
and Python version, download the installer for your system.
5. Run the installer: Run the installer on your computer and follow the
on-screen instructions to complete the installation process.
After the installation process is complete, you should have access to the
Python interpreter and the Python standard library. You can also use an
integrated development environment (IDE) such as PyCharm, Spyder, or
Jupyter Notebook to write and run Python code.

1.8 Installing Python


Python is a cross-platform programming language, with distributions
available for multiple operating systems. To install Python, you can download
the binary code for your platform from the official website, and run the
installation process. In the event that the binary code is not available for
Introduction to Python Language 9

your platform, you can compile the source code manually using a C compiler.
The installation process for Python may differ slightly depending on the
platform, and specific instructions can be found on the official website for
each platform, such as Unix or Linux.

1.8.1 Unix and Linux Installation


Here are the general steps to install Python on Unix or Linux:
1. Open a terminal window.
2. Check if Python is already installed on your system by typing “python”
or “python3” into the terminal. If Python is already installed, the version
number will be displayed. If Python is not installed, you will see an error
message.
3. If Python is not installed, you can install it using your system’s package
manager. The command may differ depending on your distribution, but
some examples are:
• Ubuntu/Debian: sudo apt-get install python3
• Red Hat/Fedora: sudo yum install python3
• Arch Linux: sudo pacman -S python
4. Once the installation is complete, you can verify that Python is installed
by typing “python” or “python3” into the terminal.
5. Optionally, you can install a Python IDE or code editor to make it easier
to write and run Python code. Popular options include PyCharm, Spyder,
Visual Studio Code, and Jupyter Notebook.

1.8.2 Windows Installation


Here are the general steps to install Python on Windows:
1. Go to the official Python website at https://www.python.org/downloads/
and download the latest version of Python 3.x for Windows.
2. Once the installer is downloaded, run the executable file to begin the
installation process.
3. In the installation wizard, select “Add Python 3.x to PATH” so that
Python can be accessed from the command line and other applications.
4. Choose the “Customize installation” option and make sure that “pip”
is selected. This is a package manager that allows you to easily install
third-party Python packages.
10 Python Programming: A Step-by-Step Guide to Learning the Language

5. Continue with the installation process by following the on-screen


prompts, such as selecting the installation location and accepting the
license agreement.
6. Once the installation is complete, you can verify that Python is installed
by opening the command prompt and typing “python” followed by the
Enter key. This should launch the Python interpreter.
7. Optionally, you can install a Python IDE or code editor to make it easier
to write and run Python code. Popular options include PyCharm, Spyder,
Visual Studio Code, and Jupyter Notebook.

1.8.3 Macintosh Installation


Here are the general steps to install Python on a Macintosh:
1. Go to the official Python website at https://www.python.org/downloads/
and download the latest version of Python 3.x for Mac.
2. Once the installer is downloaded, open it by double-clicking the .dmg
file.
3. Double-click the “Python.mpkg” file to begin the installation process.
4. Follow the on-screen prompts to customize your installation settings,
such as the installation directory and any additional components you
want to include. The default settings are usually fine for most users.
5. Once the installation is complete, you can verify that Python is installed
by opening a terminal window and typing “python3” followed by the
Enter key. This should launch the Python interpreter.
6. Optionally, you can install a Python IDE or code editor to make it easier
to write and run Python code. Popular options include PyCharm, Spyder,
Visual Studio Code, and Jupyter Notebook.

1.9 Setting up Path


Directories can contain various programs and executable files, which means
that Windows, Unix/Linux, or MAC operating systems must have a way of
finding these files. To locate executable files, the operating system provides
a search path that includes directories. This search path is stored in an
environment variable, which is a named string that contains information that
can be accessed by the command shell and other programs.
Introduction to Python Language 11

1.9.1 Setting up Path at Unix/Linux


To set up the PATH for Python on Unix/Linux, follow these steps:
1. Open a terminal window.
2. Type “nano ~/.bashrc” to open your Bash profile file in the nano text
editor.
3. Add the following line to the end of the file, replacing “3.9” with your
version of Python:
export
PATH=”/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/
local/python3.9/bin”
4. Save the file by pressing Ctrl + X, then Y, then Enter.
5. Type “source ~/.bashrc” to apply the changes to your current terminal
session.
6. You can now run the “python” command from any directory in the
terminal.

1.9.2 Setting up the Path at Windows


To set up the PATH for Python on Windows, follow these steps:
1. Right-click on “This PC” or “My Computer” and select “Properties”.
2. Click on “Advanced system settings”.
3. Click on the “Environment Variables” button at the bottom.
4. Under “System Variables”, find the “Path” variable and click “Edit”.
5. Click “New” and enter the path to your Python installation directory
(e.g. C:\Python39).
6. Click “OK” to close all windows.
7. Open a new command prompt window and type “python” to verify that
the PATH has been set up correctly.

1.10 Python Environment Variables


Python uses environment variables to store configuration settings and other
system information that can be accessed by your code. Here are some common
Python environment variables:
12 Python Programming: A Step-by-Step Guide to Learning the Language

1. Path: This variable contains a list of directories where the operating


system searches for executable files, including the Python interpreter.
When you type “python” in the command prompt, the operating system
looks for the “python.exe” file in these directories.
2. Pythonpath: This variable contains a list of directories where Python
looks for modules and packages. You can add your own directories
to this list to make your own modules and packages available to your
Python code.
3. Pythonhome: This variable points to the root directory of your Python
installation. If you move your Python installation to a different directory,
you can update this variable to point to the new location.
4. Pythonstartup: This variable points to a Python script that is executed
every time you start the Python interpreter. You can use this script to
define your own Python environment, such as importing modules,
defining functions, or setting default values.
5. Pythonioencoding: This variable sets the default encoding for input
and output streams, such as stdin, stdout, and stderr. By default, Python
uses the system’s default encoding, but you can change it to a different
encoding if needed.
These are just a few examples of Python environment variables. You can
access and modify them using the os module in Python.

1.11 Running Python


To run Python code, you first need to install Python on your computer. You
can download and install the latest version of Python from the official website:
https://www.python.org/downloads/. Once you have installed Python, you
can run it in several ways:
1. Using the Python shell: The Python shell is an interactive environment
that allows you to run Python code line by line. To open the Python
shell, simply type “python” in your terminal or command prompt.
2. Using a text editor: You can write your Python code in a text editor,
save it with a .py file extension, and then run it from the command
prompt by typing “python filename.py”.
3. Using an Integrated Development Environment (IDE): An IDE
provides a more advanced environment for writing, debugging, and
Introduction to Python Language 13

running Python code. Some popular IDEs for Python include PyCharm,
Visual Studio Code, and Spyder.
Once you have Python installed and set up, you can start writing and running
Python code to perform various tasks and solve problems.

1.11.1 Interactive Interpreter


The interactive interpreter in Python is a command-line interface that allows
you to enter Python commands and immediately see the results of those
commands. It’s a great way to experiment with Python and test out code
snippets before incorporating them into a larger program.
To launch the Python interpreter, open a terminal or command prompt and
type python followed by the Enter key. This will launch the interactive
interpreter and display the Python version number and a command prompt
(>>>).
You can then enter Python commands at the prompt and see the output
immediately. For example, you could type print(“Hello, World!”) and press
Enter, and the interpreter would immediately display the output Hello, World!.
You can exit the interactive interpreter by typing exit() or quit() at the
command prompt and pressing Enter. This will return you to the terminal or
command prompt.

1.11.2 Script from the Command-Line


You can run a Python script from the command-line by typing python
followed by the name of the script file. Here’s an example:
Suppose you have a script called hello.py that contains the following code:
print(“Hello, World!”)
To run this script, open a terminal or command prompt and navigate to the
directory where hello.py is saved. Then, type the following command and
press Enter:
python hello.py

This will execute the script, and you should see the output Hello, World! in
the terminal or command prompt.
You can also pass command-line arguments to a Python script by including
them after the script name. For example, if you have a script called add.py
14 Python Programming: A Step-by-Step Guide to Learning the Language

that takes two numbers as arguments and adds them together, you could run
it with the following command:
python add.py 2 3

This would execute the script with the arguments 2 and 3, and the output
would be 5.
Note that in order to run a Python script from the command-line, you must
have Python installed on your computer and the Python executable must be
in your system’s PATH variable.

1.11.3 Integrated Development Environment


An Integrated Development Environment (IDE) is a software application that
provides a comprehensive environment for writing, testing, and debugging
software code. Python has many popular IDEs that provide features like
syntax highlighting, code completion, debugging tools, and more. Some
popular Python IDEs include:
1. PyCharm: PyCharm is a powerful and full-featured IDE for Python. It
includes advanced code completion, debugging tools, and support for
web development frameworks like Django and Flask.
2. Visual Studio Code: Visual Studio Code is a lightweight and versatile
IDE that supports a wide range of programming languages, including
Python. It includes features like syntax highlighting, code completion,
and debugging tools.
3. Spyder: Spyder is an IDE designed specifically for scientific computing
and data analysis in Python. It includes features like variable explorer,
data viewer, and plotting tools.
4. IDLE: IDLE is a simple and lightweight IDE that comes bundled with
Python. It includes basic features like syntax highlighting and debugging
tools.
There are many other IDEs available for Python, and the best one for you will
depend on your specific needs and preferences. You can download and install
most Python IDEs for free, and they are available for all major operating
systems.

1.12 First Python Program


Python is a popular high-level programming language that is known for
its simplicity, readability, and versatility. It is widely used for a variety of
Introduction to Python Language 15

purposes, including web development, data analysis, machine learning, and


more.
One of the reasons that Python is so popular is its syntax, which is designed
to be easy to read and write. For example, instead of using curly braces and
semicolons to denote code blocks and statements, Python uses whitespace
and indentation. Here is an example of a simple Python program that prints
a message to the console:
print(“Hello, World!”)
This program simply uses the print() function to display the message “Hello,
World!” on the console. You can save this code to a file with a .py extension,
such as hello.py, and then execute it from the command line by typing python
hello.py.

1.12.1 Interactive Mode Programming


In Python, you can also run programs in interactive mode, which allows you
to enter code directly into the Python interpreter and immediately see the
output. This is a great way to experiment with Python and test out code
snippets before incorporating them into a larger program.
To launch the interactive interpreter in Python, open a terminal or command
prompt and type python followed by the Enter key. This will launch the
interpreter and display the Python version number and a command prompt
(>>>).
You can then enter Python commands at the prompt and see the output
immediately. For example, you could type print(“Hello, World!”) and press
Enter, and the interpreter would immediately display the output Hello, World!.
In interactive mode, you can also define variables, create functions, and
import modules, just as you would in a regular Python program. For example,
you could define a variable like this:
x=5
And then use it in a calculation like this:
y=x*2
print(y)

This would define a variable x with the value 5, and then define a variable y
with the value 10 (which is the result of multiplying x by 2). Finally, it would
print the value of y to the console.
16 Python Programming: A Step-by-Step Guide to Learning the Language

You can exit the interactive interpreter by typing exit() or quit() at the
command prompt and pressing Enter. This will return you to the terminal or
command prompt.

1.12.2 The Script Mode Programming


In addition to running Python code in interactive mode, you can also write
code in a file and run it as a script. This is a common way to write larger
Python programs that can be executed from the command line or scheduled
to run automatically.
To create a Python script, simply create a new file with a .py extension and
write your code in it using a text editor or integrated development environment
(IDE). For example, you could create a file called hello.py and write the
following code:
print(“Hello, World!”)
To run this script, you can execute it from the command line by typing python
hello.py and pressing Enter. This will run the script and print the message
“Hello, World!” to the console.
In a Python script, you can include any valid Python code, including
importing modules, defining functions, and using control structures like loops
and conditionals. For example, you could write a more complex script that
asks the user for their name and then greets them:
name = input(“What is your name? “)
print(“Hello, “ + name + “!”)
This script would prompt the user to enter their name using the input()
function, and then use string concatenation to print a personalized greeting.
Overall, writing Python scripts is a powerful way to build complex programs
that can be used in a variety of contexts. With a little practice, you can use
Python to automate repetitive tasks, process data, and build sophisticated
applications.

1.13 Python’s Interactive Help


Python comes with a built-in help utility, which is one of the major features
and support of Python language. The prerequisite of using the built-in help
of Python, you must have a little knowledge of programming. For a new
Introduction to Python Language 17

programmer, it could be a bit off-putting. Once a programmer becomes


familiar with programming terminology then he can make great use of the
built-in help provided by Python. Python programming help can be obtained
in the following ways:
• Interactive mode help
• Getting help online through a web browser

1.13.1 Python Help Through a Web Browser


Python has an extensive standard library, as well as a large and active
community of developers who have created many third-party modules and
libraries. As a result, there are many resources available for getting help with
Python online.
One popular resource is the Python documentation, which is available online
in a web browser at the official Python website (https://www.python.org/). The
documentation includes a detailed language reference, as well as tutorials and
guides for getting started with Python, building web applications, working
with data, and more.
In addition to the official Python documentation, there are many online forums
and communities where you can ask questions and get help with Python.
For example, the Python subreddit (https://www.reddit.com/r/Python/) is a
popular forum where Python users can ask questions, share code snippets,
and get advice from other developers.
There are also many third-party websites and services that offer Python
tutorials, courses, and other learning resources. For example, Codecademy
(https://www.codecademy.com/learn/learn-python) offers a comprehensive
Python course for beginners, while Udemy (https://www.udemy.com/topic/
python/) has a wide range of Python courses for learners of all levels.
Overall, there are many resources available for getting help with Python
online, and the best approach will depend on your specific needs and learning
style. Whether you’re a beginner or an experienced developer, there are many
ways to learn and grow your skills with Python.

1.14 Python Differences From Other Languages


While the Python language shares some similarities with C, C++, and Java,
there are also distinct differences that set it apart from these languages.
18 Python Programming: A Step-by-Step Guide to Learning the Language

1.14.1 Difference Between C and Python


C and Python are both popular programming languages, but they differ in
several ways. Here are some of the main differences between C and Python:
1. Syntax: C uses a more complex syntax than Python. C requires more
code to accomplish the same tasks as Python, and it also has stricter rules
for formatting and organization.
2. Compiled vs. Interpreted: C is a compiled language, meaning that
the code is translated into machine code by a compiler before it can be
executed. Python, on the other hand, is an interpreted language, meaning
that the code is executed directly by an interpreter.
3. Typing: C is a statically typed language, meaning that the type of each
variable is declared explicitly in the code. Python, on the other hand, is
a dynamically typed language, meaning that the type of each variable is
determined at runtime.
4. Memory Management: C requires manual memory management,
meaning that the programmer must explicitly allocate and deallocate
memory for variables and data structures. Python, on the other hand, has
automatic memory management, meaning that the interpreter takes care
of memory allocation and deallocation.
5. Application: C is often used for low-level systems programming, such
as operating systems, device drivers, and embedded systems, as well as
for high-performance computing and graphics programming. Python is
often used for web development, data analysis, scientific computing, and
automation.
6. Object-Oriented Programming: While C supports object-oriented
programming (OOP), it is not a pure OOP language like Python. Python
is designed to support OOP concepts such as encapsulation, inheritance,
and polymorphism, making it easier to write and organize code for larger
projects.
7. Platform Independence: Python is more platform-independent than C,
meaning that Python code can run on a variety of operating systems and
hardware without modification. C code, on the other hand, may need to
be recompiled for different platforms or architectures.
8. Libraries and Packages: Python has a vast library of built-in modules
and third-party packages that make it easy to perform a wide range of
tasks, from web scraping to machine learning. C has a smaller standard
Introduction to Python Language 19

library and fewer third-party packages, making it more difficult to find


pre-built solutions for common programming problems.
9. Debugging: Debugging C code can be more challenging than debugging
Python code, due to C’s lower-level nature and manual memory
management. Python has built-in debugging tools and a more forgiving
syntax, making it easier to locate and fix errors in code.
10. Learning Curve: Python is generally considered to be easier to learn and
use than C, due to its simpler syntax, automatic memory management,
and built-in data structures. C requires a deeper understanding of
computer architecture and low-level programming concepts, making it
more difficult to learn and master.
These are just a few of the many differences between C and Python. While
they share some similarities, they are distinct languages with their own
strengths and weaknesses, and the choice of language will depend on the
specific needs of the project and the preferences of the programmer.

1.14.2 Difference Between C++ and Python


C++ and Python are both popular programming languages, but they differ
in several ways. Here are some of the main differences between C++ and
Python:
1. Syntax: C++ uses a more complex syntax than Python. C++ requires
more code to accomplish the same tasks as Python, and it also has stricter
rules for formatting and organization.
2. Compiled vs. Interpreted: C++ is a compiled language, meaning that
the code is translated into machine code by a compiler before it can be
executed. Python, on the other hand, is an interpreted language, meaning
that the code is executed directly by an interpreter.
3. Typing: C++ is a statically typed language, meaning that the type of
each variable is declared explicitly in the code. Python, on the other
hand, is a dynamically typed language, meaning that the type of each
variable is determined at runtime.
4. Memory Management: C++ requires manual memory management,
meaning that the programmer must explicitly allocate and deallocate
memory for variables and data structures. Python, on the other hand, has
automatic memory management, meaning that the interpreter takes care
of memory allocation and deallocation.
20 Python Programming: A Step-by-Step Guide to Learning the Language

5. Object-Oriented Programming: Both C++ and Python support object-


oriented programming (OOP), but C++ is often considered a “pure” OOP
language, meaning that all code is organized into objects and classes.
Python, on the other hand, allows for more procedural and functional
programming styles as well.
6. Application: C++ is often used for systems programming, such as
operating systems and device drivers, as well as for high-performance
computing, gaming, and graphics programming. Python is often used for
web development, data analysis, scientific computing, and automation.
7. Libraries and Packages: Python has a vast library of built-in modules
and third-party packages that make it easy to perform a wide range
of tasks, from web scraping to machine learning. C++ has a smaller
standard library and fewer third-party packages, making it more difficult
to find pre-built solutions for common programming problems.
8. Speed: C++ is generally faster than Python because it is a compiled
language, meaning that the code is translated into machine code before
it is executed. Python, on the other hand, is an interpreted language,
meaning that the code is executed directly by an interpreter, which can
be slower. However, Python has some libraries that are implemented in
C or C++ that can boost its performance.
9. Learning Curve: C++ is generally considered more difficult to learn
and use than Python. C++ has a steep learning curve because it is a more
complex language with a larger number of features and more stringent
syntax rules. Python, on the other hand, has a simpler syntax and a
smaller set of features, making it easier to learn and use.
10. Type Safety: C++ is a type-safe language, meaning that the compiler
checks for type errors at compile time. Python is not type-safe, meaning
that type errors can occur at runtime.
11. Multithreading: C++ has built-in support for multithreading, allowing
programs to execute multiple threads of code concurrently. Python also
supports multithreading, but it has a global interpreter lock (GIL) that
can limit the performance gains of multithreading in some cases.
12. Portability: Python is more portable than C++ because it is a high-level
language that can be interpreted on any platform. C++ code must be
compiled on the specific platform it will run on, which can make it less
portable.
Introduction to Python Language 21

13. Memory Safety: C++ is a language that provides the programmer with
the ability to manually manage memory. While this gives the programmer
more control over how memory is used, it also means that the program
can be susceptible to memory-related bugs, such as buffer overflows
and memory leaks. Python has built-in garbage collection, meaning that
it automatically manages memory, which makes it less susceptible to
memory-related bugs.
These are just a few of the many differences between C++ and Python. While
both languages are widely used and powerful, they have different strengths
and weaknesses, and the choice of language will depend on the specific needs
of the project and the preferences of the programmer.

1.14.3 Difference between Java and Python


Java and Python are both popular programming languages, but they differ
in several ways. Here are some of the main differences between Java and
Python:
1. Syntax: Java has a more complex syntax than Python. Java requires more
code to accomplish the same tasks as Python, and it also has stricter rules
for formatting and organization
2. Compiled vs. Interpreted: Java is a compiled language, meaning that
the code is translated into bytecode by a compiler before it can be
executed. Python, on the other hand, is an interpreted language, meaning
that the code is executed directly by an interpreter.
3. Typing: Java is a statically typed language, meaning that the type of
each variable is declared explicitly in the code. Python, on the other
hand, is a dynamically typed language, meaning that the type of each
variable is determined at runtime.
4. Memory Management: Java has automatic memory management,
meaning that the JVM (Java Virtual Machine) takes care of memory
allocation and deallocation. Python also has automatic memory
management, meaning that the interpreter takes care of memory allocation
and deallocation.
5. Object-Oriented Programming: Both Java and Python support object-
oriented programming (OOP), and they have similar concepts such as
inheritance, polymorphism, and encapsulation. However, Java is often
considered a “pure” OOP language, meaning that all code is organized
22 Python Programming: A Step-by-Step Guide to Learning the Language

into objects and classes. Python, on the other hand, allows for more
procedural and functional programming styles as well.
6. Application: Java is often used for web development, desktop application
development, and mobile app development. Python is often used for web
development, scientific computing, data analysis, machine learning, and
automation.
7. Performance: Java is generally faster than Python because it is
a compiled language, and the JVM can optimize the bytecode for
performance. Python, on the other hand, is an interpreted language,
meaning that the code is executed directly by an interpreter, which can
be slower. However, Python has some libraries that are implemented in
C or C++ that can boost its performance.
8. Garbage Collection: Java has a more advanced garbage collector than
Python, meaning that it can handle memory more efficiently.
9. Learning Curve: Java is generally considered more difficult to learn
and use than Python. Java has a steep learning curve because it is a more
complex language with a larger number of features and more stringent
syntax rules. Python, on the other hand, has a simpler syntax and a
smaller set of features, making it easier to learn and use.
These are just a few of the many differences between Java and Python. While
both languages are widely used and powerful, they have different strengths
and weaknesses, and the choice of language will depend on the specific needs
of the project and the preferences of the programmer.

1.15 Summary
In this chapter, we have learned about the programming language and its
needs. Then we gave a brief look at the origin and history of the Python
language along with its features and limitations. We have explored in detail
how Python language differs from other existing and prominent programming
languages such as C,C++, and Java. The setup and installation of Python
language along with a simple first program are also discussed in detail.

Review Questions
1. What is Python and what makes it a popular programming language?
2. How does Python differ from other programming languages?
Introduction to Python Language 23

3. What is the history of the Python programming language and who


developed it?
4. What are the steps to install Python on different operating systems?
5. What are the benefits of using Python for software development?
6. What are the key features of Python, and how do they contribute to its
popularity?
7. How does the Python community support and contribute to the language’s
development?
8. What are some popular applications built using Python?
9. How does Python compare with other programming languages like Java,
C++, and Ruby?
10. What are the most important considerations when choosing a programming
language, and how does Python measure up?
11. What is Python and how is it used?
12. Python is a high-level programming language used for a variety of
applications, including web development, data analysis, artificial
intelligence, and more.
13. Python is a type of reptile found in tropical regions around the world.
14. What are some key features of the Python programming language?
a. Python has a simple and easy-to-learn syntax.
b. Python is an interpreted language, meaning that code is executed
directly by an interpreter without the need for compilation.
2

Python Data Types and


Input Output

Highlights
l Keywords and identifiers
l Python statements
l Documentation and indentation
l Python Variables
l Python data types
l Input and output
l Import

Python has several built-in data types including strings, integers, and
lists. These data types can be used to store and manipulate different kinds
of information in a program. In addition to these basic data types, Python
also has advanced data types such as dictionaries and sets.
Python also has a built-in module for input/output operations, which
allows a program to read from and write to external sources, such as files
and streams. The module, called io, provides several functions to perform
these operations, such as open(), read(), and write().

2.1 Keywords
In Python, a keyword is a word that has a special meaning in the Python
language. Keywords are used to define the syntax and structure of the
26 Python Programming: A Step-by-Step Guide to Learning the Language

Python language, and they cannot be used as identifiers (i.e., variable names,
function names, etc.) in Python code.
Keyword Description
and Logical operator returns True if both operands are True,
otherwise, it returns False.
as Used to create an alias for a module or variable when
importing or renaming.
assert Used to check if a given condition is True, and raises an
exception if it is False.
async Used to define an asynchronous function or context manager.
await Used inside an async function to wait for an asynchronous
operation to complete.
break Used to exit a loop early, before the loop condition is met.
class Used to define a new class.
continue Used to skip the current iteration of a loop and continue with
the next iteration.
def Used to define a new function.
del Used to delete an object or an item from a collection.
elif Short for “else if”, used in a conditional statement to check
for additional conditions.
else Used in a conditional statement as a catch-all option if no
other conditions are met.
except Used to handle exceptions that are raised in a try block.
False Boolean value that represents the absence of truth.
finally Used in a try-except block to specify a block of code that
will always be executed, regardless of whether an exception
was raised or not.
for Used to iterate over a sequence of items, such as a list or a
tuple.
from Used in an import statement to import specific items from
a module.
global Used to indicate that a variable is a global variable, accessible
from anywhere in the code.
if Used to start a conditional statement.
import Used to import a module or a specific item from a module.
Python Data Types and Input Output 27

Keyword Description
in Used to check if an item is in a sequence, such as a list or
a tuple.
is Used to check if two variables refer to the same object.
lambda Used to create small anonymous functions.
None Special value that represents the absence of a value or a null
value.
nonlocal Used to indicate that a variable is nonlocal to the current
function, meaning it is defined in an outer function.
not Logical operator that negates a boolean value.
or Logical operator that returns True if at least one of the
operands is True, otherwise it returns False.
pass Used as a placeholder for a block of code that does nothing.
raise Used to raise an exception.
return Used to exit a function and return a value to the calling code.
True Boolean value that represents the presence of truth.
try Used to specify a block of code that might raise an exception.
while Used to start a loop that will continue to execute as long as
the loop condition is True.
with Used to create a context manager, which is used to
automatically set up and tear down resources.
yield Used in a function

2.2 Identifiers
In Python, an identifier is a name used to identify a variable, function, class,
module, or other objects. There are a few rules and conventions for naming
identifiers in Python:
• Identifiers must start with a letter or an underscore (_).
• Identifiers cannot start with a number.
• Identifiers can only contain letters, numbers, and underscores.
• Identifiers are case-sensitive, so myVariable and myvariable are
considered to be different identifiers.
• Python reserves a set of keywords that cannot be used as identifiers.
Examples include if, else, for, class, etc.
28 Python Programming: A Step-by-Step Guide to Learning the Language

• Identifiers should be descriptive and meaningful, using camelCase or


snake_case, depending on the project’s style guide.
Examples of valid identifiers in Python:
• myVariable
• _privateVariable
• counter
• calculate_average
• MyClass
Examples of invalid identifiers in Python:
• 1stVariable (starts with a number)
• my-variable (contains a hyphen)
• if (reserved keyword)
• True (reserved keyword)
• class (reserved keyword)

2.3 Python Statements


In Python, a statement is a single line of code that performs a specific action
or instruction. There are several types of statements in Python, including:
• Expressions: These are statements that evaluate to a value, such as
mathematical operations or function calls. Examples include “2 + 2” or
“print(‘Hello, world!’)”.
• Assignment statements: These are statements that assign a value to a
variable. Examples include “x = 2” or “name = ‘John’”.
• Control flow statements: These are statements that control the flow
of execution of a program, such as conditional statements (if/else) and
loops (for/while).
• Function and class definitions: These are statements that define a
function or class, respectively. Examples include “def my_function():”
and “class MyClass:”.
• Import statements: These statements are used to import modules or
packages in python. Examples include “import os” or “from math import
sqrt”
Python Data Types and Input Output 29

• Pass statements: A pass statement is a null operation. Nothing happens


when it executes. It is useful as a placeholder when a statement is
required syntactically, but no code needs to be executed.

2.4 Indentation
Indentation is used in Python to indicate blocks of code. The standard
indentation is four spaces, and most Python code follows this convention.
For example
Code 2.1 Illustration of indentation in Python
def foo():
# This line is indented by four spaces
x=5
if x > 0:
# This line is also indented by four spaces
print(“x is positive”)
# This line is not indented, so it’s not part of the if block
It is important to be consistent with your indentation, as the meaning of the
code can change based on the indentation level. For example
Code 2.2 Illustration of indentation in Python
x=5
if x > 0:
print(“x is positive”)
print(“This line is not indented, so it’s not part of the if block”)

This code will print both messages because the second print statement is not
indented, so it is not part of the if block.
Code 2.3 Illustration of indentation in Python
x=5
if x > 0:
print(“x is positive”)
print(“This line is indented, so it is part of the if block”)
print(“This line is not indented, so it’s not part of the if block”)
30 Python Programming: A Step-by-Step Guide to Learning the Language

This code will only print the first message, because the second print statement
is indented, so it is part of the if block.

2.5 Python Documentation


In Python, documentation is typically included in the form of comments
in the source code. These comments start with a # symbol, and everything
following the # on that line is considered a comment. For example:
Code 2.4 Illustration of documentation in Python using #
# This is a comment
x = 5 # This is also a comment

2.5.1 Single Line Comment


In Python, a single line comment is created by placing the “#” symbol at the
beginning of the line, followed by the text of the comment. For example:
Code 2.5 Illustration of single line documentation in Python
# This is a single line comment in Python
x = 10 # This is also a single line comment
The text following the “#” symbol is ignored by the Python interpreter and is
only there for the benefit of the person reading the code. Single line comments
are often used to add brief explanations or clarifications to the code.
Code 2.6 Illustration of single line documentation in Python
# Calculate the area of a rectangle
width = 3
height = 12
area = width * height
In this example, the single line comments provide some context for the code
that follows, explaining what the variables are used for and what the final
line of code is doing.

2.5.2 Multi Line Comments


In Python, multi-line comments can be created using triple quotes, either
single quotes (‘’’) or double quotes (“””). The comments can span multiple
Python Data Types and Input Output 31

lines and are commonly used for longer explanations and docstrings. Here is
an example:
Code 2.7 Illustration of double quotes in Python
“””
This is a multiline
comment. It can span
multiple lines.
“””
You can also use triple single quotes to create a multiline comment:
Code 2.8 Illustration of single quotes in Python
‘’’
This is also a
multiline comment. It
can also span multiple
lines.
‘’’
Both triple quotes (single or double) can be used to create a multiline
comment in Python. The advantage of using triple quotes is that you can
create a multiline comment even if it contains multiple lines of the same type
of quote character.

2.6 Docstrings
In Python, a docstring is a string literal that appears as the first statement
in a module, function, class, or method definition. It is used to provide
documentation for the code, and can be accessed using the built-in help()
function or the __doc__ attribute. Docstrings are enclosed in triple quotes
(either single or double) and are typically written in plain text, but can also
include markdown formatting.
It is a good practice to include a docstring in any function or class you write,
as it makes your code more readable and user-friendly.
Here is an example of a simple Python function with a docstring:
32 Python Programming: A Step-by-Step Guide to Learning the Language

Code 2.9 Illustration of docstring in Python


def add(a, b):
“””
This function takes two numbers as input and returns their sum.

Parameters:
a (int): The first number
b (int): The second number

Returns:
int: The sum of a and b
“””
return a + b

In this example, the function add takes two numbers as input, adds them
together, and returns the result. The docstring provides a brief description of
what the function does, and explains the parameters and return value.
To access the docstring of this function, you can use the help() function like
this:
help(add)

You can also access the docstring programmatically using the __doc__
attribute:
print(add.__doc__)

This will output the same string as the docstring.


By providing clear and concise documentation, it’s easy for other developers
to understand how the function works, what the parameters are and what to
expect when calling the function. This can save a lot of time and effort when
working on large projects with multiple contributors.

2.7 Variables
A Python variable is a reserved memory location to store values. In other
words, a variable in a python program gives data to the computer for
Python Data Types and Input Output 33

processing. Every value in Python has a datatype. Different data types in


Python are Numbers, List, Tuple, Strings, Dictionary, etc. Variables can be
declared by any name or even alphabets like a, aa, abc, etc.

2.7.1 Variable Assignment


Think of a variable as a name attached to a particular object. In Python,
variables need not be declared or defined in advance, as is the case in many
other programming languages. To create a variable, you just assign it a value
and then start using it. The assignment is done with a single equals sign (=):
n = 300
This is read or interpreted as “n is assigned the value 300.” Once this is done,
n can be used in a statement or expression, and its value will be substituted:
print(n)
300
Just as a literal value can be displayed directly from the interpreter prompt in
a REPL session without the need for print(), so can a variable:
n
300
Later, if you change the value of n and use it again, the new value will be
substituted instead:
n = 1000
print(n)
1000
Python also allows chained assignment, which makes it possible to assign the
same value to several variables simultaneously:
Code 2.10 Illustration of variable in Python
a = b = c = 300
print(a, b, c)
300 300 300

2.7.2 Variable Types in Python


In many programming languages, variables are statically typed. That means
a variable is initially declared to have a specific data type, and any value
34 Python Programming: A Step-by-Step Guide to Learning the Language

assigned to it during its lifetime must always have that type. Variables in
Python are not subject to this restriction. In Python, a variable may be
assigned a value of one type and then later re-assigned a value of a different
type:
Code 2.11 Illustration of variable in Python
var = 21.09
print(var)
21.09
Let’s see another example:
Code 2.12 Illustration of variable in Python
>>> var = “Welcome to Python”
>>> print(var)
Welcome to Python

2.8 Multiple Assignment


Multiple assignment allows you to assign multiple variables at the same time
in one line of code. This feature often seems simple after you’ve learned
about it, but it can be tricky to recall multiple assignment when you need
it most. In this we’ll see what multiple assignment is, we’ll take a look at
common uses of multiple assignment, and then we’ll look at a few uses for
multiple assignment that are often overlooked.
Python’s multiple assignment looks like this:
>>> x, y = 10, 20
Here we’re setting x to 10 and y to 20.
What’s happening at a lower level is that we’re creating a tuple of 10, 20 and
then looping over that tuple and taking each of the two items we get from
looping and assigning them to x and y in order.
This syntax might make that a bit more clear:
>>> (x, y) = (10, 20)

Parenthesis are optional around tuples in Python and they’re also optional
in multiple assignment (which uses a tuple-like syntax). All of these are
equivalent:
Python Data Types and Input Output 35

Code 2.13 Illustration of variable in Python


>>> x, y = 10, 20
>>> x, y = (10, 20)
>>> (x, y) = 10, 20
>>> (x, y) = (10, 20)
Multiple assignments are often called “tuple unpacking” because it’s
frequently used with tuples. But we can use multiple assignments with any
iterable, not just tuples. Here we’re using it with a list:
Code 2.13 Illustration of variable in Python
>>> x, y = [10, 20]
>>> x
10
>>> y
20
And with a string:
Code 2.13 Illustration of a variable with a string in Python
>>> x, y = ‘hi’
>>> x
‘h’
>>> y
‘i’
Here’s another example to demonstrate that multiple assignments works with
any number of items and that it works with variables as well as objects we’ve
just created:
Code 2.14 Illustration of a variable in Python
>>> point = 10, 20, 30
>>> x, y, z = point
>>> print(x, y, z)
10 20 30
>>> (x, y, z) = (z, y, x)
>>> print(x, y, z)
30 20 10
Random documents with unrelated
content Scribd suggests to you:
law in creating the Project Gutenberg™ collection. Despite these
efforts, Project Gutenberg™ electronic works, and the medium
on which they may be stored, may contain “Defects,” such as,
but not limited to, incomplete, inaccurate or corrupt data,
transcription errors, a copyright or other intellectual property
infringement, a defective or damaged disk or other medium, a
computer virus, or computer codes that damage or cannot be
read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except


for the “Right of Replacement or Refund” described in
paragraph 1.F.3, the Project Gutenberg Literary Archive
Foundation, the owner of the Project Gutenberg™ trademark,
and any other party distributing a Project Gutenberg™ electronic
work under this agreement, disclaim all liability to you for
damages, costs and expenses, including legal fees. YOU AGREE
THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT
EXCEPT THOSE PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE
THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY
DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE
TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL,
PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE
NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of
receiving it, you can receive a refund of the money (if any) you
paid for it by sending a written explanation to the person you
received the work from. If you received the work on a physical
medium, you must return the medium with your written
explanation. The person or entity that provided you with the
defective work may elect to provide a replacement copy in lieu
of a refund. If you received the work electronically, the person
or entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.
If the second copy is also defective, you may demand a refund
in writing without further opportunities to fix the problem.

1.F.4. Except for the limited right of replacement or refund set


forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’,
WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of
damages. If any disclaimer or limitation set forth in this
agreement violates the law of the state applicable to this
agreement, the agreement shall be interpreted to make the
maximum disclaimer or limitation permitted by the applicable
state law. The invalidity or unenforceability of any provision of
this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the


Foundation, the trademark owner, any agent or employee of the
Foundation, anyone providing copies of Project Gutenberg™
electronic works in accordance with this agreement, and any
volunteers associated with the production, promotion and
distribution of Project Gutenberg™ electronic works, harmless
from all liability, costs and expenses, including legal fees, that
arise directly or indirectly from any of the following which you
do or cause to occur: (a) distribution of this or any Project
Gutenberg™ work, (b) alteration, modification, or additions or
deletions to any Project Gutenberg™ work, and (c) any Defect
you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new
computers. It exists because of the efforts of hundreds of
volunteers and donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project
Gutenberg™’s goals and ensuring that the Project Gutenberg™
collection will remain freely available for generations to come. In
2001, the Project Gutenberg Literary Archive Foundation was
created to provide a secure and permanent future for Project
Gutenberg™ and future generations. To learn more about the
Project Gutenberg Literary Archive Foundation and how your
efforts and donations can help, see Sections 3 and 4 and the
Foundation information page at www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-
profit 501(c)(3) educational corporation organized under the
laws of the state of Mississippi and granted tax exempt status
by the Internal Revenue Service. The Foundation’s EIN or
federal tax identification number is 64-6221541. Contributions
to the Project Gutenberg Literary Archive Foundation are tax
deductible to the full extent permitted by U.S. federal laws and
your state’s laws.

The Foundation’s business office is located at 809 North 1500


West, Salt Lake City, UT 84116, (801) 596-1887. Email contact
links and up to date contact information can be found at the
Foundation’s website and official page at
www.gutenberg.org/contact
Section 4. Information about Donations to
the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission
of increasing the number of public domain and licensed works
that can be freely distributed in machine-readable form
accessible by the widest array of equipment including outdated
equipment. Many small donations ($1 to $5,000) are particularly
important to maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws


regulating charities and charitable donations in all 50 states of
the United States. Compliance requirements are not uniform
and it takes a considerable effort, much paperwork and many
fees to meet and keep up with these requirements. We do not
solicit donations in locations where we have not received written
confirmation of compliance. To SEND DONATIONS or determine
the status of compliance for any particular state visit
www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states


where we have not met the solicitation requirements, we know
of no prohibition against accepting unsolicited donations from
donors in such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot


make any statements concerning tax treatment of donations
received from outside the United States. U.S. laws alone swamp
our small staff.

Please check the Project Gutenberg web pages for current


donation methods and addresses. Donations are accepted in a
number of other ways including checks, online payments and
credit card donations. To donate, please visit:
www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could
be freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose
network of volunteer support.

Project Gutenberg™ eBooks are often created from several


printed editions, all of which are confirmed as not protected by
copyright in the U.S. unless a copyright notice is included. Thus,
we do not necessarily keep eBooks in compliance with any
particular paper edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg
Literary Archive Foundation, how to help produce our new
eBooks, and how to subscribe to our email newsletter to hear
about new eBooks.
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like