Hướng dẫn why does my function return none python? - tại sao chức năng của tôi 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 chức năng của tôi trở lại không có gì Python?

Hàm Python mà không có câu lệnh trả về Mỗi hàm trong Python trả về một cái gì đó.Nếu hàm không có bất kỳ câu lệnh trả về nào, thì nó sẽ không trả về.If the function doesn't have any return statement, then it returns None .

Tại sao đầu ra của tôi cho thấy không có trong Python?

Python thật đơn giản, nếu chức năng của bạn không có bất kỳ giá trị trả về nào thì hàm sẽ trả về không.if your function doens't have any return value then the function will return None.