0% found this document useful (0 votes)
10 views15 pages

Overview of Python Programming Language

Python is a high-level, general-purpose programming language known for its readability and support for multiple programming paradigms, including object-oriented and functional programming. Developed by Guido van Rossum in the late 1980s, Python has evolved through various versions, with Python 3.0 being a significant revision released in 2008, and it remains widely used in fields like machine learning. The language emphasizes simplicity and extensibility, making it a popular choice for both beginners and experienced developers.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views15 pages

Overview of Python Programming Language

Python is a high-level, general-purpose programming language known for its readability and support for multiple programming paradigms, including object-oriented and functional programming. Developed by Guido van Rossum in the late 1980s, Python has evolved through various versions, with Python 3.0 being a significant revision released in 2008, and it remains widely used in fields like machine learning. The language emphasizes simplicity and extensibility, making it a popular choice for both beginners and experienced developers.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Python is a high-level, general-purpose programming language.

Its design
philosophy emphasizes code readability with the use of significant indentation.
[34]
Python is dynamically type-checked and garbage-collected. It supports
multiple programming paradigms,
including structured (particularly procedural), object-oriented and functional
programming.

Guido van Rossum began working on Python in the late 1980s as a successor to
the ABC programming language. Python 3.0, released in 2008, was a major revision
and not completely backward-compatible with earlier versions. Beginning with
Python 3.5,[35] capabilities and keywords for typing were added to the language,
allowing optional static typing.[36] As of 2025, the Python Software Foundation
supports Python 3.10, 3.11, 3.12, 3.13, and 3.14, following the projects annual
release cycle and five-year support policy. Earlier versions in the 3.x series have
reached end-of-life and no longer receive security updates.

Python has gained widespread use in the machine learning community.[37][38][39][40] It is


widely taught as an introductory programming language.[41] Since 2003, Python has
consistently ranked in the top ten of the most popular programming languages in
the TIOBE Programming Community Index, which ranks based on searches in 24
platforms.[42]

History
Main article: History of Python

The designer of Python, Guido van Rossum, at PyCon US


2024
Python was conceived in the late 1980s[43] by Guido van Rossum at Centrum
Wiskunde & Informatica (CWI) in the Netherlands.[44] It was designed as a successor
to the ABC programming language, which was inspired by SETL,[45] capable
of exception handling and interfacing with the Amoeba operating system.[13] Python
implementation began in December 1989.[44] Van Rossum first released it in 1991 as
Python 0.9.0.[44] Van Rossum assumed sole responsibility for the project, as the lead
developer, until 12 July 2018, when he announced his "permanent vacation" from
responsibilities as Python's "benevolent dictator for life" (BDFL); this title was
bestowed on him by the Python community to reflect his long-term commitment as
the project's chief decision-maker.[46] (He has since come out of retirement and is
self-titled "BDFL-emeritus".) In January 2019, active Python core developers elected
a five-member Steering Council to lead the project.[47][48]

The name Python derives from the British comedy series Monty Python's Flying
Circus.[49] (See § Naming.)

Python 2.0 was released on 16 October 2000, featuring many new features such
as list comprehensions, cycle-detecting garbage collection, reference counting,
and Unicode support.[50] Python 2.7's end-of-life was initially set for 2015, and then
postponed to 2020 out of concern that a large body of existing code could not easily
be forward-ported to Python 3.[51][52] It no longer receives security patches or updates.
[53][54]
While Python 2.7 and older versions are officially unsupported, a different
unofficial Python implementation, PyPy, continues to support Python 2, i.e., "2.7.18+"
(plus 3.11), with the plus signifying (at least some) "backported security updates".[55]

Python 3.0 was released on 3 December 2008, and was a major revision and not
completely backward-compatible with earlier versions, with some new semantics and
changed syntax. Python 2.7.18, released in 2020, was the last release of Python 2.
[56]
Several releases in the Python 3.x series have added new syntax to the language,
and made a few (considered very minor) backward-incompatible changes.

As of December 2025, Python 3.14.2 is the latest stable release. All older 3.x
versions had a security update down to Python 3.9.24 then again with 3.9.25, the
final version in 3.9 series. Python 3.10 is, since November 2025, the oldest
supported branch.[57] Python 3.15 has an alpha released, and Android has an official
downloadable executable available for Python 3.14. Releases receive two years of
full support followed by three years of security support.

Design philosophy and features


Python is a multi-paradigm programming language. Object-oriented programming
and structured programming are fully supported, and many of their features support
functional programming and aspect-oriented programming –
including metaprogramming[58] and metaobjects.[59] Many other paradigms are
supported via extensions, including design by contract[60][61] and logic programming.
[62]
Python is often referred to as a 'glue language'[63] because it is purposely designed
to be able to integrate components written in other languages.

Python uses dynamic typing and a combination of reference counting and a cycle-
detecting garbage collector for memory management.[64] It uses dynamic name
resolution (late binding), which binds method and variable names during program
execution.

Python's design offers some support for functional programming in the


"Lisp tradition". It has filter , map , and reduce functions; list
comprehensions, dictionaries, sets, and generator expressions.[65] The standard
library has two modules ( itertools and functools ) that implement functional tools
borrowed from Haskell and Standard ML.[66]

Python's core philosophy is summarized in the Zen of Python (PEP 20) written
by Tim Peters, which includes aphorisms such as these:[67]

 Explicit is better than implicit.


 Simple is better than complex.
 Readability counts.
 Special cases aren't special enough to break the rules.
 Although practicality beats purity, errors should never pass silently, unless
explicitly silenced.
 There should be one-- and preferably only one --obvious way to do it.
However, Python has received criticism for violating these principles and adding
unnecessary language bloat.[68] Responses to these criticisms note that the Zen of
Python is a guideline rather than a rule.[69] The addition of some new features had
been controversial: Guido van Rossum resigned as Benevolent Dictator for Life after
conflict about adding the assignment expression operator in Python 3.8.[70][71]

Nevertheless, rather than building all functionality into its core, Python was designed
to be highly extensible via modules. This compact modularity has made it particularly
popular as a means of adding programmable interfaces to existing applications. Van
Rossum's vision of a small core language with a large standard library and easily
extensible interpreter stemmed from his frustrations with ABC, which represented the
opposite approach.[43]

Python claims to strive for a simpler, less-cluttered syntax and grammar, while giving
developers a choice in their coding methodology. Python lacks do while loops,
which Rossum considered harmful.[72] In contrast to Perl's motto "there is more than
one way to do it", Python advocates an approach where "there should be one – and
preferably only one – obvious way to do it".[67] In practice, however, Python provides
many ways to achieve a given goal. There are at least three ways to format a string
literal, with no certainty as to which one a programmer should use.[73] Alex Martelli is
a Fellow at the Python Software Foundation and Python book author; he wrote that
"To describe something as 'clever' is not considered a compliment in the Python
culture."[74]

Python's developers typically prioritise readability over performance. For example,


they reject patches to non-critical parts of the CPython reference implementation that
would offer increases in speed that do not justify the cost of clarity and readability. [75]
[failed verification]
Execution speed can be improved by moving speed-critical functions to
extension modules written in languages such as C, or by using a just-in-time
compiler like PyPy. Also, it is possible to transpile to other languages. However, this
approach either fails to achieve the expected speed-up, since Python is a
very dynamic language, or only a restricted subset of Python is compiled (with
potential minor semantic changes).[76]

Python is meant to be a fun language to use. This goal is reflected in the name – a
tribute to the British comedy group Monty Python[77] – and in playful approaches to
some tutorials and reference materials. For instance, some code examples use the
terms "spam" and "eggs" (in reference to a Monty Python sketch), rather than the
typical terms "foo" and "bar".[78][79]

A common neologism in the Python community is pythonic, which has a broad range
of meanings related to program style: Pythonic code may use Python idioms well; be
natural or show fluency in the language; or conform with Python's minimalist
philosophy and emphasis on readability.[80]

Syntax and semantics


Main article: Python syntax and semantics
Python is meant to be an easily readable language. Its formatting is visually
uncluttered and often uses English keywords where other languages use
punctuation. Unlike many other languages, it does not use curly brackets to delimit
blocks, and semicolons after statements are allowed but rarely used. It has fewer
syntactic exceptions and special cases than C or Pascal.[81]

Indentation
Further information: Python syntax and semantics § Indentation
Python uses whitespace indentation, rather than curly brackets or keywords, to
delimit blocks. An increase in indentation comes after certain statements; a decrease
in indentation signifies the end of the current block.[82] Thus, the program's visual
structure accurately represents its semantic structure.[83] This feature is sometimes
termed the off-side rule. Some other languages use indentation this way; but in most,
indentation has no semantic meaning. The recommended indent size is four spaces.
[84]

Statements and control flow


Python's statements include the following:

 The assignment statement, using a single equals sign =


 The if statement, which conditionally executes a block of code, along
with else and elif (a contraction of else if )
 The for statement, which iterates over an iterable object, capturing each
element to a variable for use by the attached block; the variable is not deleted
when the loop finishes
 The while statement, which executes a block of code as long as boolean
condition is true
 The try statement, which allows exceptions raised in its attached code block to
be caught and handled by except clauses (or new syntax except* in Python
3.11 for exception groups);[85] the try statement also ensures that clean-up code
in a finally block is always run regardless of how the block exits
 The raise statement, used to raise a specified exception or re-raise a caught
exception
 The class statement, which executes a block of code and attaches its local
namespace to a class, for use in object-oriented programming
 The def statement, which defines a function or method
 The with statement, which encloses a code block within a context manager,
allowing resource-acquisition-is-initialization (RAII)-like behavior and replacing a
common try/finally idiom[86] Examples of a context include acquiring a lock before
some code is run, and then releasing the lock; or opening and then closing a file
 The break statement, which exits a loop
 The continue statement, which skips the rest of the current iteration and
continues with the next
 The del statement, which removes a variable—deleting the reference from the
name to the value, and producing an error if the variable is referred to before it is
redefined [c]
 The pass statement, serving as a NOP (i.e., no operation), which is syntactically
needed to create an empty code block
 The assert statement, used in debugging to check for conditions that should
apply
 The yield statement, which returns a value from a generator function (and also
an operator); used to implement coroutines
 The return statement, used to return a value from a function
 The import and from statements, used to import modules whose functions or
variables can be used in the current program
 The match and case statements, analogous to a switch statement construct,
which compares an expression against one or more cases as a control-flow
measure
The assignment statement ( = ) binds a name as a reference to a separate,
dynamically allocated object. Variables may subsequently be rebound at any time to
any object. In Python, a variable name is a generic reference holder without a
fixed data type; however, it always refers to some object with a type. This is
called dynamic typing—in contrast to statically-typed languages, where each variable
may contain only a value of a certain type.

Python does not support tail call optimization or first-class continuations; according
to Van Rossum, the language never will.[87][88] However, better support for coroutine-
like functionality is provided by extending Python's generators.[89] Before 2.5,
generators were lazy iterators; data was passed unidirectionally out of the generator.
From Python 2.5 on, it is possible to pass data back into a generator function; and
from version 3.3, data can be passed through multiple stack levels.[90]

Expressions
Python's expressions include the following:

 The + , - , and * operators for mathematical addition, subtraction, and


multiplication are similar to other languages, but the behavior of division differs.
There are two types of division in Python: floor division (or integer division) // ,
and floating-point division / .[91] Python uses the ** operator for exponentiation.
 Python uses the + operator for string concatenation. The language uses
the * operator for duplicating a string a specified number of times.
 The @ infix operator is intended to be used by libraries such as NumPy for matrix
multiplication.[92][93]
 The syntax := , called the "walrus operator", was introduced in Python 3.8. This
operator assigns values to variables as part of a larger expression.[94]
 In Python, == compares two objects by value. Python's is operator may be used
to compare object identities (i.e., comparison by reference), and comparisons
may be chained—for example, a <= b <= c .
 Python uses and , or , and not as Boolean operators.
 Python has a type of expression called a list comprehension, and a more general
expression called a generator expression.[65]
 Anonymous functions are implemented using lambda expressions; however,
there may be only one expression in each body.
 Conditional expressions are written as x if c else y .[95] (This is different in
operand order from the c ? x : y operator common to many other languages.)
 Python makes a distinction between lists and tuples. Lists are written
as [1, 2, 3] , are mutable, and cannot be used as the keys of dictionaries
(since dictionary keys must be immutable in Python). Tuples, written
as (1, 2, 3) , are immutable and thus can be used as the keys of dictionaries,
provided that all of the tuple's elements are immutable. The + operator can be
used to concatenate two tuples, which does not directly modify their contents, but
produces a new tuple containing the elements of both. For example, given the
variable t initially equal to (1, 2, 3) , executing t = t + (4, 5) first
evaluates t + (4, 5) , which yields (1, 2, 3, 4, 5) ; this result is then
assigned back to t —thereby effectively "modifying the contents" of t while
conforming to the immutable nature of tuple objects. Parentheses are optional for
tuples in unambiguous contexts.[96]
 Python features sequence unpacking where multiple expressions, each
evaluating to something assignable (e.g., a variable or a writable property) are
associated just as in forming tuple literal; as a whole, the results are then put on
the left-hand side of the equal sign in an assignment statement. This statement
expects an iterable object on the right-hand side of the equal sign to produce the
same number of values as the writable expressions on the left-hand side; while
iterating, the statement assigns each of the values produced on the right to the
corresponding expression on the left.[97]
 Python has a "string format" operator % that functions analogously
to printf format strings in the C language—e.g. "spam=%s eggs=
%d" % ("blah", 2) evaluates to "spam=blah eggs=2" . In Python 2.6+ and 3+,
this operator was supplemented by the format() method of the str class,
e.g., "spam={0} eggs={1}".format("blah", 2) . Python 3.6 added "f-
strings": spam = "blah"; eggs = 2; f'spam={spam} eggs={eggs}' .[98]
 Strings in Python can be concatenated by "adding" them (using the same
operator as for adding integers and floats);
e.g., "spam" + "eggs" returns "spameggs" . If strings contain numbers, they are
concatenated as strings rather than as integers, e.g. "2" + "2" returns "22" .
 Python supports string literals in several ways:
 Delimited by single or double quotation marks; single and double quotation
marks have equivalent functionality (unlike in Unix shells, Perl, and Perl-
influenced languages). Both marks use the backslash ( \ ) as an escape
character. String interpolation became available in Python 3.6 as "formatted
string literals".[98]
 Triple-quoted, i.e., starting and ending with three single or double quotation
marks; this may span multiple lines and function like here documents in
shells, Perl, and Ruby.
 Raw string varieties, denoted by prefixing the string literal with r . Escape
sequences are not interpreted; hence raw strings are useful where literal
backslashes are common, such as in regular expressions and Windows-style
paths. (Compare " @ -quoting" in C#.)
 Python has array index and array slicing expressions in lists, which are written
as a[key] , a[start:stop] or a[start:stop:step] . Indexes are zero-based,
and negative indexes are relative to the end. Slices take elements from
the start index up to, but not including, the stop index. The (optional) third
slice parameter, called step or stride, allows elements to be skipped or reversed.
Slice indexes may be omitted—for example, a[:] returns a copy of the entire
list. Each element of a slice is a shallow copy.
In Python, a distinction between expressions and statements is rigidly enforced, in
contrast to languages such as Common Lisp, Scheme, or Ruby. This distinction
leads to duplicating some functionality, for example:

 List comprehensions vs. for -loops


 Conditional expressions vs. if blocks
 The eval() vs. exec() built-in functions (in Python 2, exec is a statement); the
former function is for expressions, while the latter is for statements
A statement cannot be part of an expression; because of this restriction, expressions
such as list and dict comprehensions (and lambda expressions) cannot contain
statements. As a particular case, an assignment statement such as a = 1 cannot be
part of the conditional expression of a conditional statement.

Typing

The standard type hierarchy in Python 3


Python uses duck typing, and it has typed objects but untyped variable names. Type
constraints are not checked at definition time; rather, operations on an object may
fail at usage time, indicating that the object is not of an appropriate type. Despite
being dynamically typed, Python is strongly typed, forbidding operations that are
poorly defined (e.g., adding a number and a string) rather than quietly attempting to
interpret them.

Python allows programmers to define their own types using classes, most often
for object-oriented programming. New instances of classes are constructed by
calling the class, for example, SpamClass() or EggsClass() ); the classes are
instances of the metaclass type (which is an instance of itself), thereby allowing
metaprogramming and reflection.

Before version 3.0, Python had two kinds of classes, both using the same
syntax: old-style and new-style.[99] Current Python versions support the semantics of
only the new style.

Python supports optional type annotations.[5][100] These annotations are not enforced
by the language, but may be used by external tools such as mypy to catch errors.
Python includes a module typing including several type names for type annotations.
[101][102]
Also, Mypy supports a Python compiler called mypyc, which leverages type
annotations for optimization.[103]

Summary of Python 3's built-in types

Mutabil
Type Description Syntax examples
ity

immuta True
bool Boolean value
ble False

bytearray(b'Some ASCII')
Sequence bytearray(b"Some ASCII")
bytearray mutable
of bytes bytearray([119, 105, 107,
105])

b'Some ASCII'

bytes
immuta Sequence of b"Some ASCII"
ble bytes bytes([119, 105, 107, 105
])

Complex 3+2.7j
complex
immuta number with real 3 + 2.7j
ble and imaginary
5j
parts

dict mutable Associative {'key1': 1.0, 3: False}


array (or
dictionary) of key
and value pairs;
can contain
mixed types {}
(keys and
values); keys
must be a
hashable type

An ellipsis placeh
[Link]
immuta older to be used ...
ble as an index Ellipsis
in NumPy arrays

Double-precision
floating-point
number. The
precision is
machine-
dependent, but in
immuta
float practice it is 1.33333
ble
generally
implemented as a
64-bit IEEE 754 n
umber with
53 bits of
precision.[104]

Unordered set, frozenset({4.0, 'string',


contains no True})
immuta
frozenset duplicates; can
ble frozenset()
contain mixed
types, if hashable
Integer of
immuta
int unlimited 42
ble
magnitude[105]
List, can contain [4.0, 'string', True]
list mutable
mixed types []

An object
representing the
[Link]
immuta absence of a None
ble value, often
called null in
other languages
[Link] immuta A placeholder NotImplemented
edType ble that can be
returned
from overloaded
operators to
indicate
unsupported
operand types.
An immutable
sequence of
numbers,
immuta commonly used range( − 1, 10)
range
ble for iterating a range(10, − 5, − 2)
specific number
of times
in for loops[106]
Unordered set,
contains no {4.0, 'string', True}
set mutable duplicates; can set()
contain mixed
types, if hashable
'Wikipedia'
"Wikipedia"
A character
str
immuta string: sequence """Spanning
ble of Unicode multiple
codepoints lines"""

Tuple, can (4.0, 'string', True)


immuta
tuple contain mixed ('single element',)
ble
types ()

Arithmetic operations
Python includes conventional symbols for arithmetic operators ( + , - , * , / ), the
floor-division operator // , and the modulo operator % . (With the modulo operator, a
remainder can be negative, e.g., 4 % -3 == -2 .) Also, Python offers the ** symbol
for exponentiation, e.g. 5**3 == 125 and 9**0.5 == 3.0 . Also, it offers the
matrix-multiplication operator @ .[107] These operators work as in traditional
mathematics; with the same precedence rules, the infix operators + and - can also
be unary, to represent positive and negative numbers respectively.

Division between integers produces floating-point results. The behavior of division


has changed significantly over time:[108]

 The current version of Python (i.e., since 3.0) changed the / operator to always
represent floating-point division, e.g., 5/2 == 2.5 .
 The floor division // operator was introduced, meaning that 7//3 == 2 , -7//3
== -3 , 7.5//3 == 2.0 , and -7.5//3 == -3.0 . For Python 2.7, adding
the from __future__ import division statement allows a module in Python 2.7
to use Python 3.x rules for division (see above).
In Python terms, the / operator represents true division (or simply division), while
the // operator represents floor division. Before version 3.0, the / operator
represents classic division.[108]

Rounding towards negative infinity, though a different method than in most


languages, adds consistency to Python. For instance, this rounding implies that the
equation (a + b)//b == a//b + 1 is always true. Also, the rounding implies that the
equation b*(a//b) + a%b == a is valid for both positive and negative values of a .
As expected, the result of a%b lies in the half-open interval [0, b), where b is a
positive integer; however, maintaining the validity of the equation requires that the
result must lie in the interval (b, 0] when b is negative.[109]

Python provides a round function for rounding a float to the nearest integer. For tie-
breaking, Python 3 uses the round to
even method: round(1.5) and round(2.5) both produce 2 .[110] Python versions
before 3 used the round-away-from-zero method: round(0.5) is 1.0 , and round(-
0.5) is −1.0 .[111]

Python allows Boolean expressions that contain multiple equality relations to be


consistent with general usage in mathematics. For example, the expression a < b <
c tests whether a is less than b and b is less than c .[112] C-derived languages
interpret this expression differently: in C, the expression would first evaluate a < b ,
resulting in 0 or 1, and that result would then be compared with c .[113]

Python uses arbitrary-precision arithmetic for all integer operations.


The Decimal type/class in the decimal module provides decimal floating-point
numbers to a pre-defined arbitrary precision with several rounding modes.
[114]
The Fraction class in the fractions module provides arbitrary precision
for rational numbers.[115]

Due to Python's extensive mathematics library and the third-party library NumPy, the
language is frequently used for scientific scripting in tasks such as numerical data
processing and manipulation.[116][117]

Function syntax
Functions are created in Python by using the def keyword. A function is defined
similarly to how it is called, by first providing the function name and then the required
parameters. Here is an example of a function that prints its inputs:

def printer(input1, input2 = "already there"):


print(input1)
print(input2)

printer("hello")
# Example output:
# hello
# already there

To assign a default value to a function parameter in case no actual value is provided


at run time, variable-definition syntax can be used inside the function header.

Code examples
"Hello, World!" program:

print('Hello, World!')

Program to calculate the factorial of a non-negative integer:

text = input('Type a number, and its factorial will be printed: ')


n = int(text)

if n < 0:
raise ValueError('You must enter a non-negative integer')

factorial = 1
for i in range(2, n + 1):
factorial *= i

print(factorial)

Libraries
Python's large standard library[118] is commonly cited as one of its greatest strengths.
For Internet-facing applications, many standard formats and protocols such
as MIME and HTTP are supported. The language includes modules for
creating graphical user interfaces, connecting to relational databases, generating
pseudorandom numbers, arithmetic with arbitrary-precision decimals,
[114]
manipulating regular expressions, and unit testing.

Some parts of the standard library are covered by specifications—for example,


the Web Server Gateway Interface (WSGI) implementation wsgiref follows PEP
333[119]—but most parts are specified by their code, internal documentation, and test
suites. However, because most of the standard library is cross-platform Python code,
only a few modules must be altered or rewritten for variant implementations.

As of 13 March 2025, the Python Package Index (PyPI), the official repository for
third-party Python software, contains over 614,339[120] packages.

Development environments
See also: Comparison of integrated development environments § Python
Most[which?] Python implementations (including CPython) include a read–eval–print
loop (REPL); this permits the environment to function as a command line interpreter,
with which users enter statements sequentially and receive results immediately.[121]

Also, CPython is bundled with an integrated development environment


(IDE) called IDLE,[122] which is oriented toward beginners.[citation needed]

Other shells, including IDLE and IPython, add additional capabilities such as
improved auto-completion, session-state retention, and syntax highlighting.[122][123]

Standard desktop IDEs include PyCharm, Spyder, and Visual Studio Code[124];there
are web browser-based IDEs, such as the following environments:

 Jupyter Notebooks, an open-source interactive computing platform;[125]


 PythonAnywhere, a browser-based IDE and hosting environment; and
 Canopy, a commercial IDE from Enthought that emphasizes scientific computing.
[126][127]

Implementations
See also: List of Python software § Python implementations
Reference implementation
CPython is the reference implementation of Python. This implementation is written in
C, meeting the C11 standard[128] since version 3.11. Older versions use
the C89 standard with several select C99 features, but third-party extensions are not
limited to older C versions—e.g., they can be implemented using C11 or C++.[129]
[130]
CPython compiles Python programs into an intermediate bytecode,[131] which is
then executed by a virtual machine.[132] CPython is distributed with a large standard
library written in a combination of C and native Python.

CPython is available for many platforms, including Windows and most modern Unix-
like systems, including macOS (and Apple M1 Macs, since Python 3.9.1, using an
experimental installer). Starting with Python 3.9, the Python installer intentionally fails
to install on Windows 7 and 8;[133][134] Windows XP was supported until Python 3.5, with
unofficial support for VMS.[135] Platform portability was one of Python's earliest
priorities.[136] During development of Python 1 and 2, even OS/2 and Solaris were
supported;[8] since that time, support has been dropped for many platforms.

All current Python versions (since 3.7) support only operating systems that feature
multithreading, by now supporting not nearly as many operating systems (dropping
many outdated) than in the past.

Limitations of the reference implementation

 The energy usage of Python with CPython for typically written code is much
worse than C by a factor of 75.88.[137]
 The throughput of Python with CPython for typically written code is worse than C
by a factor of 71.9.[137]
 The average memory usage of CPython for typically written code is worse than C
by a factor of 2.4.[137]
 What is Literacy rate?

 Literacy rate refers to the percentage of people who can read and write with

understanding in a given population.

 IMPORTANCE OF LITERACY

 • Improves quality of life

 •Reduces poverty

 •Promotes economic growth

 •Encourages social awareness

 Why is Kerela on top?


 Kerela has the highest literacy rate in India due to strong public education

system,government initiatives and social awareness.

You might also like