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ề
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.Type "a" or "b": a
got input: a
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à:
- Có một chức năng không trả về bất cứ điều gì [trả về
0 ngầm].Type "a" or "b": a got input: a
- Cài đặt rõ ràng một biến thành
0.Type "a" or "b": a got input: a
- 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ì.
- 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ụ:
1] làm biến đổi đối tượng ban đầu tại chỗ và trả về ____10.Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
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
0.Type "a" or "b": a
got input: a
Để 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.