Chúng ta có thể trả lại giá trị từ khối ngoại trừ trong python không?

Để 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. Trong hướng dẫn này, chúng ta sẽ đọc về nhiều cách khác nhau để sử dụng các câu lệnh return[] trong Python

Mục lục

  1. Giới thiệu về câu lệnh return[]
  2. Trả về nhiều giá trị trong Python
  3. Đối số trong hàm return[]
  4. Hàm trả về một hàm khác
  5. Bớt tư tưởng

trả về [] bằng Python

Câu lệnh return[], giống như trong các ngôn ngữ lập trình khác, kết thúc lời gọi hàm và trả về kết quả cho người gọi. Nó là một thành phần quan trọng trong bất kỳ hàm hoặc phương thức nào trong mã bao gồm từ khóa trả về và giá trị sẽ được trả về sau đó.
Một số điểm cần nhớ khi sử dụng return[].

  • Các câu lệnh sau câu lệnh return[] không được thực thi
  • không thể sử dụng câu lệnh return[] bên ngoài chức năng
  • Nếu câu lệnh return[] không có bất kỳ biểu thức nào, thì giá trị NONE được trả về

Cú pháp return[] trong Python


        def func_name[]:
        statements....


        return [expression]
    

Sử dụng câu lệnh return[] để trả về nhiều giá trị trong Python

Python cũng cung cấp tùy chọn trả về nhiều giá trị từ một hàm và để làm điều đó, người dùng chỉ cần thêm nhiều giá trị trả về được phân tách bằng dấu phẩy. Còn được gọi là một tuple, có thể được tạo có hoặc không sử dụng dấu []

Đầu vào


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    

Ở đây, hàm statFun[] cung cấp cho các giá trị và bằng cách sử dụng tuple, chúng tôi trả về cả hai giá trị

đầu ra


        8
        20
    

return[] trong Python với một đối số

Trong Python, các đối số có thể được sử dụng với câu lệnh trả về. Để bắt đầu, đối số là tham số do người dùng cung cấp và như chúng ta biết, đối số là [các] giá trị đầu vào do người dùng cung cấp cho hàm

Đầu vào


        def divNum[a, b]:
            if b != 0
                return a/b;
        else:
            return 0;

        print [divNum[4, 2]]
        print [divNum[2, 0]] 
    

Ở đây, hàm divNum[] chấp nhận hai đối số và nếu đối số thứ hai khác 0 thì nó sẽ chia hai đối số này, ngược lại trả về 0.

đầu ra


        2
        0
    

Hàm trả về một hàm khác trong Python

Như chúng ta đã biết, các hàm được coi là đối tượng hạng nhất trong Python, do đó chúng ta có thể trả về một hàm từ một hàm khác. Đối tượng hạng nhất là một đối tượng có thể được gán cho một biến, được truyền dưới dạng đối số cho hàm hoặc được sử dụng làm giá trị trả về trong hàm.
Hàm nhận một hàm làm đối số, kết quả trả về một hàm hoặc cả hai được gọi là hàm bậc cao.

Đầu vào


        def func_1[a]:
            def func_2[b]:
                return a-b
            return func_2

        x = func_1[100]
        print ["The value of a-b is", x[50]]

        def another_func[a]:
            return a*10

        def func[]:
            return another_func

        y = func[]
        print ["\nThe value of a*b is" y[10]]
    

Đầu ra.


        The value of a-b is 50
        The value of a*b is 100
    

Bớt tư tưởng

Câu lệnh return gửi bất kỳ đối tượng nào từ hàm trở lại mã người gọi. Vì câu lệnh return là một phần quan trọng của bất kỳ hàm hoặc phương thức nào, nếu bạn học cách sử dụng nó đúng cách, bạn có thể chuyển sang các mã phức tạp. Mọi người có thể tìm hiểu thêm về các khái niệm Python tại đây

Các khối

        2
        0
    
4 &

        2
        0
    
5 không hoàn toàn đơn giản như mọi người nghĩ, đặc biệt là khi chúng đang trả về các giá trị từ một hàm. Để biết thêm những mẩu tin thú vị như vậy, hãy theo dõi tôi qua Twitter. Các takeaways từ bài viết này là

Câu trả lời đúng sẽ phụ thuộc vào mục tiêu của logic ứng dụng của bạn. Bạn muốn đảm bảo mã Python của mình không bị lỗi một cách thầm lặng, giúp bạn và đồng đội của mình không phải tìm kiếm các lỗi cố thủ

Đây là sự khác biệt giữa

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 và
if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
1 khi xử lý lỗi trong Python

Khi nào nuôi

Câu lệnh

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 cho phép lập trình viên buộc một ngoại lệ cụ thể xảy ra. [số 8. 4 Tăng ngoại lệ]

Sử dụng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 khi bạn biết mình muốn một hành vi cụ thể, chẳng hạn như


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
1

Việc đưa ra một ngoại lệ sẽ chấm dứt luồng chương trình của bạn, cho phép ngoại lệ nổi lên ngăn xếp cuộc gọi. Trong ví dụ trên, điều này sẽ cho phép bạn xử lý rõ ràng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
4 sau này. Nếu
if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
4 không được xử lý, quá trình thực thi mã sẽ dừng lại và bạn sẽ nhận được thông báo ngoại lệ chưa được xử lý

Raise rất hữu ích trong trường hợp bạn muốn xác định một hành vi nhất định sẽ xảy ra. Ví dụ: bạn có thể chọn không cho phép một số từ nhất định trong trường văn bản

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]

Raise lấy một thể hiện của một ngoại lệ hoặc một dẫn xuất của lớp Ngoại lệ. Đây là tất cả các ngoại lệ tích hợp sẵn của Python

Raise có thể giúp bạn tránh viết các hàm bị lỗi âm thầm. Ví dụ: mã này sẽ không đưa ra ngoại lệ nếu

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
6 không tồn tại


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
6

Để làm cho chức năng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
7 thực sự bị phá sản, hãy thêm một
if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
9

Bất cứ khi nào mã của bạn tương tác với một biến, mô-đun hoặc dịch vụ bên ngoài, đều có khả năng xảy ra lỗi. Bạn có thể sử dụng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 trong câu lệnh

        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
60 để giúp đảm bảo những thất bại đó không diễn ra trong im lặng

Nâng cao trong

        2
        0
    
4 và

        2
        0
    
7

Để xử lý một lỗi có thể xảy ra bằng cách thực hiện một hành động nếu có, hãy sử dụng câu lệnh


        2
        0
    
4 …

        2
        0
    
7


        8
        20
    
2

Điều này cho phép bạn


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
65 trước khi tăng lại ngoại lệ. Nếu bạn muốn tuyên truyền một ngoại lệ bị bắt, hãy sử dụng
if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 mà không có đối số để tránh khả năng mất dấu vết ngăn xếp

Nếu bạn không biết rằng ngoại lệ sẽ là một


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
67, bạn cũng có thể sử dụng một

        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
68 trần hoặc bắt bất kỳ dẫn xuất nào của lớp

        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
69 với

        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
90. Bất cứ khi nào có thể, tốt hơn hết là nêu ra và xử lý các ngoại lệ một cách rõ ràng

Sử dụng


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
91 để mã thực thi nếu

        2
        0
    
4 không đưa ra ngoại lệ. Ví dụ


        def divNum[a, b]:
            if b != 0
                return a/b;
        else:
            return 0;

        print [divNum[4, 2]]
        print [divNum[2, 0]] 
    
0

Bạn cũng có thể đặt dòng in trong khối


        2
        0
    
4, tuy nhiên, điều này ít rõ ràng hơn

Khi nào trở lại

Khi bạn sử dụng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
1 trong Python, bạn đang trả lại một giá trị. Một hàm trả về vị trí mà nó được gọi từ đó

Mặc dù lỗi

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 trong Python mang tính thành ngữ hơn, nhưng có thể có những trường hợp bạn thấy
if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
1 có thể áp dụng được nhiều hơn

Ví dụ: nếu mã Python của bạn đang tương tác với các thành phần khác không xử lý các lớp ngoại lệ, bạn có thể muốn trả lại một thông báo thay thế. Đây là một ví dụ sử dụng câu lệnh


        2
        0
    
4 …

        2
        0
    
7


        def divNum[a, b]:
            if b != 0
                return a/b;
        else:
            return 0;

        print [divNum[4, 2]]
        print [divNum[2, 0]] 
    
4

Lưu ý rằng khi bạn trả về một đối tượng lớp


        def statFun[a, b]:
        difference = a-b
        percent_diff = [difference/a]*100
        return difference, percent_diff;


        difference, percent_diff = statFun[]
        print [difference]
        print [percent_diff]
    
69, bạn sẽ nhận được một đại diện cho giá trị được liên kết của nó, thường là mục đầu tiên trong danh sách các đối số của nó. Trong ví dụ trên, đây là giải thích chuỗi ngoại lệ. Trong một số trường hợp, nó có thể là một bộ với thông tin khác về ngoại lệ

Bạn cũng có thể sử dụng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
1 để đưa ra một đối tượng lỗi cụ thể, chẳng hạn như với

        8
        20
    
21 trong Django. Ví dụ: bạn có thể muốn trả lại một

        8
        20
    
22 thay vì một

        8
        20
    
23 vì lý do bảo mật


        2
        0
    
0

Sử dụng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
1 có thể giúp bạn viết mã ồn phù hợp khi chức năng của bạn dự kiến ​​sẽ trả về một giá trị nhất định và khi tương tác với các phần tử bên ngoài

Phần quan trọng nhất

Lỗi thầm lặng tạo ra một số lỗi khó chịu nhất cần tìm và sửa. Bạn có thể giúp tạo trải nghiệm phát triển thú vị cho bản thân và nhóm của mình bằng cách sử dụng

if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
0 và
if "raisins" in text_field:
    raise ValueError["That word is not allowed here"]
1 để đảm bảo rằng các lỗi được xử lý trong mã Python của bạn

Tôi viết về các phương pháp phát triển tốt và cách cải thiện năng suất với tư cách là nhà phát triển phần mềm. Bạn có thể nhận những mẹo này ngay trong hộp thư đến của mình bằng cách đăng ký bên dưới

Chúng ta có thể trả về giá trị ngoại trừ trong Python không?

Hành vi trả về với try/ngoại trừ trong Python . Python định nghĩa try/ngoại trừ để xử lý các ngoại lệ và tiếp tục thực hiện chương trình tiếp theo mà không bị gián đoạn. User code can raise built-in exceptions. Python defines try/except to handle exceptions and proceed with the further execution of program without interruption.

Chúng ta có thể quay lại khối Python cuối cùng không?

Bạn sẽ nhận thấy rằng python luôn trả về giá trị cuối cùng được trả về, bất kể mã "đạt" trả về 1 trong cả hai hàm. Khối cuối cùng luôn được chạy, vì vậy thứ cuối cùng được trả về trong hàm là bất cứ thứ gì được trả về trong khối cuối cùng .

Bạn có thể quay lại và tăng ngoại lệ Python không?

Là nhà phát triển Python, bạn có thể chọn ném ngoại lệ nếu có điều kiện xảy ra. Để ném [hoặc tăng] một ngoại lệ, hãy sử dụng từ khóa tăng .

Tôi có thể để trống khối except trong Python không?

Bỏ qua một ngoại lệ cụ thể bằng cách sử dụng pass trong khối except là hoàn toàn tốt trong Python. Tuy nhiên, việc sử dụng ngoại lệ trống [không chỉ định loại ngoại lệ] không . Đừng làm điều đó, trừ khi đó là để gỡ lỗi hoặc nếu bạn thực sự xử lý các ngoại lệ đó theo một cách nào đó [ghi nhật ký, lọc và nâng cấp lại một số trong số chúng,. ].

Chủ Đề