0
0
Lập trình
Admin Team
Admin Teamtechmely

Khác Biệt Giữa Print và Return Trong Python

Đăng vào 7 tháng trước

• 4 phút đọc

Khác Biệt Giữa printreturn Trong Python

Viết một hàm Python có vẻ không làm gì cả? Đây là một lỗi phổ biến của người mới học và thường chỉ ra một sai lầm nhỏ nhưng quan trọng: nhầm lẫn giữa printreturn. Mặc dù cả hai đều có vẻ như “hiển thị một cái gì đó,” nhưng thực ra chúng thực hiện những nhiệm vụ hoàn toàn khác nhau.

Hãy hình dung như thế này: print giống như một chiếc đèn pin soi sáng khoảnh khắc hiện tại. Còn return giống như một ổ điện—nó cung cấp năng lượng mà bạn có thể sử dụng nhiều lần.

Khi bạn gọi print, Python đưa văn bản đến bảng điều khiển hoặc terminal của bạn. Đó là tất cả. Thực tế, hàm này vẫn trả về None.

python Copy
def greet():
    print("Chào, thế giới!")

result = greet()
print(result)   # None

Hàm greet() làm sáng màn hình với “Chào, thế giới!” nhưng để result trống rỗng.

print là cách giao tiếp với bạn, con người. Khi đã hiển thị, nó sẽ biến mất.

return Thực Sự Là Gì?

return trả một giá trị lại cho người gọi. Giá trị đó có thể được lưu trữ, truyền vào một hàm khác, hoặc tái sử dụng sau này.

python Copy
def make_greeting():
    return "Chào, thế giới!"

result = make_greeting()
print(result)   # Chào, thế giới!

Ở đây, make_greeting() không in ra gì cả. Nó trả về một chuỗi, và bây giờ bạn có quyền quyết định làm gì với nó—in ra, ghi vào file, hoặc chuyển tiếp trong chương trình của bạn.

Tại Sao Có Sự Nhầm Lẫn?

Một nguyên nhân lớn là shell tương tác (IDLE, Jupyter, REPL). Trong những môi trường đó, các giá trị trả về được tự động hiển thị trên màn hình.

python Copy
def add(x, y):
    return x + y

add(2, 3)  # hiển thị 5 trong shell

Chuyển sang print thay vì return và nó giống hệt:

python Copy
def add(x, y):
    print(x + y)

add(2, 3)  # in ra 5, nhưng trả về None

Nhưng ảo tưởng này sẽ bị vỡ ngay khi bạn tái sử dụng kết quả:

python Copy
result = add(2, 3)
print(result + 10)  # TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

Điều đó xảy ra vì resultNone.

Sử Dụng print Để Gỡ Lỗi: Tại Sao Nó Hữu Ích

print không phải là vô dụng—nó là một công cụ gỡ lỗi nhanh chóng và hiệu quả. Thêm nó vào mã của bạn để xem một biến trông như thế nào tại một thời điểm nhất định.

python Copy
def calculate_total(prices):
    total = sum(prices)
    print("DEBUG:", total)  # ảnh chụp mà không ảnh hưởng đến giá trị trả về
    return total

Bạn sẽ không giữ những dòng này trong mã sản xuất, nhưng khi bạn đang học (hoặc tìm kiếm một lỗi), print là một chiếc đèn pin rẻ tiền.

Nguyên Tắc Cơ Bản

  • Sử dụng print khi bạn muốn xem những gì đang xảy ra ngay bây giờ.
  • Sử dụng return khi hàm của bạn nên sản xuất một kết quả mà mã khác phụ thuộc vào.

Hoặc:

  • print = nói ra một cách công khai.
  • return = đưa ra một ghi chú bằng văn bản có thể thực hiện.

Một Ví Dụ Thực Tế

Hãy tưởng tượng bạn đang viết một hàm để tính thuế bán hàng:

python Copy
def calculate_tax(price):
    tax = price * 0.07
    print(tax)

Điều này có vẻ ổn trong quá trình kiểm tra—các con số xuất hiện trên màn hình. Nhưng khi bạn tích hợp nó:

python Copy
total = 100 + calculate_tax(100)

Nó sẽ gặp lỗi, vì calculate_tax trả về None.

Cách sửa?

python Copy
def calculate_tax(price):
    return price * 0.07

Bây giờ bạn có thể làm điều này:

python Copy
total = 100 + calculate_tax(100)
print(total)  # 107.0

Những Điều Cần Nhớ

Nắm vững sự khác biệt này là một bước ngoặt trong hành trình lập trình của bạn. Đây là cách bạn chuyển từ việc viết các đoạn mã chỉ nói chuyện với bạn, đến việc xây dựng các hàm mạnh mẽ, có thể tái sử dụng và giao tiếp với nhau.

Nhớ rằng:

  • print là cho bạn.
  • return là cho chương trình.

Khi điều này được hiểu, bạn đã mở khóa một trong những sự chuyển mình quan trọng nhất của Python.

Câu Hỏi Thường Gặp (FAQ)

1. Tại sao tôi không nên sử dụng print trong mã sản xuất?

print thường chỉ hữu ích trong quá trình phát triển. Trong môi trường sản xuất, bạn nên sử dụng các phương pháp gỡ lỗi khác như logging để theo dõi thông tin mà không làm rối loạn đầu ra người dùng.

2. Làm thế nào để tôi biết khi nào nên sử dụng print và khi nào nên sử dụng return?

Sử dụng print cho việc gỡ lỗi và kiểm tra nhanh, còn return cho các hàm cần cung cấp giá trị cho mã khác.

3. Có cách nào để làm cho việc gỡ lỗi dễ dàng hơn mà không cần print không?

Có, bạn có thể sử dụng các công cụ gỡ lỗi như pdb trong Python, cho phép bạn theo dõi mã và kiểm tra các giá trị mà không cần thêm các câu lệnh print.

4. Làm thế nào để tôi có thể cải thiện kỹ năng lập trình của mình?

Hãy thực hành thường xuyên, tham gia vào các dự án mã nguồn mở và đọc tài liệu cũng như sách về lập trình Python để nâng cao kỹ năng của bạn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào