Bạn sẽ trả về một giá trị từ một hàm trong Python như thế nào?

- Lớn lên, mẹ bạn có thể yêu cầu bạn đi lấy thư nên bạn bỏ đi, nhận thư rồi mang về cho mẹ. Lần khác, có thể cô ấy nhờ bạn rửa bát nên bạn đi rửa bát, không có gì để mang về. Đó là loại giống như các chức năng chúng tôi đã tạo ra cho đến nay. Họ làm một số công việc và sau đó là nó. Nhưng khi bạn cần lấy lại thứ gì đó, giống như cách mẹ bạn mong đợi thư, bạn có thể sử dụng các hàm trả về giá trị. Hãy chuyển sang Mã VS để xem nó hoạt động. Ở đây, trên dòng số một, chúng tôi đã tạo một chức năng và nó được gọi là rút tiền. Nó đưa vào, hai tham số. Đầu tiên là số dư hiện tại. Điều này lưu trữ số tiền hiện tại mà bạn có trong tài khoản của mình. Tham số thứ hai được đặt tên là số tiền. Đây là số tiền mà bạn muốn rút. Sau đó, ở dòng thứ hai, chúng ta có câu lệnh if. Câu lệnh if kiểm tra để đảm bảo bạn có đủ tiền trong tài khoản để chi trả số tiền bạn muốn rút. Nếu đúng như vậy, thì chúng ta sẽ đến dòng thứ ba, nơi chúng ta cập nhật số dư hiện tại bằng một số phép trừ đơn giản. Chúng tôi lấy số dư hiện tại và chúng tôi trừ đi số tiền. Và cuối cùng, ở dòng số 4, chúng ta in ra số dư hiện tại bằng cách sử dụng biến thể này của hàm in. Ở đây trên dòng số sáu, chúng tôi thực hiện cuộc gọi đến chức năng rút tiền. Chúng tôi vượt qua 100 cho số dư hiện tại và 80 cho số tiền. Hãy chạy chức năng để kiểm tra đầu ra. Và như bạn mong đợi, số dư là 20. Bây giờ, giả sử sau khi rút tiền, chúng tôi muốn kiểm tra số dư mới sau trong chương trình của mình để xem liệu chúng tôi có cần gửi tiền hay không. Đây là nơi trả về một giá trị từ chức năng của chúng tôi có ích. Trong Python, khi tạo một hàm bằng câu lệnh def, bạn có thể chỉ định giá trị trả về sẽ bằng câu lệnh return. Câu lệnh return bao gồm từ khóa return và giá trị mà hàm sẽ trả về. Hãy nhớ rằng, Python có hơn 30 từ khóa mà nó sử dụng để thực hiện các hành động đặc biệt. Return là một trong những từ khóa đó. Chúng tôi cần thực hiện một vài thay đổi để tận dụng lợi thế của từ khóa trả về. Điều đầu tiên chúng tôi sẽ làm là ở dòng số ba, chúng tôi sẽ nhấn Enter và sau đó chúng tôi sẽ trả về số dư hiện tại. Chúng tôi sẽ sử dụng từ khóa return để làm điều đó, vì vậy chúng tôi sẽ chỉ nhập return và sau đó là số dư gạch dưới hiện tại. Thay đổi tiếp theo chúng ta cần thực hiện là sao chép câu lệnh in này và xóa nó bên ngoài chức năng của chúng ta. Vì chúng ta sẽ sử dụng nó sau, nên đừng xóa nó hoàn toàn. Chúng tôi sẽ chỉ cắt và loại bỏ dòng thừa đó. Được rồi, tuyệt, chúng ta sắp hoàn thành. Đến dòng thứ sáu, vì chúng ta muốn sử dụng giá trị cho lần sau, chúng ta cần lưu trữ nó bên trong một biến. Để làm điều đó, chúng tôi sẽ đi đến đầu dòng và chúng tôi sẽ tạo một biến mà chúng tôi gọi là số dư. Và chúng ta sẽ sử dụng dấu bằng để gán cho nó giá trị từ hàm của chúng ta. Điều cuối cùng chúng tôi muốn làm là thêm if-else để kiểm tra và xem liệu chúng tôi có cần gửi tiền hay không. Vì vậy, bên dưới lời gọi hàm này, hãy tạo câu lệnh if của chúng ta. Chúng tôi sẽ kiểm tra xem số dư có nhỏ hơn 50 không. Sau đó, chúng tôi sẽ nói, chúng tôi cần gửi tiền. Nếu không, chúng tôi sẽ in ra, không có gì để xem ở đây và thế là xong. Hãy lưu tệp của chúng tôi và sau đó chạy mã này. Hoàn hảo, chúng tôi nhận được một tin nhắn, chúng tôi cần gửi tiền. Đó là bởi vì biến số dư của chúng tôi hiện có giá trị là 20, vì vậy chúng tôi nằm trong câu lệnh if của mình và nó cho chúng tôi biết rằng chúng tôi cần gửi tiền. Có thể trả về các giá trị từ các hàm là nền tảng của lập trình. Tôi nóng lòng muốn xem những gì bạn có thể xây dựng với sức mạnh mới này

Tải xuống các khóa học và học mọi lúc, mọi nơi

Xem các khóa học trên thiết bị di động của bạn mà không cần kết nối internet. Tải xuống các khóa học bằng ứng dụng LinkedIn Learning trên iOS hoặc Android của bạn

Hầu hết các hàm đều yêu cầu đối số, giá trị kiểm soát cách thức thực hiện công việc của hàm. Ví dụ muốn tìm giá trị tuyệt đối của một số thì phải chỉ ra số đó là gì. Python có chức năng tích hợp để tính giá trị tuyệt đối

Trong ví dụ này, các đối số của hàm

def addEm[x, y, z]:
    print[x + y + z]
4 là 5 và -5

Một số hàm nhận nhiều hơn một đối số. Ví dụ: mô-đun toán học chứa một hàm có tên là

def addEm[x, y, z]:
    print[x + y + z]
5, hàm này nhận hai đối số, cơ số và số mũ

Ghi chú

Tất nhiên, chúng ta đã thấy rằng việc nâng cơ số lên số mũ có thể được thực hiện bằng toán tử **

Một hàm tích hợp khác nhận nhiều hơn một đối số là

def addEm[x, y, z]:
    print[x + y + z]
6

def addEm[x, y, z]:
    print[x + y + z]
6 có thể được gửi bất kỳ số lượng đối số nào, được phân tách bằng dấu phẩy và sẽ trả về giá trị tối đa được gửi. Các đối số có thể là các giá trị hoặc biểu thức đơn giản. Trong ví dụ trước, 503 được trả về vì nó lớn hơn 33, 125 và 1. Lưu ý rằng
def addEm[x, y, z]:
    print[x + y + z]
6 cũng hoạt động trên danh sách các giá trị

Hơn nữa, các hàm như

def addEm[x, y, z]:
    print[x + y + z]
9,
def addEm[x, y, z]:
    print[x + y + z]
0,
def addEm[x, y, z]:
    print[x + y + z]
4 đều trả về các giá trị có thể được sử dụng để xây dựng các biểu thức phức tạp hơn

Vì vậy, một điểm khác biệt quan trọng giữa các hàm này và một hàm như

def addEm[x, y, z]:
    print[x + y + z]
0 là
def addEm[x, y, z]:
    print[x + y + z]
0 không được thực thi vì chúng tôi muốn nó tính toán một giá trị — ngược lại, chúng tôi đã viết
def addEm[x, y, z]:
    print[x + y + z]
0 vì chúng tôi muốn nó thực hiện một chuỗi các bước khiến con rùa vẽ một

Hàm trả về giá trị đôi khi được gọi là hàm hiệu quả. Trong nhiều ngôn ngữ khác, một đoạn không trả về giá trị được gọi là thủ tục, nhưng chúng tôi sẽ gắn bó ở đây với cách Python gọi nó là một hàm hoặc nếu chúng tôi muốn nhấn mạnh nó, một hàm không hiệu quả

Các chức năng hiệu quả vẫn cho phép người dùng cung cấp thông tin [đối số]. Tuy nhiên, hiện tại có thêm một phần dữ liệu được trả về từ hàm

Làm thế nào để chúng ta viết chức năng hiệu quả của riêng mình? . Hàm bình phương sẽ lấy một số làm tham số và trả về kết quả bình phương số đó. Đây là sơ đồ hộp đen với mã Python sau

Câu lệnh return được theo sau bởi một biểu thức được đánh giá. Kết quả của nó được trả về cho người gọi là “kết quả” của việc gọi hàm này. Vì câu lệnh return có thể chứa bất kỳ biểu thức Python nào nên chúng ta có thể tránh tạo biến tạm thời

def addEm[x, y, z]:
    print[x + y + z]
4 và chỉ cần sử dụng
def addEm[x, y, z]:
    print[x + y + z]
5. Hãy thử sửa đổi hàm vuông ở trên để thấy rằng hàm này hoạt động giống nhau. Mặt khác, việc sử dụng các biến tạm thời như
def addEm[x, y, z]:
    print[x + y + z]
4 trong chương trình trên giúp việc gỡ lỗi dễ dàng hơn. Các biến tạm thời này là ví dụ về các biến cục bộ, được theo dõi thêm trong phần tiếp theo

Chú ý một cái gì đó quan trọng ở đây. Tên của biến chúng ta truyền dưới dạng đối số —

def addEm[x, y, z]:
    print[x + y + z]
7 — không liên quan gì đến tên của tham số hình thức —
def addEm[x, y, z]:
    print[x + y + z]
8. Như thể
def addEm[x, y, z]:
    print[x + y + z]
9 được thực thi khi
def addEm[x, y, z]:
    print[x + y + z]
3 được gọi. Không quan trọng giá trị được đặt tên trong trình gọi là gì. Trong
def addEm[x, y, z]:
    print[x + y + z]
3, nó tên là
def addEm[x, y, z]:
    print[x + y + z]
8. Bạn có thể thấy điều này rất rõ ràng trong codelens, trong đó các biến toàn cục [các biến được xác định bên ngoài bất kỳ hàm nào] và các biến cục bộ cho hàm bình phương nằm trong các hộp riêng biệt

Khi bạn xem qua ví dụ trong codelens, hãy lưu ý rằng câu lệnh return không chỉ khiến hàm trả về một giá trị mà còn trả lại luồng điều khiển trở lại vị trí trong chương trình nơi thực hiện lệnh gọi hàm. điều này đúng nói chung

Ghi chú

Lời gọi hàm kết thúc sau khi thực hiện câu lệnh return. Điều này khá rõ ràng nếu câu lệnh return là câu lệnh cuối cùng trong hàm, nhưng sau này chúng ta sẽ thấy việc có một câu lệnh return ngay cả khi các câu lệnh khác theo sau và các câu lệnh tiếp theo không được thực hiện ở đâu là hợp lý

Hoạt động. MãLens 6. 2. 5 [ch04_clsquare]

Một điều quan trọng khác cần lưu ý khi bạn bước qua phần trình diễn codelens này là chuyển động của các mũi tên màu đỏ và xanh lục. Codelens sử dụng các mũi tên này để chỉ cho bạn nơi nó hiện đang được thực thi. Nhớ lại rằng mũi tên màu đỏ luôn trỏ đến dòng mã tiếp theo sẽ được thực thi. Mũi tên màu xanh nhạt chỉ đến dòng vừa được thực hiện ở bước cuối cùng

Khi bạn bắt đầu chạy trình diễn codelens này lần đầu tiên, bạn sẽ nhận thấy rằng chỉ có một mũi tên màu đỏ và nó trỏ đến dòng 1. Điều này là do dòng 1 là dòng tiếp theo được thực thi và vì nó là dòng đầu tiên nên không có dòng mã nào được thực thi trước đó

Khi click vào nút Forward bạn để ý mũi tên đỏ di chuyển đến dòng 5 bỏ qua dòng 2 và 3 của hàm [và mũi tên xanh nhạt hiện đã xuất hiện ở dòng 1]. Tại sao lại thế này? . Dòng 2 và 3 sẽ không được thực thi cho đến khi hàm được gọi ở dòng 6. Dòng 1 định nghĩa hàm và tên

def addEm[x, y, z]:
    print[x + y + z]
3 được thêm vào các biến toàn cục, nhưng đó là tất cả những gì mà
def addEm[x, y, z]:
    print[x + y + z]
44 làm tại thời điểm đó. Phần thân của hàm sẽ được thực hiện sau. Tiếp tục nhấp vào nút chuyển tiếp để xem luồng điều khiển di chuyển như thế nào từ lệnh gọi, sao lưu đến phần thân của hàm, rồi cuối cùng quay lại dòng 7, sau khi hàm đã trả về giá trị của nó và giá trị đã được gán cho
def addEm[x, y, z]:
    print[x + y + z]
45

Cuối cùng, có một khía cạnh nữa của các giá trị trả về của hàm cần được lưu ý. Tất cả các hàm Python trả về giá trị

def addEm[x, y, z]:
    print[x + y + z]
46 trừ khi có một câu lệnh trả về rõ ràng có giá trị khác với giá trị
def addEm[x, y, z]:
    print[x + y + z]
47 Hãy xem xét lỗi phổ biến sau đây của những người mới bắt đầu lập trình Python. Khi bạn xem qua ví dụ này, hãy chú ý đến giá trị trả về trong danh sách các biến cục bộ. Sau đó xem nội dung được in khi hàm trả về

Hoạt động. MãLens 6. 2. 6 [ch04_clsquare_bad]

Vấn đề với chức năng này là mặc dù nó in giá trị của hình vuông, nhưng giá trị đó sẽ không được trả về nơi thực hiện lệnh gọi. Vì dòng 6 sử dụng giá trị trả về làm vế phải của câu lệnh gán, nên việc đánh giá hàm sẽ là

def addEm[x, y, z]:
    print[x + y + z]
46. Trong trường hợp này,
def addEm[x, y, z]:
    print[x + y + z]
45 sẽ tham chiếu đến giá trị đó sau câu lệnh gán và do đó kết quả được in ở dòng 7 là không chính xác. Thông thường, các hàm sẽ trả về các giá trị mà người gọi có thể in hoặc xử lý theo cách khác

Làm cách nào để trả về một giá trị từ hàm này sang hàm khác trong Python?

Để lấy giá trị từ một hàm trong bất kỳ ngôn ngữ lập trình nào, chúng ta sử dụng câu lệnh return[] . Tương tự như vậy, trong Python, câu lệnh return[] được sử dụng để thoát khỏi một hàm và trả về một giá trị từ một hàm.

Chúng ta có thể trả về hàm từ hàm trong Python không?

Khoa học dữ liệu thực tế sử dụng Python . Định nghĩa các chức năng trong các chức năng khác và chức năng trả về đều có thể. Python may return functions from functions, store functions in collections such as lists and generally treat them as you would any variable or object. Defining functions in other functions and returning functions are all possible.

Chủ Đề