What Is New in Python 1.0
Python 1.0 was the first official stable release of Python, formalized from the earlier 0.9.x series that Guido van Rossum had been developing since 1989. Python 1.0 established the core language: exception handling with try/except, modules, classes with inheritance, basic data types (lists, tuples, dicts, strings), and a standard library grounding the "batteries included" philosophy. This release set the template for everything that followed.
| Category | Feature | Notes |
|---|---|---|
| Language | Exception handling: try/except/finally |
Structured error handling from the start |
| Language | Classes and single inheritance | Old-style classes (not unified with built-in types) |
| Language | First-class functions -- functions as objects | Assignable, passable, storable |
| Language | Core data types: list, tuple, dict, str, int, float |
Dynamic typing from day one |
| Language | Modules and the module import system | Each .py file is a module |
| Language | Dynamic typing with duck typing semantics | "If it walks like a duck" -- behavior over type |
| Language | Indentation-based block structure | No braces; whitespace is semantically significant |
| Language | *args -- variable positional arguments |
Accept arbitrary number of positional arguments |
| Standard Library | os, sys, math, string, time, io modules |
"Batteries included" from day one |
| Standard Library | Basic socket and networking support | Low-level BSD socket API |
| Standard Library | Regular expressions via regex module |
Replaced by re in later versions |
The Design Philosophy Established in Python 1.0
Readability as a Core Principle
From version 1.0, Python's design was guided by the principle that code is read more often than it is written. The use of meaningful whitespace (indentation-based blocks instead of braces), English-like keywords, and the requirement for explicit rather than implicit operations were all present from day one.
First-Class Functions
Functions in Python 1.0 were full objects -- they could be assigned to variables, passed as arguments, and returned from other functions. This enabled higher-order programming patterns before most mainstream languages supported them.
def square(x):
return x * x
def apply(func, value):
return func(value)
result = apply(square, 5) # 25
Exception Handling from the Start
Python's try/except mechanism was present from 1.0 -- not bolted on later. This made Python unusual among scripting languages of its era (Perl, Tcl) which had more limited or inconsistent error handling models.
try:
result = 10 / x
except ZeroDivisionError:
print("Cannot divide by zero")
except TypeError as e:
print(f"Type error: {e}")
finally:
print("Always executed")
Dynamic Typing and Duck Typing
Python has always been dynamically typed -- variables do not have types, only values do. And Python uses duck typing: if an object has the right methods and attributes, it is usable in any context that requires those methods, regardless of its formal type. isinstance() checks exist but are often unnecessary and sometimes considered non-Pythonic.
The Origin of Python
Python was conceived by Guido van Rossum in December 1989 as a successor to the ABC language. Guido was working at CWI (Centrum Wiskunde & Informatica) in Amsterdam and wanted a language that addressed ABC's limitations while keeping its clarity and ease of learning. Python was named after Monty Python's Flying Circus, not the snake. The first public release was 0.9.0 in February 1991. By version 1.0 in 1994, Python had grown into a complete, pragmatic language ready for real-world use.
FAQ
Why was Python designed with significant whitespace?
Guido van Rossum wanted to make code structure visually obvious and enforce a single style. In languages with braces, teams regularly argued about brace placement and indentation style. Python eliminates this class of debate entirely -- indentation is the structure. The result is that Python code by different authors looks more similar than code in most other languages.
What language was Python's primary inspiration?
ABC was the strongest influence -- Python kept ABC's use of indentation and its emphasis on simplicity. Guido also took inspiration from Modula-3 (module system), C (some syntax), Lisp (first-class functions, later lambda), and Unix shell scripting (the interactive REPL experience). Python 1.0 was already a synthesis of ideas from many sources.
Can Python 1.0 code run on Python 3?
Most simple Python 1.0 code would run on Python 3 with minor fixes -- mainly replacing the print statement with print() function, fixing integer division, and updating except Exception, e to except Exception as e. Code using old-style classes or the string module functions would need more changes. The semantic foundations are the same.
What was the relationship between ABC and Python?
ABC was an imperative programming language also developed at CWI, designed for teaching and interactive use. Guido worked on ABC's implementation and liked its ideas but found it too inflexible for practical use -- it could not be extended or integrated with other systems easily. Python was designed from the start to be extensible (C extension modules) and practical, while keeping ABC's readability goals.
When did Python get its "batteries included" description?
The phrase "batteries included" was popularized during the Python 2.x era to describe the philosophy that Python ships with a rich standard library covering most common needs. But the practice was established from Python 1.0 -- the original release included os, sys, string, math, time, socket, and CGI modules. Guido wanted users to be productive without having to hunt for third-party packages for basic tasks.