Hướng dẫn why function return none python - tại sao hàm không trả về python

Tôi có chức năng này tự gọi:

def get_input[]:
    my_var = input['Enter "a" or "b": ']

    if my_var != "a" and my_var != "b":
        print['You didn\'t type "a" or "b". Try again.']
        get_input[]
    else:
        return my_var

print['got input:', get_input[]]

Bây giờ, nếu tôi nhập chỉ "A" hoặc "B", mọi thứ đều hoạt động tốt:

Type "a" or "b": a
got input: a

Nhưng, nếu tôi gõ một cái gì đó khác và sau đó là "A" hoặc "B", tôi sẽ nhận được cái này:

Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None

Tôi không biết tại sao get_input[] lại trả lại

Type "a" or "b": a
got input: a
0 vì nó chỉ nên trả lại
Type "a" or "b": a
got input: a
1.
Type "a" or "b": a
got input: a
0 này đến từ đâu và làm cách nào để khắc phục chức năng của mình?

Ngăn chặn một chức năng trả về không có trong Python #

Để ngăn chặn một hàm trả về

Type "a" or "b": a
got input: a
0 trong Python, hãy đảm bảo trả về giá trị từ hàm. Tất cả các chức năng không trả về một cách rõ ràng một giá trị trả về
Type "a" or "b": a
got input: a
0 trong Python.

Copied!

# 👇️ returns None def example[]: print['hi there'] result = example[] print[result] # 👉️ None

Chúng tôi đã không trả về một cách rõ ràng một giá trị từ hàm, vì vậy nó hoàn toàn trả về

Type "a" or "b": a
got input: a
0.

Sử dụng câu lệnh

Type "a" or "b": a
got input: a
6 để trả về giá trị từ hàm.

Copied!

# 👇️ returns None def example[]: return 'hi there' result = example[] print[result] # 👉️ 'hi there'

Lưu ý rằng tất cả các chức năng không trả lại một cách rõ ràng một giá trị, cuối cùng sẽ trả về ____1010.

Các nguồn giá trị ____1010 phổ biến nhất là:

  1. Có một chức năng không trả về bất cứ điều gì [trả về
    Type "a" or "b": a
    got input: a
    
    0 ngầm].
  2. Cài đặt rõ ràng một biến thành
    Type "a" or "b": a
    got input: a
    
    0.
  3. Gán một biến cho kết quả gọi chức năng tích hợp không trả về bất cứ điều gì.
  4. Có một hàm chỉ trả về một giá trị nếu một điều kiện nhất định được đáp ứng.

Lưu ý rằng có nhiều chức năng tích hợp [ví dụ:

Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
1] làm biến đổi đối tượng ban đầu tại chỗ và trả về ____10.

Copied!

my_list = ['c', 'b', 'a'] result = my_list.sort[] print[result] # 👉️ None

Nếu hàm làm biến đổi đối tượng gốc, đừng gán kết quả gọi nó cho một biến.

Copied!

my_list = ['c', 'b', 'a'] my_list.sort[] print[my_list] # 👉️ ['a', 'b', 'c']

Một nguồn phổ biến khác của các giá trị

Type "a" or "b": a
got input: a
0 là có hàm trả về giá trị chỉ khi đáp ứng điều kiện.

Copied!

def get_list[a]: if len[a] > 3: return a # 👇️ None my_list = get_list[[1, 2]] print[my_list] # 👉️ None

Câu lệnh

Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
4 trong hàm
Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
5 chỉ được chạy nếu thông qua trong đối số có độ dài lớn hơn
Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
6.

Trong tất cả các trường hợp khác, chức năng không trả lại bất cứ điều gì và cuối cùng hoàn toàn trả lại

Type "a" or "b": a
got input: a
0.

Để khắc phục điều này, chúng tôi có thể trả về một giá trị mặc định nếu điều kiện không được đáp ứng, ví dụ: Một chuỗi trống, một danh sách trống,

Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
8 hoặc bất kỳ giá trị nào khác phù hợp với trường hợp sử dụng của bạn.

Copied!

def get_list[a]: if len[a] > 3: return a return [] # 👈️ return empty list if condition not met # 👇️ [] my_list = get_list[['a', 'b']] print[my_list] # 👉️ []

Bây giờ chức năng được đảm bảo để trả về một giá trị bất kể điều kiện có được đáp ứng.

Tại sao sự trở lại không cho không có Python?

Không có khái niệm về thủ tục hoặc thói quen trong Python.Vì vậy, nếu bạn không sử dụng rõ ràng giá trị trả về trong câu lệnh trả về hoặc nếu bạn hoàn toàn bỏ qua câu lệnh trả về, thì Python sẽ ngầm trả lại giá trị mặc định cho bạn.Giá trị trả về mặc định đó sẽ luôn luôn không có.if you don't explicitly use a return value in a return statement, or if you totally omit the return statement, then Python will implicitly return a default value for you. That default return value will always be None .

Làm cách nào để ngăn chặn Python không trả lại?

Để ngăn chặn một hàm trả về không có trong Python, hãy đảm bảo trả về giá trị từ hàm.Tất cả các chức năng không trả về một cách rõ ràng một giá trị trả về không có trong Python.make sure to return a value from the function. All functions that don't explicitly return a value return None in Python.

Tại sao Python luôn in không?

Chức năng của bạn là in dựa trên điều kiện của câu lệnh if.Chức năng gọi "Print [Movie_Review [9]] đang cố gắng in giá trị trả về. Không có câu lệnh trả về mặc định này là không có. Nó có thể được sửa bằng cách thêm câu lệnh trả về trên mỗi câu lệnh có điều kiện và xóa bản in.. The function call "print[movie_review[9]] is attempting to print the return value. Without a return statement this defaults to none. It can be fixed by adding a return statement on each conditional statement and removing the print.

Bài Viết Liên Quan

Chủ Đề