Hướng dẫn how do you return a value from an if statement in python? - làm thế nào để bạn trả về một giá trị từ một câu lệnh if trong python?

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 how do you return a value from an if statement in python? - làm thế nào để bạn trả về một giá trị từ một câu lệnh if trong python?

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,8371 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 how do you return a value from an if statement in python? - làm thế nào để bạn trả về một giá trị từ một câu lệnh if trong python?

LundinlundinLundin

181K38 Huy hiệu vàng244 Huy hiệu bạc375 Huy hiệu Đồng38 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 how do you return a value from an if statement in python? - làm thế nào để bạn trả về một giá trị từ một câu lệnh if trong python?

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 how do you return a value from an if statement in python? - làm thế nào để bạn trả về một giá trị từ một câu lệnh if trong python?

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

Làm thế nào để bạn trả lại 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.

Làm thế nào để chức năng Python trả về một giá trị?

Từ khóa Python Return thoát ra một chức năng và hướng dẫn Python tiếp tục thực hiện chương trình chính.Từ khóa trả về có thể gửi một giá trị trở lại chương trình chính.Một giá trị có thể là một chuỗi, một tuple hoặc bất kỳ đối tượng nào khác.Điều này rất hữu ích vì nó cho phép chúng tôi xử lý dữ liệu trong một hàm.

Trả lại trong một câu lệnh IF làm gì?

Câu lệnh trả về trả về luồng thực thi cho hàm từ nơi được gọi.Tuyên bố này không bắt buộc cần bất kỳ tuyên bố có điều kiện.Ngay sau khi tuyên bố được thực thi, luồng của chương trình dừng lại ngay lập tức và trả lại điều khiển từ nơi được gọi.returns the flow of the execution to the function from where it is called. This statement does not mandatorily need any conditional statements. As soon as the statement is executed, the flow of the program stops immediately and returns the control from where it was called.

Làm thế nào để bạn nhận được giá trị được trả về từ một hàm?

Để trả về một giá trị từ một hàm, bạn phải bao gồm một câu lệnh trả về, theo sau là giá trị sẽ được trả về, trước câu lệnh cuối của hàm.Nếu bạn không bao gồm câu lệnh trả về hoặc nếu bạn không chỉ định giá trị sau khi trả về từ khóa, giá trị được trả về bởi hàm là không thể đoán trước.include a return statement, followed by the value to be returned, before the function's end statement. If you do not include a return statement or if you do not specify a value after the keyword return, the value returned by the function is unpredictable.