Câu 1Đoạn code sau in gì?def f(x, y=10):
return x + y
print(f(3))
Định nghĩa hàm với def — Đối số, giá trị trả về, đối số mặc định và từ khóa
Học cách định nghĩa hàm với def trong Python: tham số, giá trị trả về với return, đối số mặc định và đối số từ khóa.
Khi cùng một logic cần chạy nhiều lần, bạn muốn một cách để đặt tên cho logic đó và gọi nó từ bất cứ đâu bạn cần. Cơ chế đó là hàm, được định nghĩa bằng từ khóa def.
Với hàm, logic chia sẻ sống ở một chỗ và mỗi điểm gọi là một dòng duy nhất. Mọi thứ bạn đã dùng đến giờ — print() / len() / int() / sum() — cũng đều là hàm.
Cơ bản về def và return
Định nghĩa hàm với def tên_hàm(đối số): và thụt lề thân. Trả về một giá trị cho bên gọi với return giá_trị. Một hàm không có return thực tế trả về None.
Đối số là thứ bên gọi đưa cho hàm, và giá trị trả về là thứ hàm gửi lại qua return. Vì cùng một hàm có thể được gọi với các đối số khác nhau cho các kết quả khác nhau, một định nghĩa duy nhất có thể cung cấp sức mạnh cho nhiều điểm gọi.
Một hàm được tạo bằng def không được thực thi bằng việc đăng ký trong namespace. Thân chỉ chạy khi có một lời gọi như greet("Minh") xảy ra — và giá trị của return chảy ngược về bên gọi.
# Không đối số, không giá trị trả về
def print_hello():
print("Hello World")
print_hello() # Hello World
# Hai đối số, một giá trị trả về
def max_num(a, b):
if a >= b:
return a
return b
result = max_num(30, 20)
print(result) # 30
# return thoát khỏi hàm; bất cứ thứ gì sau nó không chạy
def check(x):
if x < 0:
return "âm"
return "không âm"
print(check(-5)) # âm
Đối số mặc định và đối số từ khóa
Thêm = giá_trị vào một đối số đặt một giá trị mặc định được dùng khi bên gọi bỏ qua (đối số mặc định).
Ở phía gọi, tên_đối_số=giá_trị cho phép bạn truyền giá trị theo tên bất kể vị trí (đối số từ khóa). Đối số mặc định theo quy ước được đặt ở cuối danh sách đối số để thứ tự không còn quan trọng.
# Đưa greeting một giá trị mặc định
def greet(name, greeting="Xin chào"):
return f"{greeting}, {name}"
print(greet("Minh")) # Xin chào, Minh
print(greet("Linh", "Chào buổi sáng")) # Chào buổi sáng, Linh
print(greet(greeting="Chào buổi tối", name="Nam")) # đối số từ khóa có thể đổi thứ tự
# Kết quả: Chào buổi tối, Nam
Trong bài này bạn đã học định nghĩa hàm với def, giá trị trả về với return, và đối số mặc định và từ khóa. Khi bạn dùng hàm một cách thuần thục, cùng một logic có thể được gọi từ bất cứ đâu bao nhiêu lần tùy bạn, và khả năng đọc code cải thiện đáng kể.
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Lời gọi nào đang dùng đối số từ khóa?def greet(name, greeting="Hi"):
return f"{greeting}, {name}"
Câu 3Đoạn code sau sinh ra gì?def g(x):
x + 1 # không có return
result = g(10)
print(result)