Về hành vi thực tế, không có sự khác biệt. Tất cả họ trở lại
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
5 và đó là nó. Tuy nhiên, có một thời gian và địa điểm cho tất cả những điều này. Các hướng dẫn sau đây về cơ bản là cách sử dụng các phương pháp khác nhau [hoặc ít nhất là cách tôi được dạy chúng nên được sử dụng], nhưng chúng không phải là quy tắc tuyệt đối để bạn có thể trộn chúng nếu bạn cảm thấy cần thiết.Sử dụng def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
6
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
Điều này cho biết rằng hàm thực sự có nghĩa là trả về một giá trị cho việc sử dụng sau này và trong trường hợp này, nó trả về
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
5. Giá trị này def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
5 sau đó có thể được sử dụng ở nơi khác. def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
6 không bao giờ được sử dụng nếu không có giá trị trả về khả thi nào khác từ hàm.Trong ví dụ sau, chúng tôi trở lại ____ 20
def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
1 nếu def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
0 được đưa ra là con người. Nếu đó không phải là con người, chúng ta sẽ trở lại def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
5 vì def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
0 không có def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
1 [giả sử đó không phải là động vật hay gì đó].def get_mother[person]:
if is_human[person]:
return person.mother
else:
return None
Sử dụng def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
6
def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
Điều này được sử dụng vì lý do tương tự như
def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
7 trong các vòng lặp. Giá trị trả về không quan trọng và bạn chỉ muốn thoát toàn bộ hàm. Nó cực kỳ hữu ích ở một số nơi, mặc dù bạn không cần nó thường xuyên.Chúng tôi đã có 15
def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
8 và chúng tôi biết một trong số họ có một con dao. Chúng tôi lặp qua từng def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
9 từng người một để kiểm tra xem họ có dao không. Nếu chúng ta đánh người bằng dao, chúng ta có thể thoát khỏi chức năng vì chúng ta biết chỉ có một con dao và không có lý do gì khi kiểm tra phần còn lại của def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
8. Nếu chúng ta không tìm thấy def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
9 bằng một con dao, chúng ta sẽ đưa ra một cảnh báo. Điều này có thể được thực hiện theo nhiều cách khác nhau và sử dụng def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
6 có lẽ thậm chí không phải là cách tốt nhất, nhưng đó chỉ là một ví dụ để chỉ ra cách sử dụng def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
6 để thoát khỏi chức năng.def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
Lưu ý: Bạn không bao giờ nên làm
def add[x, y]: total = x + y return total4, vì giá trị trả về không có nghĩa là bị bắt.
Không sử dụng def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
6 ở tất cả
def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
Điều này cũng sẽ trả về
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
5, nhưng giá trị đó không có nghĩa là được sử dụng hoặc bắt được. Nó đơn giản có nghĩa là chức năng kết thúc thành công. Về cơ bản, nó giống như def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
6 trong các chức năng def add[x, y]: total = x + y return total8 trong các ngôn ngữ như C ++ hoặc Java.
Trong ví dụ sau, chúng tôi đặt tên của mẹ và sau đó chức năng thoát ra sau khi hoàn thành thành công.
def set_mother[person, mother]:
if is_human[person]:
person.mother = mother
Lưu ý: Bạn không bao giờ nên làm
def add[x, y]: total = x + y return total9, vì giá trị trả về không có nghĩa là bị bắt.
Hãy cùng xem một ví dụ đơn giản để thêm hai số và trả lại tổng số cho người gọi.def add[x, y]:
total = x + y
return total
Chúng ta có thể tối ưu hóa chức năng bằng cách có biểu thức trong câu lệnh trả về.
def add[x, y]: return x + y
Mỗi chức năng trả về một cái gì đó
Hãy để xem những gì được trả lại khi một hàm không có câu lệnh trả lại.
>>> def foo[]: ... pass ... >>> >>> print[foo[]] None >>>
Điều gì xảy ra khi tuyên bố trả lại không có gì?
Khi câu lệnh trả về không có giá trị, hàm không trả về không.None.
>>> def return_none[]: ... return ... >>> print[return_none[]] None >>>
Các chức năng Python có thể có nhiều câu lệnh hoàn trả
def type_of_int[i]: if i % 2 == 0: return 'even' else: return 'odd'
Hàm Python có thể trả về nhiều loại giá trị
Không giống như các ngôn ngữ lập trình khác, các hàm Python không bị hạn chế để trả về một loại giá trị duy nhất. Nếu bạn nhìn vào định nghĩa chức năng, nó không có bất kỳ thông tin nào về những gì nó có thể trả lại.
Hãy cùng xem xét một ví dụ trong đó hàm sẽ trả về nhiều loại giá trị.
def get_demo_data[object_type]: if 'str' == object_type: return 'test' elif 'tuple' == object_type: return [1, 2, 3] elif 'list' == object_type: return [1, 2, 3] elif 'dict' == object_type: return {"1": 1, "2": 2, "3": 3} else: return None
Trả về nhiều giá trị trong một câu lệnh trả về
Chúng ta có thể trả về nhiều giá trị từ một câu lệnh trả về duy nhất. Các giá trị này được phân tách bằng dấu phẩy và được trả lại dưới dạng một tuple cho chương trình người gọi.
def return_multiple_values[]: return 1, 2, 3 print[return_multiple_values[]] print[type[return_multiple_values[]]]
Output:
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
0Câu lệnh trả về Python với khối cuối cùng
Khi câu lệnh trả về được thực thi bên trong khối Except Try-Except, mã khối cuối cùng được thực thi trước khi trả lại giá trị cho người gọi.
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
1Output:
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
2Nếu khối cuối cùng có câu lệnh trả về, thì câu lệnh trả về trước đó sẽ bị bỏ qua và giá trị từ khối cuối cùng được trả về.
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
3Output::
def find_prisoner_with_knife[prisoners]:
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition[]
return # no need to check rest of the prisoners nor raise an alert
raise_alert[]
4References:
- Tài liệu chính thức của Python