Hướng dẫn can we use return in if statement python? - chúng ta có thể sử dụng lệnh return trong if python không?

Giả sử tôi có một tuyên bố if với

if(A > B):
    return A+1
else:
    return A-1
0. Từ góc độ hiệu quả, tôi nên sử dụng

if(A > B):
    return A+1
return A-1

hoặc

if(A > B):
    return A+1
else:
    return A-1

Tôi có nên thích cái này hay người khác khi sử dụng ngôn ngữ được biên dịch (c) hoặc một kịch bản (python) không?

hỏi ngày 8 tháng 2 năm 2012 lúc 10:20Feb 8, 2012 at 10:20

Hướng dẫn can we use return in if statement python? - chúng ta có thể sử dụng lệnh return trong if python không?

Jorge Leitaojorge LeitaoJorge Leitao

17.8K17 Huy hiệu vàng82 Huy hiệu bạc116 Huy hiệu đồng17 gold badges82 silver badges116 bronze badges

9

Vì câu lệnh

if(A > B):
    return A+1
else:
    return A-1
0 chấm dứt việc thực thi hàm hiện tại, hai hình thức là tương đương (mặc dù hình thức thứ hai có thể đọc được nhiều hơn so với đầu tiên).

Hiệu quả của cả hai hình thức là tương đương nhau, mã máy cơ bản phải thực hiện một bước nhảy nếu điều kiện if là sai.

Lưu ý rằng Python hỗ trợ một cú pháp cho phép bạn chỉ sử dụng một câu lệnh

if(A > B):
    return A+1
else:
    return A-1
0 trong trường hợp của bạn:

return A+1 if A > B else A-1

Đã trả lời ngày 8 tháng 2 năm 2012 lúc 10:25Feb 8, 2012 at 10:25

Frédéric Hamidifrédéric HamidiFrédéric Hamidi

253K41 Huy hiệu vàng477 Huy hiệu bạc471 Huy hiệu Đồng41 gold badges477 silver badges471 bronze badges

9

Từ hướng dẫn phong cách của Chromium:

Không sử dụng khác sau khi trở lại:

# Bad
if (foo)
  return 1
else
  return 2

# Good
if (foo)
  return 1
return 2

return 1 if foo else 2

Đã trả lời ngày 31 tháng 1 năm 2015 lúc 10:20Jan 31, 2015 at 10:20

skeller88skeller88skeller88

3,8271 Huy hiệu vàng29 Huy hiệu bạc33 Huy hiệu đồng1 gold badge29 silver badges33 bronze badges

10

Cá nhân tôi tránh

if(A > B):
    return A+1
else:
    return A-1
4 khối khi có thể. Xem chiến dịch chống IF

Ngoài ra, họ không tính phí 'thêm' cho dòng, bạn biết: p

"Đơn giản là tốt hơn phức tạp" & "Khả năng đọc là vua"

delta = 1 if (A > B) else -1
return A + delta

Đã trả lời ngày 26 tháng 11 năm 2018 lúc 23:21Nov 26, 2018 at 23:21

PerceBusperCebuspercebus

7391 Huy hiệu vàng8 Huy hiệu bạc20 Huy hiệu đồng1 gold badge8 silver badges20 bronze badges

5

Về phong cách mã hóa:

Hầu hết các tiêu chuẩn mã hóa bất kể ngôn ngữ cấm nhiều câu lệnh hoàn trả từ một chức năng như thực tiễn xấu.

.

Sự đồng thuận từ tất cả các tiêu chuẩn mã hóa công nghiệp là biểu thức nên được viết là:

int result;

if(A > B)
{
  result = A+1;
}
else
{
  result = A-1;
}
return result;

Về hiệu quả:

Ví dụ trên và hai ví dụ trong câu hỏi đều hoàn toàn tương đương về hiệu quả. Mã máy trong tất cả các trường hợp này phải so sánh A> B, sau đó phân nhánh với tính toán A+1 hoặc A-1, sau đó lưu trữ kết quả của đó trong thanh ghi CPU hoặc trên ngăn xếp.

CHỈNH SỬA :

Sources:

  • Misra-C: 2004 Quy tắc 14.7, đến lượt nó trích dẫn ...:
  • IEC 61508-3. Phần 3, Bảng B.9.
  • IEC 61508-7. C.2.9.

Đã trả lời ngày 8 tháng 2 năm 2012 lúc 10:47Feb 8, 2012 at 10:47

Hướng dẫn can we use return in if statement python? - chúng ta có thể sử dụng lệnh return trong if python không?

LundinlundinLundin

Phim thương hiệu vàng 180K3838 gold badges244 silver badges375 bronze badges

7

Với bất kỳ trình biên dịch hợp lý nào, bạn nên quan sát không có sự khác biệt; Chúng nên được biên dịch thành mã máy giống hệt nhau vì chúng tương đương.

Đã trả lời ngày 8 tháng 2 năm 2012 lúc 10:22Feb 8, 2012 at 10:22

Phiên bản A đơn giản hơn và đó là lý do tại sao tôi sẽ sử dụng nó.

Và nếu bạn bật tất cả các cảnh báo trình biên dịch trong Java, bạn sẽ nhận được cảnh báo về phiên bản thứ hai vì nó không cần thiết và bật lên độ phức tạp của mã.

Đã trả lời ngày 8 tháng 2 năm 2012 lúc 10:23Feb 8, 2012 at 10:23

Hướng dẫn can we use return in if statement python? - chúng ta có thể sử dụng lệnh return trong if python không?

Juergen Djuergen djuergen d

198K36 Huy hiệu vàng282 Huy hiệu bạc348 Huy hiệu đồng36 gold badges282 silver badges348 bronze badges

Đây là một câu hỏi về phong cách (hoặc sở thích) vì thông dịch viên không quan tâm. Cá nhân tôi sẽ cố gắng không đưa ra câu lệnh cuối cùng của một hàm trả về một giá trị ở mức thụt lề khác với cơ sở chức năng. Cái khác trong ví dụ 1 che khuất, nếu chỉ một chút, nơi kết thúc của hàm.

Theo sở thích tôi sử dụng:

return A+1 if (A > B) else A-1

Vì nó tuân theo cả quy ước tốt về việc có một tuyên bố trả lại duy nhất là câu lệnh cuối cùng trong hàm (như đã đề cập) và mô hình lập trình chức năng tốt để tránh kết quả trung gian phong cách bắt buộc.

Đối với các chức năng phức tạp hơn, tôi thích chia chức năng thành nhiều chức năng phụ để tránh lợi nhuận sớm nếu có thể. Nếu không, tôi trở lại bằng cách sử dụng một biến kiểu bắt buộc gọi là RVAL. Tôi cố gắng không sử dụng nhiều câu lệnh trả về trừ khi hàm là tầm thường hoặc câu lệnh trả về trước khi kết thúc là kết quả của lỗi. Trở lại sớm làm nổi bật thực tế là bạn không thể tiếp tục. Đối với các chức năng phức tạp được thiết kế để phân nhánh thành nhiều phần phụ, tôi cố gắng mã hóa chúng dưới dạng các câu lệnh (ví dụ được điều khiển bởi một dict).

Một số áp phích đã đề cập đến tốc độ hoạt động. Tốc độ thời gian chạy là thứ yếu đối với tôi vì nếu bạn cần tốc độ thực hiện Python không phải là ngôn ngữ tốt nhất để sử dụng. Tôi sử dụng Python làm hiệu quả của mã hóa (nghĩa là viết mã miễn phí lỗi) mà quan trọng đối với tôi.

Đã trả lời ngày 16 tháng 2 năm 2017 lúc 16:25Feb 16, 2017 at 16:25

Hướng dẫn can we use return in if statement python? - chúng ta có thể sử dụng lệnh return trong if python không?

Stephen Ellwoodstephen EllwoodStephen Ellwood

3641 Huy hiệu vàng2 Huy hiệu bạc1 gold badge2 silver badges10 bronze badges

4

Tôi biết câu hỏi được gắn thẻ Python, nhưng nó đề cập đến các ngôn ngữ động nên tôi nên đề cập đến điều đó trong Ruby, câu lệnh IF thực sự có loại trả về để bạn có thể làm điều gì đó như

def foo
  rv = if (A > B)
         A+1
       else
         A-1
       end
  return rv 
end

Hoặc bởi vì nó cũng có lợi nhuận ngầm đơn giản

def foo 
  if (A>B)
    A+1
  else 
    A-1
  end
end

mà xung quanh vấn đề phong cách không có nhiều lợi nhuận khá độc đáo.

Đã trả lời ngày 1 tháng 2 năm 2018 lúc 12:59Feb 1, 2018 at 12:59

Jamie Cookjamie CookJamie Cook

4.2053 Huy hiệu vàng39 Huy hiệu bạc52 Huy hiệu Đồng3 gold badges39 silver badges52 bronze badges

Từ quan điểm hiệu suất, không quan trọng trong Python và tôi cho rằng điều tương tự cho mọi ngôn ngữ hiện đại ngoài kia.

Nó thực sự đi vào phong cách và khả năng đọc. Tùy chọn thứ hai của bạn (khối IF-Else) dễ đọc hơn so với đầu tiên và dễ đọc hơn nhiều so với hoạt động ternary một lớp.

Đã trả lời ngày 26 tháng 2 năm 2021 lúc 16:08Feb 26, 2021 at 16:08

Scarface97Scarface97Scarface97

571 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

Tôi có thể trả lại nếu tuyên bố không?

Có. Lợi nhuận ở đây sẽ đưa quyền kiểm soát ra khỏi phương pháp. The return here will take the control out of method.

Làm thế nào để bạn trả về một giá trị từ một câu lệnh IF trong Python?

Một câu lệnh trả về được sử dụng để kết thúc việc thực hiện cuộc gọi chức năng và trả về kết quả (giá trị của biểu thức theo từ khóa trả về) cho người gọi.Các tuyên bố sau các tuyên bố trả lại không được thực thi.Nếu câu lệnh trả về không có bất kỳ biểu thức nào, thì giá trị đặc biệt không được trả về.. The statements after the return statements are not executed. If the return statement is without any expression, then the special value None is returned.

Chúng ta có thể viết câu lệnh trả lại trong nếu khối không?

Có thể viết câu lệnh trả về nếu khối?Có thể, nhưng bạn đã không bao gồm tất cả các trường hợp có thể mà luồng chương trình có thể đi.It is possible, but you haven't covered all the possible cases to which the program flow may go.

Nếu người khác cần trở lại?

Nó làm một cái gì đó trong trường hợp đúng và những điều khác trong trường hợp sai, điển hình là cấu trúc nếu / khác, nhưng chỉ có thể sử dụng khối nếu có một mức hoàn trả trống cuối cùng và bỏ qua khối khác đặt nội dung của nó với một mức độ thụt nhẹ hơn., typical if / else structure, but is possible use only the if block with a empty return in the end and omit the else block placing its contents with one less level of indentation.