30/09/2018, 20:35
Em có chút thắc mắc về hàm def trong python mong các pro giải đáp giúp
Cho chương trình sau;
def duchoang(a):
print a
return a
duchoang("Nguyen Duc Hoang")
Kết quả in ra chuỗi: Nguyen Duc Hoang
-------------------------------------------------
def duchoang(a):
return a
print a
duchoang("Nguyen Duc Hoang")
Kết quả in ra chuỗi: Rỗng (ko có gì)
-------------------------------------------------
E thắc mắc: Phải chăng câu lệnh return phải luôn đặt cuối cùng trong hàm (nguyên tắc phải vậy). Tại sao ở lần thử thứ 2 câu lệnh print đặt sau return lại không in ra kết quả. Chương trình hoạt động như thế nào trong cả 2 trường hợp. Mong các pro giải thích giúp mình, cảm ơn!
Bài liên quan
Đầu tiên để mình làm rõ cho bạn vài khái niêm:
def
(ine) ở đây không phải là hàm (function), mà nó là keyword giống nhưprint
,return
, … như trên. Mình muốn nói rõ, vì ở đây bạn đang xài python 2x nênprint
là keyword nhưng lên 3x nó là functiondef
, như tên gọi, sẽ giúp bạn tạo một hàm duchoang.Trong hàm không nhất thiết phải có
return
(tùy vào mục đích hàm đó là gì).return
có chức năng kết thúc hàm ngay lập tức và trả gía trị về caller. Như ví dụ trên của bạn thì callerduchoang("Nguyen Duc Hoang")
sẽ mang gía trị Nguyễn Đức Hoàng.Chương trình 1 của bạn in ra vì có
print
Chương trinh 2 của bạn không in ra vì
return
đã ngắt hàm trước khi chạmprint
Bạn thử
print(duchoang("Nguyen Duc Hoang"))
của 2 chương trình, xem kết qủa mình nghĩ nó sẽ giúp bạn hiểu hơn vềreturn
P/S1:
return
không phải lúc nào cũng đặt cuối cùng trong hàm.P/S2: Mình nghĩ bạn nên đọc manual, sách của python nhiều hơn, để kết hợp với việc học. Bởi vì những hướng dẫn trên lớp hay mạng đều tóm gọn không chi tiết để bạn hiểu sâu và đủ.
Cám ơn bạn. Bạn giải thích rất dễ hiểu.
Mình đang đọc một số code của python mà đau hết đầu bạn ah. Hàm lồng trong hàm, Mình phải thử từng hàm một xem nó có chức năng gì và giá trị thế nào. Rồi bắt đầu mới ghép lại để có thể hình dung về cách làm việc của toàn bộ chương trình. Đọc code như vậy có đúng ko bạn. Và sau một thời gian tìm hiểu sâu về python thì đọc code người khác viết có dễ hình dung hơn không bạn.
Cách tiếp cận của bạn là học chạy trước khi học đi. Bạn nên đọc tài liệu về lập trình Python để hiểu các khái niệm cơ bản của nó và thông qua những ví dụ nhỏ nhỏ kiểu bài tập cái đã. Còn không, cách bạn đang làm là bỗng nhiên lôi code Python ra đọc thì bạn đang làm việc “thầy bói xem voi”.
Cám ơn câu trả lời của bạn. Mình học được thêm 1 kiến thức mới