‫Chào mừng trở lại.
‫Trong video này, tôi muốn nói về một khái niệm quan trọng, đó là sự trở lại.
‫Đó là một từ khóa trong Python mà chúng ta sẽ thấy rất nhiều khi làm việc với các hàm.
‫Vì vậy, chúng ta hãy xem xét.
‫Nếu giả sử tôi muốn tạo một hàm gọi là sum, thì nhân tiện, hàm này đã tồn tại trong Python, nhưng chúng tôi
‫sẽ tạo hàm của riêng mình và tôi sẽ nói số một cho số một.
‫Và số hai, hàm sum của chúng ta sẽ thêm num một cộng với num hai, một hàm đẹp và đơn giản.
‫Bây giờ nếu tôi chạy một số với số bốn và năm, hãy đoán xem điều gì sắp xảy ra?
‫Tôi sẽ đánh run.
‫Và không có gì xảy ra, ý tôi là, có thể không gây ngạc nhiên cho bạn bởi vì chúng tôi không in bất cứ thứ gì.
‫Đúng.
‫Nhưng nếu tôi chạy in ở đây thì sao?
‫Chà, sự thay đổi này.
‫Hãy xem nào.
‫Hừ!
‫Tôi không nhận được gì.
‫Đó có phải là những gì bạn mong đợi?
‫Và chúng ta chưa từng thấy trước đây, phải không?
‫Ý tôi là, hãy nhớ khi chúng ta có một danh sách, hãy nói một, hai, ba, và sau đó chúng ta đã làm một điều gì đó giống
‫như rõ ràng về nó.
‫Trong ED của chúng tôi.
‫Nó đã đưa cho chúng tôi mũi tên nhỏ này và không nói gì cả.
‫Và chúng tôi đã nói về ý tưởng về danh sách này, chẳng hạn như thay đổi rõ ràng danh sách thực tế và xóa mọi thứ
‫và làm trống danh sách, nhưng nó không trả lại danh sách mới.
‫Nó chỉ sửa đổi danh sách hiện có, nhưng thay vào đó, không trả về cho chúng tôi.
‫Vâng, các chức năng chỉ là như vậy.
‫Họ luôn phải trả lại một thứ gì đó và khi họ không trả lại bất kỳ thứ gì giống như không có từ khóa trả lại ở
‫đây, nó sẽ tự động trả về không có gì.
‫Vì vậy, nếu chúng ta không có thứ gì đó giống như trở lại đây, nó sẽ luôn không trả lại gì cả.
‫Nhưng nếu chúng ta thêm lợi nhuận, nó sẽ nói ngay khi chúng ta đến dòng thứ hai.
‫Chào.
‫Tôi muốn bạn thoát khỏi chức năng này.
‫Và khi bạn thoát khỏi chức năng này, tôi muốn bạn trả về bất cứ điều gì mà biểu thức này cung cấp cho chúng ta.
‫Nếu tôi bấm Chạy.
‫Tôi nhận được chín?
‫Nếu chúng ta thay đổi giá trị này thành mười cộng với năm, chúng ta nhận được 15.
‫Và đây là một quy tắc chung tốt với các hàm, bởi vì các hàm có thể làm được hai điều, đúng không.
‫Một, nó có thể trả lại một cái gì đó.
‫Vì vậy, ở cuối hàm, bất cứ điều gì, sau khi hàm được chạy, chúng ta trả về một thứ gì đó
‫hoặc không hoặc một số loại giá trị, một số loại dữ liệu hoặc chúng ta có thể có một hàm không trả về bất kỳ
‫thứ gì nhưng có thể sửa đổi thứ gì đó.
‫Vì vậy, ví dụ, tôi có thể in.
‫Chào.
‫Và nếu tôi đã chạy ở đây.
‫Tôi không trả lại vì tôi không có báo cáo trả lại đó.
‫Tuy nhiên, hàm của tôi thực hiện một cái gì đó sửa đổi.
‫Chà, giao diện của văn bản này phải không?
‫Nó in lời chào cho chúng tôi.
‫Vì vậy, một hàm hoặc sửa đổi một cái gì đó trong chương trình của chúng tôi hoặc trả về một cái gì đó.
‫Và đây là một chủ đề khá nâng cao mà chúng ta sẽ đề cập sau này khi chúng ta nói về
‫lập trình hàm.
‫Nhưng một nguyên tắc chung với các hàm là đây là một hàm nên làm một việc thực sự tốt.
‫Và thường thì một hàm sẽ trả về một cái gì đó.
‫Bây giờ, điều này không có nghĩa là bất kỳ hàm nào có thể thực hiện nhiều việc hoặc bất kỳ hàm nào không trả
‫về điều gì đó là xấu.
‫Nhưng thông thường, bạn nên làm cho mã của bạn đơn giản và dễ đọc để có hai quy tắc này.
‫Ví dụ, ở đây, nếu tôi có in và thêm, thì, chức năng này đang thực hiện nhiều việc.
‫Nó đang lo lắng về việc in ấn và nó cũng đang lo lắng về điều gì đó.
‫Và định nghĩa.
‫Hàm này được gọi là tổng.
‫Ý tôi là, nếu tôi không biết hoặc tôi không nhìn thấy điều này và tất cả những gì tôi làm là chạy một số.
‫Tôi nghĩ rằng việc in ấn cao sẽ là một điều đáng ngạc nhiên bởi vì cái tên không thực sự mô tả những gì nó làm.
‫Ý tôi là, tôi đang mong đợi điều này được tổng kết.
‫Tại sao chương trình của tôi nói xin chào?
‫Vì vậy, chúng tôi muốn đảm bảo rằng hàm của chúng tôi thực hiện tốt một việc và một việc duy nhất, bởi vì như chúng ta sẽ thấy
‫ở phần sau, chúng ta có thể kết hợp và chạy các hàm khác nhau cùng nhau.
‫Và sau đó, chúng tôi cũng muốn đảm bảo rằng chúng tôi trả về một cái gì đó bởi vì theo cách này những gì chúng tôi có thể
‫làm là chúng tôi thực sự có thể gán giá trị trả về này cho một biến.
‫Ví dụ, tôi có thể nói tổng bằng tổng mười.
‫Năm.
‫Và bởi vì hàm này trả về một cái gì đó và khi nó hoàn tất, việc chạy sẽ có giá trị là 15.
‫Đó là điều tương tự như những gì chúng tôi đang làm ở đây.
‫Và đây là phần thú vị.
‫Bây giờ tôi có thể chạy tổng cộng khoảng mười.
‫Bây giờ chúng ta hãy đi qua cái này từng cái một.
‫Tôi xác định chức năng của mình, trình thông dịch python sẽ nói, Được rồi, tôi biết một số là gì.
‫Bây giờ bạn đã xác định nó.
‫Tôi sẽ giữ nó trong bộ nhớ.
‫Nó sẽ tiếp tục, tiếp tục cho đến dòng thứ bảy và nó sẽ nói,
‫Này, tôi muốn một tổng biến và tôi muốn tổng biến đó bằng một số mười lăm.
‫Và trước khi chúng tôi chỉ định bất cứ điều gì cho tổng số python, thông dịch viên sẽ nói một số.
‫Những gì một số một lần nữa.
‫Ồ, tôi nhớ ở đây nó đang ở trong bộ nhớ OC ở một số tôi sẽ đưa ra các đối số 10 và 5 cho nó.
‫Vì vậy, nó sẽ chạy chức năng đó.
‫Ngay sau khi chúng ta kết thúc dấu ngoặc đóng này, nó sẽ đi vào phần tổng.
‫Nó sẽ nói, hey, num một sẽ bằng mười, hey num hai sẽ bằng năm.
‫Bây giờ chúng ta chuyển sang dòng hai và nó sẽ nói, Này, tôi muốn bạn thêm mười cộng với năm vì tôi biết những biến
‫này là gì.
‫Và khi bạn đã hoàn thành việc đó và con số này chuyển thành 15 tuổi, tôi muốn bạn quay trở lại.
‫Vì vậy, trình thông dịch Python, cuối cùng, khi gọi xong một số sẽ nói, này, hãy gán giá
‫trị 15 cho tổng biến và sau đó nó sẽ chuyển sang dòng tiếp theo.
‫Này, tôi muốn in một cái gì đó.
‫Bạn muốn in gì?
‫Tôi muốn in cái này.
‫Nó sẽ nói, này, một số là gì?
‫Tôi biết một số là gì.
‫Tôi có nó trong bộ nhớ.
‫Và sau đó một lần nữa, nó sẽ nói mười.
‫Và sau đó đối số tiếp theo sẽ là toàn bộ.
‫Này, hãy tổng.
‫Hãy để tôi đi vào trí nhớ và tìm hiểu xem, nó đã 15 rồi.
‫Vì vậy, nó giống như nói 15.
‫Và đây là sức mạnh của các chức năng, phải không?
‫Tôi có thể trả về mọi thứ và gán chúng cho các biến và gọi chúng như thế này.
‫Và tôi có thể tiếp tục chạy chúng nếu tôi muốn làm nếu tôi muốn làm cho việc này đơn giản hơn nữa, tôi có thể đi một số
‫thay vì toàn bộ sẽ có ngay tại đây.
‫Và nhìn vào đó.
‫Bây giờ tôi có tất cả trong một dòng và nếu tôi nhấp vào Chạy.
‫Lại.
‫Nó vẫn hoạt động.
‫Được chứ.
‫Nhưng nếu chúng ta làm điều gì đó như thế này thì sao?
‫Điều gì sẽ xảy ra nếu tôi nói định nghĩa một số và sau đó tôi sẽ nói định nghĩa bên trong đây một số khác.
‫Hàm và hàm này nhận num một và num hai.
‫Và ở đây, chúng tôi cuối cùng đã trở lại, số một.
‫Và số hai.
‫Hừ!
‫Hãy kiểm tra điều này.
‫Bạn nghĩ điều gì sẽ xảy ra?
‫Đầu tiên, giả sử tổng số bằng một số mười cộng với 20.
‫Và sau đó tôi sẽ in tổng số.
‫Nếu tôi bấm Chạy.
‫Tôi không nhận được gì.
‫Hiện nay.
‫Tại sao vậy?
‫Và điều này hẳn bạn đã rõ, bởi vì ở đây tôi đang nói, này, tôi muốn bạn xác định một số và chúng
‫ta sẽ làm gì với hàm?
‫Một số tốt, bên trong đây tôi sẽ định nghĩa một hàm khác, nhưng câu lệnh trả về này thực
‫sự không chạy đúng.
‫Bởi vì tất cả những gì chúng ta đang làm bên trong khối này, khối mã này.
‫Là phần này.
‫Chúng tôi đang xác định hàm, nhưng chúng tôi không bao giờ gọi một hàm khác.
‫Vì vậy, điều này không trả về.
‫Và chúng tôi đã mất khả năng gọi hàm này.
‫Vì vậy, làm thế nào chúng ta có thể giải quyết điều này?
‫Một cách là quay trở lại, phải không?
‫Vì vậy, ở phần cuối ở đây, chúng ta phải đảm bảo rằng thụt lề đúng và chúng ta sẽ trả về một
‫func khác.
‫Vì vậy, hãy thêm return và xem điều gì sẽ xảy ra ở đây.
‫Nếu tôi bấm Chạy.
‫Được rồi, tôi nhận được chức năng này ngay bây giờ.
‫Vì vậy, Total sẽ bằng với hàm này mà chúng ta đã trả về và nó nằm trong bộ nhớ.
‫Được chứ.
‫Nhưng tôi không nhận được kết quả mà tôi muốn.
‫Đúng.
‫Và tại sao lại như vậy?
‫Tại vì.
‫Chà, chúng tôi không gọi hàm này.
‫Vì vậy, có một số cách mà chúng tôi có thể làm điều này.
‫Chúng ta có thể cung cấp cho nó các tham số hoặc các đối số trong đây.
‫Vì vậy, giả sử 1020 và nếu tôi nhấp vào Chạy.
‫Tôi nhận được 30 hoặc nếu chúng tôi muốn giữ lại bất cứ thứ gì chúng tôi đưa cho nó ở đây, tôi chỉ có thể nói một cách đơn giản là một chức năng khác.
‫Vì vậy, nếu chúng tôi cho nó số một và số hai và tôi nhấp vào chạy.
‫Này, nhìn này.
‫Tôi nhận được 30.
‫Bây giờ, bạn có thể phải xem đi xem lại video này vì nó khiến đầu óc bạn căng ra một chút.
‫Và thành thật mà nói, chức năng này không tốt lắm vì nó tốt, nó rất khó hiểu.
‫Chức năng của bạn phải dễ hiểu.
‫Vì vậy, chúng tôi có thể muốn thay đổi điều này một chút, có thể thay vì ở đây có các tên tham số giống nhau.
‫Chỉ để làm rõ nó.
‫Có lẽ chúng ta có thể nói một và hai.
‫Và sau đó ở đây chúng tôi thực hiện và một cộng và hai để làm rõ rằng khi chúng tôi trả về, hàm khác này, tôi đang sử dụng
‫các tham số num một và số hai mà chúng tôi đã gọi ở đây.
‫Bởi vì định nghĩa này của một hàm không thực sự quan tâm những thứ này là gì.
‫Nó chỉ quan tâm khi một hàm khác được gọi.
‫Bây giờ, nếu bạn cần tạm dừng video và xem xét điều này và có thể thực hành điều này một chút, điều đó
‫hoàn toàn có thể hiểu được.
‫Nhưng tôi muốn cho bạn thấy sức mạnh của sự trở lại.
‫Bạn có thể có các hàm lồng nhau giống như bạn có thể làm với các điều kiện, nhưng bạn phải cẩn thận rằng
‫hàm của bạn hoặc trả về một cái gì đó, nếu không thì nó sẽ không trả về.
‫Và hầu hết thời gian bạn sẽ muốn trả về một cái gì đó từ một hàm để chúng ta có thể làm điều gì đó như thế
‫này, nơi chúng ta gán nó cho một biến để chúng ta có thể sử dụng nó sau này trong các chương trình của mình.
‫Hẹn gặp lại các bạn trong phần tiếp theo.
‫Tạm biệt.
‫Một điều cuối cùng.
‫Từ khóa return sẽ tự động thoát khỏi chức năng để ở đây nếu tôi thêm một đoạn mã khác như
‫print.
‫Xin chào.
‫Hoặc thậm chí có thể có năm trở lại ở đây.
‫Bạn thấy rằng nó vẫn còn giá trị.
‫Nhưng nếu tôi chạy cái này.
‫Tôi vẫn nhận được 30 vì trình thông dịch không bao giờ đến dòng năm và dòng sáu, bởi vì ngay sau khi chúng ta trả
‫về một cái gì đó từ một hàm, nó sẽ thoát khỏi hàm đó.
‫Và lý do mà phần này không thoát khỏi hàm là vì hãy nhớ rằng, bên trong hàm này chúng ta
‫đang định nghĩa.
‫Vì vậy, chúng tôi không thực sự chạy phần này.
‫Chúng tôi chỉ nói, này, khi chúng tôi thấy một hàm khác xuất hiện trong mã của chúng tôi, chúng tôi biết nó là gì,
‫nhưng chúng tôi sẽ không chạy nó.
‫Vì vậy, nó sẽ trông như thế này.
‫Và ngay khi nó nhìn thấy câu lệnh return, khi nó được gọi, nó sẽ nói,
‫được rồi, tôi đang thoát khỏi hàm này với giá trị này.
‫Chỉ cần hướng lên một chút.