print() chỉ hiển thị ra console. return gửi giá trị trở lại cho caller, và kết thúc hàm ngay lập tức (dù không phải dòng cuối).
Ví dụ: Return value được dùng tiếp
def foo():
print("Hello from within foo")
return 2
def bar():
return 10 * foo() # Dùng giá trị trả về của foo()
print(foo()) # In 2, in "Hello..."
print(bar()) # In 20, in "Hello..." (foo() được gọi lại)
Đầu ra
Hello from within foo 2 Hello from within foo 20
Giải thích
- Khi
foo()được gọi từbar(), giá trị2không in ra console mà được nhân 10. - Chỉ khi dùng
print(foo())thì giá trị mới hiển thị.
Fruitful vs Void Functions
- Fruitful functions: Trả về giá trị có nghĩa (có
return expr). - Procedures (void functions): Chỉ thực hiện hành động, trả về
None.
Return sớm (Early return)
def process(data):
if not data:
return None # Thoát sớm
# Xử lý phức tạp...
return result
Best practice: Dùng return để truyền dữ liệu, không lạm dụng print để "trả về" kết quả.