Hướng dẫn why does return give none python? - tại sao không trả lại cho con trăn nào?

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 None vì nó chỉ nên trả lại ____10. None này đến từ đâu và làm cách nào để khắc phục chức năng của mình?

Tại sao chức năng của tôi in không có trong python [đã giải quyết] #

Các chức năng thường in None khi chúng ta vượt qua kết quả của việc gọi một hàm không trả lại bất cứ điều gì cho hàm

Type "a" or "b": a
got input: a
3. 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ị, trả về None trong Python.

Copied!

def example(): print('hello world') print(example()) # 👇️ Output # hello world # None

Lưu ý rằng chúng tôi đã gọi hàm

Type "a" or "b": a
got input: a
3 hai lần.

Khi chúng tôi gọi hàm

Type "a" or "b": a
got input: a
6, hàm
Type "a" or "b": a
got input: a
3 sẽ được gọi bằng
Type "a" or "b": a
got input: a
8, và sau đó chúng tôi in kết quả của việc gọi hàm
Type "a" or "b": a
got input: a
6.

Bởi vì chức năng

Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
0 không trả lại bất cứ điều gì, nên cuối cùng nó hoàn toàn trả lại None, do đó None được in.

Nếu chúng ta trả về một giá trị từ hàm, giá trị sẽ được in.

Copied!

def example(): print('hello world') return 'bye' print(example()) # 👇️ Output # hello world # bye

Chúng tôi đã sử dụng 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
3 để trả về một giá trị từ hàm.

Bây giờ khi hàm

Type "a" or "b": a
got input: a
6 được gọi, chúng tôi in các chuỗi
Type "a" or "b": a
got input: a
8 và
Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
6, thay vì None.

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ề None.

Nếu bạn không muốn trả lại bất cứ điều gì từ chức năng, hãy xóa cuộc gọi

Type "a" or "b": a
got input: a
3 khi gọi hàm
Type "a" or "b": a
got input: a
6.

Copied!

def example(): print('hello world') example() # 👇️ Output # hello world

Không có điểm nào trong việc in kết quả của việc gọi một hàm không trả lại bất cứ điều gì vì chúng tôi sẽ luôn in None.

Các nguồn giá trị None 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ề None ngầm).
  2. Cài đặt rõ ràng một biến thành None.
  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ụ:

Copied!

def example(): print('hello world') print(example()) # 👇️ Output # hello world # None
5) làm biến đổi đối tượng gốc tại chỗ và trả về None.

Một nguồn chung của các giá trị None 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(['a', 'b']) print(my_list) # 👉️ None

Câu lệnh

Copied!

def example(): print('hello world') print(example()) # 👇️ Output # hello world # None
8 trong hàm

Copied!

def example(): print('hello world') print(example()) # 👇️ Output # hello world # None
9 chỉ được chạy nếu thông qua trong đối số có độ dài lớn hơn

Copied!

def example(): print('hello world') return 'bye' print(example()) # 👇️ Output # hello world # bye
0.

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 None.

Để 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,

Copied!

def example(): print('hello world') return 'bye' print(example()) # 👇️ Output # hello world # bye
2 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 lại không trả lại trong 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 .

Tại sao chức năng của tôi không trả lại gì?

Nếu một hàm trả về không, không có gì để lưu trữ sau khi chức năng được gọi.Trong C/C ++, điều này được gọi là void, nó không trả về một biến của bất kỳ loại dữ liệu nào (số nguyên, float).there's nothing to store after the function is called. In C/C++ this is called void, it doesn't return a variable of any data type (integer, float).

Là trả lại và trả về không giống nhau?

Như những người khác đã trả lời, kết quả hoàn toàn giống nhau, không có gì được trả lại trong mọi trường hợp.Sự khác biệt là phong cách, nhưng xin lưu ý rằng PEP8 yêu cầu sử dụng phải nhất quán: Hãy nhất quán trong các tuyên bố trả lại.Tất cả các câu lệnh trả về trong một hàm sẽ trả về một biểu thức hoặc không ai trong số chúng nên làm.the result is exactly the same, None is returned in all cases. The difference is stylistic, but please note that PEP8 requires the use to be consistent: Be consistent in return statements. Either all return statements in a function should return an expression, or none of them should.

Không có giá trị trả về?

Không có loại chỉ có một giá trị, không có.Không có gì cũng được sử dụng làm loại trả về cho các chức năng không trả về giá trị, tức là các hàm ngầm không trả về không.None is also used as the return type for functions that don't return a value, i.e. functions that implicitly return None .