It is not practical to write a full server or desktop OS in Python.
However there are Python interpreters which can run without an OS on
microcontrollers and similar tiny machines, such as MicroPython:
Different Python interpreters use different garbage collection, but in
general, no, you cannot manage memory manually. The CPython interpreter
uses two garbage collection tactics, a reference counter which is always
on, and a second GC for detecting cycles, which can be disabled.
Most Python interpreters include a compiler which pre-compiles the
source code to byte-code before running it. The byte-code runs in a
The CPython interpreter generates byte-code for its own unnamed
IronPython generates byte-code for the .Net CLR;
Jython generates byte-code for the Java JVM;
PyPy includes a powerful Just In Time compiler which can, for
carefully constructed examples, generate code as efficient or more so
Nuitka translates Python code to C calls, which can then be compiled:
The line between system programming languages and application
programming languages is a blurry one, but usually Python is considered
to be an application or scripting language, not a system language.
Python is mostly used as:
an application and scripting language;
a glue language, for gluing together libraries written in C or
Fortran; this includes calling numeric libraries;
a rapid application development language for prototyping;
etc. See the FAQs for further information, starting here: