Python (ngôn ngữ lập trình)
Cú pháp > Kiểu dữ liệu

Python sử dụng định kiểu vịt (duck typing) và có các đối tượng có kiểu nhưng tên biến thì không có kiểu. Giới hạn về kiểu không được kiểm tra trong lúc biên dịch; thay vào đó. các thao tác lên một đối tượng có thể thất bại, chỉ ra rằng đối tượng đó không thuộc vào kiểu dữ liệu phù hợp. Tuy là định kiểu động, Python cũng là định kiểu mạnh khi không cho phép các thao tác không được định nghĩa rõ ràng (chẳng hạn như cộng một số vào một xâu) thay vì lặng lẽ cố gắng diễn giải thao tác đó.
Python cho phép các lập trình viên định nghĩa các kiểu của riêng mình bằng cách sử dụng lớp, thường được dùng trong lập trình hướng đối tượng. Các hiện thể của một lớp thường được tạo ra bằng cách gọi lớp đó (chẳng hạn như SpamClass() hay EggsClass()), các lớp lại là hiện thể của siêu lớp type (bản thân nó cũng là một hiện thể của chính nó), cho phép siêu lập trình và phản xạ.
Trước phiên bản 3.0, Python có hai loại lớp là kiểu cũ và kiểu mới. Cú pháp của cả hai kiểu đều giống nhau. Sự khác biệt nằm ở chỗ lớp đó có kế thừa từ lớp object một cách trực tiếp hoặc gián tiếp hay không (tất cả các lớp kiểu mới đều kế thừa từ object và là hiện thể của type). Từ phiên bản Python 2.2 trở đi, cả hai loại lớp đều có thể được sử dụng. Lớp kiểu cũ đã bị loại bỏ trong Python 3.0.
Kế hoạch dài hạn là hỗ trợ định kiểu dần dần và từ Python 3.5, cú pháp của ngôn ngữ này cho phép chỉ rõ các kiểu tĩnh nhưng chúng lại không được kiểm tra trong bản triển khai mặc định, CPython. Một trình kiểm tra kiểu tĩnh đang trong quá trình thử nghiệm và tuỳ chọn tên là mypy có hỗ trợ kiểm tra kiểu trong thời gian biên dịch.
| Kiểu | Thay đổi được | Mô tả | Ví dụ cú pháp |
| --- | --- | --- | --- |
| bool | không | Kiểu dữ liệu luận lý | TrueFalse |
| bytearray | có | Chuỗi các byte nối tiếp | bytearray(b'Some ASCII')bytearray(b"Some ASCII")bytearray([119, 105, 107, 105]) |
| bytes | không | Chuỗi các byte nối tiếp | b'Some ASCII'b"Some ASCII"bytes([119, 105, 107, 105]) |
| complex | không | Số phức với phần thực và phần ảo | 3+2.7j3 + 2.7j |
| dict | có | Mảng liên kết (hay từ điển) các cặp khoá và giá trị; có thể chứa lẫn lộn nhiều kiểu (khoá và giá trị), khoá phải là loại băm được | {'key1': 1.0, 3: False}{} |
| ellipsis | không | Một kiểu giữ chỗ chấm lửng được dùng như một chỉ số trong một mảng NumPy | ...Ellipsis |
| float | không | Số phẩy động độ chính xác đôi. Độ chính xác phụ thuộc vào từng máy nhưng trên thực tế thì nó thường được triển khai là một số IEEE 754 64-bit với độ chính xác là 53 bit. | 1.33333 |
| frozenset | không | Tập hợp không được sắp xếp, không chứa các giá trị giống nhau; có thể chửa lẫn lộn nhiều kiểu, nếu băm được | frozenset([4.0, 'string', True]) |
| int | không | Số nguyên với độ lớn không giới hạn | 42 |
| list | có | Danh sách, có thể chứa lẫn lộn nhiều kiểu | [4.0, 'string', True][] |
| NoneType | không | Một đối tượng đại diện cho sự không có mặt của dữ liệu, tương đương với null trong các ngôn ngữ khác | None |
| NotImplementedType | không | Một kiểu giữ chỗ có thể được trả lại từ toán tử nạp chồng để biểu thị kiểu toán hạng không được hỗ trợ. | NotImplemented |
| range | không | Một chuỗi các số thường được dùng để lặp với số lần biết trước trong vòng lặpfor | range(-1, 10)range(10, -5, -2) |
| set | có | Tập hợp không được sắp xếp, không chứa các giá trị giống nhau; có thể chửa lẫn lộn nhiều kiểu, nếu băm được | {4.0, 'string', True}set() |
| str | không | Một xâu ký tự (string): chuỗi các điểm mã Unicode | 'Wikipedia'"Wikipedia""""Trải dài trên nhiều dòng"""  |
| tuple | không | Bộ; có thể chứa lẫn lộn nhiều kiểu | (4.0, 'xâu kí tự', True)('phần tử',)() |
^a Không thể được truy cập trực tiếp bằng tên