Chuyển đến nội dung chính

Hàm Python Print()

Tìm hiểu cách bạn có thể tận dụng khả năng của hàm Print đơn giản trong Python theo nhiều cách khác nhau với sự hỗ trợ của các ví dụ.
Đã cập nhật 5 thg 10, 2026  · 10 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Nếu bạn mới bắt đầu với Python và muốn học thêm, hãy tham gia khóa Introduction to Data Science in Python của DataCamp.

banner

Nhiều bạn, khi đọc tutorial này, có thể nghĩ rằng chẳng còn gì để khám phá về một hàm Print Python đơn giản, vì ai cũng bắt đầu học Python với ví dụ kinh điển in ra Hello, World!. Cũng đúng là trong Python hay bất kỳ ngôn ngữ lập trình nào, hàm Print là bước cơ bản nhất khi bạn học ngôn ngữ đó. Tuy nhiên, khi học một ngôn ngữ lập trình, đôi khi bạn tập trung vào các chủ đề nâng cao và nhiều lần quên đi những tinh tế hay khả năng của một hàm đơn giản mà bạn hầu như luôn dùng.

Trọng tâm của tutorial hôm nay sẽ hoàn toàn là hàm Print của Python; bạn sẽ tìm hiểu về hàm thường bị đánh giá thấp này.

Bắt đầu tutorial bằng cách in ví dụ Hello, World!.

print("Hello, World!")
Hello, World!

Khác với Python2, vốn không bắt buộc phải có dấu ngoặc, trong Python3 dấu ngoặc là bắt buộc, nếu không sẽ phát sinh lỗi cú pháp như dưới đây.

print "Hello, World!"
  File "<ipython-input-6-a1fcabcd869c>", line 1
    print "Hello, World!"
                        ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello, World!")?

Từ kết quả trên, bạn có thể kết luận rằng trong Python3, print() không phải là một câu lệnh mà là một hàm.

Nói vậy để xem type/class của hàm print() là gì.

type(print)
builtin_function_or_method

Nó trả về builtin_function_or_method, nghĩa là đây là một Python Function dựng sẵn (predefined/builtin).

Giờ giả sử bạn muốn thêm một dòng mới hay khoảng cách dọc giữa hai kết quả dưới đây, để làm vậy bạn chỉ cần gọi hàm print() mà không truyền đối số nào.

print("Hello, World!");print("Hello, World!")
Hello, World!
Hello, World!
print("Hello, World!")
print()
print("Hello, World!")
Hello, World!

Hello, World!

Hãy xem cú pháp của hàm print(). print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Như bạn đã biết, hàm print in các giá trị ra một stream, mặc định là sys.stdout. sys.stdout hay standard output của hệ thống nghĩa là hàm print sẽ in kết quả ra màn hình, và ta thậm chí có thể đổi sang stdin hoặc stderr.

Đối số từ khóa tùy chọn:

  • sep: Có thể là một chuỗi bạn muốn chèn giữa các giá trị, mặc định là khoảng trắng.

    Hãy đặt một danh sách từ vào hàm print và phân tách chúng bằng dòng mới. Nhớ rằng theo mặc định, bộ phân tách sẽ thêm khoảng trắng giữa mỗi từ.

print('datacamp','tutorial','on','python','print','function')
datacamp tutorial on python print function
print('datacamp','tutorial','on','python','print','function',sep='\n') #`\n` sẽ đặt mỗi từ trên một dòng mới
datacamp
tutorial
on
python
print
function

Tương tự, bạn có thể phân tách bằng dấu phẩy, hoặc thêm hai \n để có một dòng trống ở giữa, hoặc thậm chí thêm dấu cộng $(+)$.

print('datacamp','tutorial','on','python','print','function',sep=',')
datacamp,tutorial,on,python,print,function
print('datacamp','tutorial','on','python','print','function',sep='\n\n')
datacamp

tutorial

on

python

print

function
print('datacamp','tutorial','on','python','print','function',sep=',+')
datacamp,+tutorial,+on,+python,+print,+function

Trước khi chuyển sang đối số tiếp theo là end, nhớ rằng bạn cũng có thể truyền một biến vào hàm print. Để hiểu, hãy lấy ví dụ bằng cách định nghĩa một list số nguyên và truyền nó cho hàm print. Bạn kỳ vọng nó sẽ in danh sách số nguyên.

int_list = [1,2,3,4,5,6]
print(int_list)
[1, 2, 3, 4, 5, 6]
  • end: Là chuỗi được thêm sau giá trị cuối cùng, mặc định là ký tự xuống dòng. Nó cho phép lập trình viên định nghĩa ký tự kết thúc tùy chỉnh cho mỗi lần gọi print thay vì xuống dòng mặc định \n.

    Giả sử bạn có hai chuỗi và muốn ghép chúng với nhau bằng khoảng trắng, bạn chỉ cần trong lần gọi print đầu tiên của chuỗi str1 thêm đối số end với dấu nháy, và bạn có thể kỳ vọng hai chuỗi sẽ được nối bằng một khoảng trắng.

str1 = 'datacamp tutorial on'
str2 = 'python print function'
print(str1)
print(str2)
datacamp tutorial on
python print function
print(str1,end=' ')
print(str2)
datacamp tutorial on python print function

Lấy ví dụ khác khi bạn có một hàm với nhiệm vụ in tất cả giá trị trong một list trên cùng một dòng. Bạn có thể làm điều này với đối số end như dưới đây:

def value(items):
    for item in items:
        print(item, end=' ')
value([1,2,3,4])
1 2 3 4
  • file: Một đối tượng giống file (stream); mặc định là sys.stdout hiện tại. Ở đây bạn có thể chỉ định file mà bạn muốn ghi hoặc nối thêm (append) kết quả của hàm print.

    Dùng đối số file, bạn có thể lưu kết quả của hàm print vào file ở nhiều định dạng như .csv, .txt, v.v. Hãy hiểu bằng ví dụ trong đó bạn lặp qua từng phần tử của list. Kết quả được lưu vào một file văn bản. Để làm điều này, đầu tiên bạn sẽ mở file văn bản ở trạng thái append nơi bạn sẽ lưu kết quả của lệnh print. Tiếp đó, bạn định nghĩa hàm có kết quả sẽ được nối thêm vào file văn bản.

file = open('print.txt','a+')
def value(items):
    for item in items:
        print(item, file=file)
    file.close() # đóng file khi thực thi hàm hoàn tất.
value([1,2,3,4,5,6,7,8,9,10])

Sau khi hàm trên chạy xong, bạn sẽ thấy một file tên print.txt trong thư mục hiện tại. Hãy mở và xem nội dung của nó.

output

Từ kết quả trên, có thể thấy bạn còn có thể lưu kết quả ra file chứ không chỉ in trên terminal hay trong notebook.

  • flush: Xác định có buộc xả (flush) stream hay không. Mặc định là False.

    Thông thường, đầu ra tới file hoặc console được đệm (buffered), với văn bản ít nhất cho tới khi bạn in một ký tự xuống dòng (Nguồn). Bộ đệm nghĩa là đầu ra được lưu ở một dạng thanh ghi nào đó, nơi nó nằm trước khi sẵn sàng được lưu trữ hoặc khi file được đóng. Nhiệm vụ của flush là đảm bảo đầu ra đang được đệm sẽ đến đích một cách an toàn.

import time
print('Please enter your email-id : ', end=' ')
#print('Please enter your email-id : ', end=' ', flush=True) #chạy dòng này để thấy khác biệt và comment dòng trên.
time.sleep(5)
Please enter your email-id :  

Nếu bạn chạy các dòng code trên trong terminal, bạn sẽ thấy chuỗi nhắc không hiển thị cho đến khi bộ đếm ngủ kết thúc và chương trình thoát (Nguồn). Tuy nhiên, nếu thêm flush=True trong hàm print, bạn sẽ thấy lời nhắc trước, sau đó phải đợi 5 giây để chương trình kết thúc.

Bằng cách nào đó Jupyter Notebook hoặc Jupyter Lab xử lý việc này và hiển thị lời nhắc trước khi hết 5 giây, vì vậy nếu muốn kiểm thử chức năng này của print, hãy chạy trong terminal dòng lệnh chứ không phải trong jupyter notebook.

Giờ hãy xem cách bạn có thể dùng hàm print để lấy input từ người dùng trong jupyter notebook. Để làm việc này, bạn sẽ dùng hàm dựng sẵn input() của Python.

tutorial_topic = input()
print("The topic of today's tutorial is: ", end='')
print(tutorial_topic)
 Print Function


The topic of today's tutorial is: Print Function

Ngay khi chạy ô trên, bạn sẽ thấy kết quả như dưới đây:

output

Tại đây bạn đã định nghĩa một đối số có tên tùy chọn end mà bạn đã học trước đó, giúp nối câu tĩnh bên trong lệnh print với phần người dùng nhập vào.

Hãy xem vài cách hay hơn để in giá trị biến trong hàm print.

  • Để hiển thị giá trị của một biến cùng với chuỗi định sẵn, bạn chỉ cần thêm dấu phẩy giữa hai phần. Ở đây vị trí của chuỗi định sẵn và biến không quan trọng.
a = 2
b = "Datacamp"
print(a,"is an integer while",b,"is a string.")
2 is an integer while Datacamp is a string.
  • Bạn có thể dùng đối số format trong đó bạn có thể truyền bao nhiêu biến tùy thích để in. Khi truyền biến vào hàm format, bạn cần chỉ định số chỉ mục (thứ tự đặt trong đối số format) trong chuỗi định sẵn. Như vậy hàm print sẽ đóng vai trò là một mẫu (template) cho bạn.

    Một điều nữa cần nhớ là ở đây số chỉ mục được biểu diễn bằng cặp ngoặc nhọn {} đại diện cho placeholder.

    Hãy hiểu qua ví dụ dưới:

a = 2
b = "Datacamp"
print("{0} is an integer while {1} is a string.".format(a,b))
2 is an integer while Datacamp is a string.

Nếu bạn đặt số chỉ mục của biến thứ hai ở cả hai vị trí, như mong đợi, nó sẽ in cùng một giá trị, trong trường hợp này là biến b cho cả hai.

print("{1} is an integer while {1} is a string.".format(a,b))
Datacamp is an integer while Datacamp is a string.
  • Tương tự đối số format nơi hàm print của bạn đóng vai trò là template, bạn có thể dùng dấu phần trăm (%) để in giá trị các biến.

    Giống như đối số format, cách này cũng có khái niệm placeholder. Tuy nhiên, khác với hàm format nơi bạn chỉ truyền số chỉ mục, ở đây bạn còn cần chỉ định kiểu dữ liệu mà placeholder sẽ nhận.

    • %d dùng làm placeholder cho giá trị số hoặc thập phân.
    • %s dùng làm placeholder cho chuỗi.
a = 2
b = "Datacamp"
print("%d is an integer while %s is a string."%(a,b))
2 is an integer while Datacamp is a string.

Hãy xem điều gì xảy ra nếu bạn chỉ định %s cho biến a là số nguyên.

print("%s is an integer while %s is a string."%(a,b))
2 is an integer while Datacamp is a string.

Như bạn thấy ở ví dụ trên, nó vẫn hoạt động. Lý do là hàm Print đã ngầm thực hiện typecasting và chuyển số nguyên thành chuỗi. Tuy nhiên, chiều ngược lại thì không đúng. Nó sẽ không thể chuyển chuỗi thành số nguyên và sẽ dẫn đến TypeError.

Hãy kiểm chứng.

print("%d is an integer while %d is a string."%(a,b))
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-121-68c55041ecfe> in <module>
----> 1 print("%d is an integer while %d is a string."%(a,b))


TypeError: %d format: a number is required, not str

Kết luận

Chúc mừng bạn đã hoàn thành tutorial.

Tutorial này là điểm khởi đầu tốt cho người mới bắt đầu muốn thành thạo Python. Bạn có thể thử nghiệm thêm với hàm Print và khám phá vài chức năng nữa có thể chưa được đề cập trong tutorial này.

Vui lòng đặt câu hỏi liên quan đến tutorial này trong phần bình luận bên dưới.

Nếu bạn mới bắt đầu với Python và muốn học thêm, hãy xem khóa Introduction to Data Science in Python của DataCamp và Python Functions Tutorial.

Chủ đề
Python

Khóa học Python

Khóa học

Nhập môn Python

4 giờ
7.1M
Nắm vững phân tích dữ liệu với Python chỉ trong 4 giờ. Khóa học online này giúp bạn làm quen với giao diện Python và các thư viện phổ biến.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm