Nói chung, kiểu dữ liệu của một biểu thức phụ thuộc vào kiểu của các đối số. Quy tắc này áp dụng cho hầu hết các toán tử: ví dụ khi cộng hai số nguyên, kết quả nên là số nguyên. Tuy nhiên, trong trường hợp phép chia, điều này không hoạt động tốt vì có hai kỳ vọng khác nhau. Đôi khi chúng ta kỳ vọng phép chia tạo ra số thực chính xác, và đôi khi chúng ta muốn kết quả nguyên làm tròn xuống.
Nói chung, định nghĩa Python của phép chia (/) phụ thuộc hoàn toàn vào các đối số. Ví dụ trong Python 2.7, chia 20/7 cho kết quả 2 vì cả hai đối số đều là số nguyên. Tuy nhiên, 20./7 sẽ cho ra 2.857142857142857 vì đối số là số thực.
Định nghĩa trên của '/' thường gây ra vấn đề cho các ứng dụng nơi kiểu dữ liệu được sử dụng mà tác giả không mong đợi.
Xét một chương trình đơn giản chuyển đổi nhiệt độ từ Celsius sang Fahrenheit sẽ cho hai kết quả khác nhau tùy thuộc vào đầu vào. Nếu một người dùng cung cấp đối số nguyên (18) và người khác cung cấp đối số thực (18.0), thì kết quả hoàn toàn khác nhau, dù tất cả các đầu vào có giá trị số bằng nhau.
# Chuyển đổi Celsius sang Fahrenheit trong Python 2.6
>>> print 18*9/5 + 32
64
>>> print 18.0*9/5 + 32
64.4
>>> 18 == 18.0
True
Từ trên ta thấy, khi truyền 18.0, ta nhận được kết quả đúng và khi truyền 18, ta nhận được kết quả sai. Hành vi này là do trong Python 2.x, toán tử "/" hoạt động như phép chia lấy phần nguyên (floor division) nếu tất cả các đối số là số nguyên. Tuy nhiên, nếu một trong các đối số là giá trị float, toán tử "/" trả về giá trị float.
Một hàm chuyển đổi rõ ràng (như float(x)) có thể giúp ngăn chặn điều này. Ý tưởng tuy nhiên là Python nên là ngôn ngữ đơn giản và tinh gọn, không cần nhiều chuyển đổi để cover trường hợp hiếm gặp của kiểu dữ liệu không mong đợi. Bắt đầu từ Python 2.2, một toán tử chia mới được thêm để làm rõ kỳ vọng. Toán tử / thông thường sẽ, trong tương lai, trả về kết quả số thực. Một toán tử chia đặc biệt, //, sẽ trả về kết quả làm tròn xuống.
>>> # Chương trình Python 2.7 minh họa sử dụng "//" cho cả số nguyên và số thực
>>> print 9//2
4
>>> print -9//2
-5
>>> print 9.0//2
4.0
>>> print -9.0//2
-5.0
Phép chia trong Python 3.x
Trong Python 3.x, các khuyết điểm trên đã được khắc phục và toán tử '/' thực hiện phép chia số thực cho cả đối số nguyên và số thực.
>>> # Chuyển đổi Celsius sang Fahrenheit trong Python 3.x
>>> # Truyền 18 (số nguyên)
>>> print(18*9/5 + 32)
64.4
>>> # Truyền 18.0 (số thực)
>>> print(18.0*9/5 + 32)
64.4
Cũng không có sự khác biệt khi truyền đối số dương hoặc âm.
>>> print(9/2)
4.5
>>> print(-9/2)
-4.5
>>> print(9.0/2)
4.5
>>> print(-9.0/2)
-4.5