8.1 Toán tử return
Trong Python, toán tử return
đóng vai trò trọng tâm trong hàm,
bởi vì nó là cách hàm có thể trả về giá trị của mình. Hiểu cách sử dụng
toán tử này là rất quan trọng để phát triển phần mềm hiệu quả.
Toán tử return
kết thúc việc thực thi của hàm và "trả về"
kết quả cho mã gọi hàm. Nếu một hàm cần trả ra kết quả để sử dụng tiếp,
chúng ta sẽ dùng return
.
Trả về giá trị
Hàm có thể trả về bất kỳ kiểu dữ liệu nào, bao gồm số, chuỗi, đối tượng,
thậm chí cả hàm khác hoặc None
. Ví dụ:
def sum(a, b):
return a + b
result = sum(5, 3)
print(result) # In ra 8
Kết quả của a + b
có thể được gán vào biến result
.
Trả về nhiều giá trị
Python cho phép trả về nhiều giá trị từ một hàm bằng cách sử dụng tuple:
def get_user():
name = "Ivan"
age = 25
return name, age
user_name, user_age = get_user()
print(user_name, user_age) # In ra Ivan 25
Sử dụng return
để kết thúc hàm
Toán tử return
cũng có thể được sử dụng để kết thúc hàm ngay lập tức,
bao gồm cả trong vòng lặp hoặc các khối điều kiện bên trong hàm:
def check_password(pswd):
if len(pswd) < 8:
return "Mật khẩu quá ngắn"
return "Mật khẩu được chấp nhận"
return
không có giá trị
Nếu return
được sử dụng mà không có giá trị hoặc hoàn toàn bỏ qua,
hàm sẽ trả về None
:
def print_message(text):
print(text)
return
result = print_message("Xin chào")
print(result) # In ra None
Toán tử return
là một công cụ mạnh mẽ trong Python, giúp điều khiển
dòng chảy thực thi của chương trình một cách linh hoạt. Nó không chỉ cho phép
hàm trả về giá trị để sử dụng tiếp, mà còn kiểm soát logic thực thi,
giúp mã trở nên rõ ràng và dễ hiểu hơn.
8.2 Toán tử pass
Trong Python, có một toán tử đặc biệt — pass
, nó không làm gì cả.
Toán tử pass
được sử dụng như một placeholder trong khối mã
nơi cần có nội dung về mặt cú pháp, nhưng chức năng chưa được xác định (cần
có mã, nhưng chưa nghĩ ra mã gì).
Điều này đặc biệt hữu ích khi làm việc trên một dự án lớn và bạn muốn
tổ chức chương trình mà không thực hiện bất kỳ thao tác cụ thể nào.
Dưới đây là một số ví dụ sử dụng pass
.
Trong định nghĩa hàm:
def my_function():
pass
Ở đây, pass
được dùng để định nghĩa một hàm chưa có thực thi.
Trong vòng lặp và điều kiện:
for item in my_list:
pass
Nếu cần tạo một vòng lặp mà không cần thực hiện bất kỳ thao tác nào trong thân vòng lặp.
Trong class:
Định nghĩa một class không có phương thức và thuộc tính, để dành tên và cấu trúc của class cho việc sử dụng sau này.
Toán tử pass
thường được sử dụng trong quá trình phát triển và
kiểm thử khi cấu trúc chương trình đã rõ ràng, nhưng chi tiết thực hiện các thành phần
cụ thể vẫn chưa được xác định. Điều này cho phép lập trình viên tổ chức mã
và dần dần thêm chức năng mà không làm gián đoạn hoạt động tổng thể của ứng dụng.
8.3 Trả về hàm
Trong Python, khả năng một hàm trả về một hàm khác là một công cụ rất mạnh mẽ, nhờ vào việc hỗ trợ closure* và hàm bậc cao. Đặc điểm này của ngôn ngữ cho phép phát triển các chương trình linh hoạt và giàu biểu cảm, sử dụng các khái niệm như decorator* và factory function*.
Trong Python, các hàm là đối tượng, có nghĩa là chúng có thể được gán cho các biến, truyền vào các hàm khác dưới dạng tham số hoặc được trả về như kết quả. Điều này làm cho hàm trở thành công cụ rất mạnh mẽ để tạo mã nguồn module và dễ kiểm thử.
Hãy lấy ví dụ, chúng ta tạo một hàm, hàm này sẽ sinh ra các hàm để tính lũy thừa. Một hàm sẽ tính bình phương, hàm khác sẽ tính lũy thừa ba, v.v. Đây là cách mã có thể trông như sau:
def power(exponent):
def inner(base):
return base ** exponent
return inner
square = power(2)
print(square(3)) # In ra 9
cube = power(3)
print(cube(3)) # In ra 27
Lưu ý nhé — hàm power
không gọi
hàm inner
. Thay vào đó, bên trong hàm
power
có định nghĩa một hàm
inner
với tham số base
. Nhưng
hàm inner
không chỉ được định nghĩa, nó còn sử dụng tham số
exponent
bên trong.
GO TO FULL VERSION