Bất kỳ chương trình máy tính nào cũng phải có chức năng input/output (I/O function) nhằm mục đích giao tiếp với những phần bên ngoài (phần cứng, database, file,…). Hàm print() là một trong những hàm thực hiện chức năng output xuất dữ liệu ra màn hình hoặc ghi dữ liệu vào file và được định nghĩa như sau:
import sys
def print(*objects, sep=None, end=None, file=None, flush=False):
"""A Python translation of the C code for builtins.print().
"""
if sep is None:
sep = ' '
if end is None:
end = '\n'
if file is None:
file = sys.stdout
file.write(sep.join(map(str, objects)) + end)
if flush:
file.flush()
Do đó, cú pháp đầy đủ để gọi hàm print là:
print(*objects, sep=’ <chuỗi ngăn cách>’, end='<chuỗi kết thúc>’, file=<object nhận kết quả>, flush=<True/False>)
- objects – chữ “s” số nhiều có nghĩa là bắt buộc phải có ít nhất 01 object chứa dữ liệu để xuất. Nếu muốn xuất dữ liệu của nhiều objects cùng lúc thì mỗi objects cách nhau bằng dấu phẩy “,”. Mỗi objects có thể là số, chuỗi, kiểu thời gian, list, tuple hoặc biến chứa các loại dữ liệu đó.
- sep – là chuỗi dùng để ngăn cách giữa các objects. Mặc định là khoảng trắng
' ' - end – chuỗi cuối cùng được in sau khi in hết objects. Mặc định là “\n” (xuống dòng)
- file – object dạng file nhận kết quả xuất ra. mặc định là
sys.stdoutlà xuất kết quả ra màn hình. - flush – Default value: False mỗi lần thực thi hàm print() nếu gặp ký tự xuống dòng “\n” thì sẽ in ra màn hình. Nếu khai báo flush = true, in ra màn hình sau mỗi lần thực thi hàm print(). Flush chỉ có tác dụng khi cần in kết quả trên cùng 1 hàng tại nhiều thời điểm khác nhau. Tính năng này không có nhiều lợi ích nên ít khi dùng và không hiểu cũng không sao.
Chú ý: nếu đọc ở đâu đó thấy trong code python người ta viết là print “abcd” (không có dấu ngoặc đơn). Thì code đó đang được viết bằng python 2.x và print ở đây đang được dùng là lệnh, không phải hàm. Python 3.x đã bỏ hẳn lệnh này và chỉ có hàm print.
Lại thêm hỏi khó, vậy hàm và lệnh khác nhau chỗ nào. Trả lời luôn là lệnh thì phải đúng cú pháp, hàm thì được sử dụng linh hoạt. Ví dụ trường hợp muốn in dãy số từ 1 đến 4 thì python 3.x có thể viết:
[print(x) for x in range(0,5)]
Nếu dùng python 2.x viết
[print x for x in range(0,5)]
sẽ bị báo lỗi “invalid syntax” vì chẳng có lệnh nào [print … cả.
Ví dụ 1:
print(“Hello Python”)
Câu lệnh này tương đương với
print(“Hello Python”, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
Trong đó objects là chuỗi “Hello Python”
Kết quả trên màn hình sẽ xuất hiện chữ “Hello Python” như hình dưới

Ví dụ 2: in nhiều objects cùng lúc
print(“Hello”,”Python”)
Câu lệnh này sẽ cho ra kết quả giống như ví dụ 1. Vì mặc định giữa 2 object là dấu khoảng trắng.

Ví dụ 3: tùy chỉnh thông số sep
print(“Hello”,”Python”,sep=”\_/”)

Kết quả lần này đã có sự khác biệt, giữa “Hello” và “Python” có chuỗi “\_/”
Ví dụ 4: tùy chỉnh thông số end
print(“Hello”)
print(“Python”,end=” “)
print(“Dòng này được in cùng dòng Python”)

Ở hàm in đầu tiên, mặc định end = “\n” nên sau khi in dòng Hello sẽ xuống hàng để in tiếp dòng Python. Tuy nhiên lần này, do đã cài chuỗi kết thúc end = ” ” (dấu khoảng trắng) nên hàm in kế tiếp sẽ không xuống dòng.
Ví dụ 5:
import time
print(“Hello”,end=” “)
time.sleep(5)
print(“Python”)
ở hàm print(“Hello”,end=” “), do kết thúc không phải là ký tự xuống dòng và mặc định flush = Flase nên sau khi thực hiện vẫn không thấy kết quả. Chỉ đến khi kết thúc hàm print(“Python”), màn hình mới in ra cả câu “Hello Python”.
import time
print(“Hello”,end=” “,flush=True)
time.sleep(5)
print(“Python”)
Lần này, chữ Hello sẽ được in trước, đợi 5 giây sau in tiếp chữ Python.
Ví dụ 6: in ra file

Kết quả là chương trình sẽ mở file python.txt trong cùng thư mục để ghi nội dung. Nếu file này chưa tồn tại sẽ tạo file mới. Kết thúc là thông báo “finished”. Trong ví dụ này, có hàm open() dùng để tạo/mở file sẽ được trình bày trong bài kế tiếp. Hàm print() chỉ làm nhiệm vụ ghi nội dung vào file được tạo/mở.