Python ord Function
Last modified April 11, 2025
This comprehensive guide explores Python's ord function, which
returns the Unicode code point of a character. We'll cover ASCII values,
Unicode handling, and practical examples of character encoding.
Basic Definitions
The ord function returns an integer representing the Unicode
code point of a character. It's the inverse of chr function.
Key characteristics: accepts a single character string (length 1), returns an integer between 0 and 1,114,111 (0x10FFFF in base 16). Raises TypeError for invalid inputs.
Basic ASCII Usage
Here's simple usage with ASCII characters showing how ord
returns their numeric values.
# Uppercase letters
print(ord('A')) # 65
print(ord('B')) # 66
# Lowercase letters
print(ord('a')) # 97
print(ord('b')) # 98
# Digits
print(ord('0')) # 48
print(ord('9')) # 57
# Special characters
print(ord(' ')) # 32 (space)
print(ord('!')) # 33
This example shows ord with common ASCII characters. The values
match standard ASCII encoding where 'A' is 65, 'a' is 97, and '0' is 48.
Note that uppercase and lowercase letters have different code points, with lowercase letters having higher values than their uppercase counterparts.
Unicode Characters
ord works with any Unicode character, not just ASCII. This
example demonstrates with various Unicode symbols.
# Common symbols
print(ord('€')) # 8364 (Euro sign)
print(ord('¥')) # 165 (Yen sign)
# Emoji
print(ord('😊')) # 128522 (Smiling face)
# Chinese character
print(ord('中')) # 20013
# Mathematical symbols
print(ord('∑')) # 8721
These examples show ord with Unicode characters beyond ASCII.
The function returns their unique code points in the Unicode standard.
This demonstrates Python's full Unicode support, where each character has a unique numeric identifier regardless of language or symbol type.
Error Handling
The ord function raises TypeError when used
incorrectly. This example shows common error cases.
try:
print(ord('')) # Empty string
except TypeError as e:
print(f"Error: {e}") # ord() expected a character, but string of length 0 found
try:
print(ord('ab')) # String longer than 1 character
except TypeError as e:
print(f"Error: {e}") # ord() expected a character, but string of length 2 found
try:
print(ord(65)) # Not a string
except TypeError as e:
print(f"Error: {e}") # ord() expected string of length 1, but int found
These examples demonstrate ord's strict input requirements.
It only accepts single-character strings and rejects all other input types.
Proper error handling is important when processing user input that will be
passed to ord to avoid program crashes.
Character Analysis
This example shows how ord can be used to analyze character
properties like case, digit status, or special characters.
def char_info(c):
code = ord(c)
print(f"Character: {c}")
print(f"Code point: {code}")
print(f"Uppercase: {65 <= code <= 90}")
print(f"Lowercase: {97 <= code <= 122}")
print(f"Digit: {48 <= code <= 57}")
print(f"Control char: {code < 32 or code == 127}")
char_info('A')
char_info('z')
char_info('5')
char_info('\n')
This function uses ord to get a character's code point and
then checks various ranges to determine its properties.
Such analysis is useful for text processing, validation, or implementing custom character classification logic beyond Python's built-in methods.
Custom Encoding Conversion
This example demonstrates using ord to convert text to
custom numeric representations.
def text_to_codes(text, base=16):
return [hex(ord(c)) if base == 16 else str(ord(c)) for c in text]
print(text_to_codes("Hello")) # ['0x48', '0x65', '0x6c', '0x6c', '0x6f']
print(text_to_codes("Python", 10)) # ['80', '121', '116', '104', '111', '110']
def create_cipher_key(text):
return {c: ord(c) * 2 for c in text}
print(create_cipher_key("secret")) # {'s': 230, 'e': 202, 'c': 198, 'r': 216, 't': 232}
The first function converts text to hexadecimal or decimal code points. The second creates a simple cipher key by doubling each character's value.
These examples show practical applications of ord in text
processing, encoding, and simple cryptography operations.
Best Practices
- Validate input length: Ensure strings are length 1 before passing to ord
- Combine with chr: Use ord/chr pairs for character transformations
- Handle Unicode: Remember ord works with all Unicode characters
- Document encoding: Clarify if working with ASCII or Unicode values
- Error handling: Catch TypeError when processing unknown input
Source References
Author
List all Python tutorials.