Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

Bạn không cần sử dụng 4 khoảng trống trên dòng điều kiện thứ hai của mình. Có thể sử dụng:

if (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something

Ngoài ra, đừng quên khoảng trắng linh hoạt hơn bạn nghĩ:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something

Cả hai đều khá xấu xí mặc dù.

Có thể mất dấu ngoặc (hướng dẫn phong cách không khuyến khích điều này)?

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something

Điều này ít nhất cung cấp cho bạn một số khác biệt.

Hoặc thậm chí:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something

Tôi nghĩ tôi thích:

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something

Đây là hướng dẫn phong cách, trong đó (kể từ năm 2010) khuyến nghị sử dụng dấu ngoặc.

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

mardlin

2922 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 6:34Oct 8, 2008 at 6:34

Harley Holcomharley HolcombeHarley Holcombe

170K15 Huy hiệu vàng69 Huy hiệu bạc63 Huy hiệu Đồng15 gold badges69 silver badges63 bronze badges

8

Tôi đã dùng đến những điều sau đây trong trường hợp thoái hóa, nơi nó đơn giản và hoặc hoặc.

if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

Nó cạo một vài ký tự và nói rõ rằng không có sự tinh tế nào với điều kiện.

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 10:26Oct 8, 2008 at 10:26

6

Tôi thích phong cách này khi tôi có một điều kiện nếu có điều kiện lớn:

if (
    expr1
    and (expr2 or expr3)
    and hasattr(thingy1, '__eq__')
    or status=="HappyTimes"
):
    do_stuff()
else:
    do_other_stuff()

Gitaarik

39.1k11 Huy hiệu vàng94 Huy hiệu bạc103 Huy hiệu đồng11 gold badges94 silver badges103 bronze badges

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 8:39Oct 8, 2008 at 8:39

DeestandeestanDeestan

16.3k4 Huy hiệu vàng31 Huy hiệu bạc48 Huy hiệu đồng4 gold badges31 silver badges48 bronze badges

3

Ai đó phải vô địch sử dụng khoảng trắng dọc ở đây! :)

if (     cond1 == val1
     and cond2 == val2
     and cond3 == val3
   ):
    do_stuff()

Điều này làm cho mỗi điều kiện có thể nhìn thấy rõ. Nó cũng cho phép biểu hiện sạch hơn của các điều kiện phức tạp hơn:

if (    cond1 == val1
     or 
        (     cond2_1 == val2_1
          and cond2_2 >= val2_2
          and cond2_3 != bad2_3
        )
   ):
    do_more_stuff()

Có, chúng tôi đang giao dịch một chút bất động sản thẳng đứng cho sự rõ ràng. Cũng đáng giá IMO.

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 14:55Oct 8, 2008 at 14:55

Kevin Littlekevin LittleKevin Little

12.2k5 Huy hiệu vàng38 Huy hiệu bạc47 Huy hiệu đồng5 gold badges38 silver badges47 bronze badges

8

Điều này không cải thiện quá nhiều nhưng ...

allCondsAreOK = (cond1 == 'val1' and cond2 == 'val2' and
                 cond3 == 'val3' and cond4 == 'val4')

if allCondsAreOK:
   do_something

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 6:31Oct 8, 2008 at 6:31

9

Đây là một cách rất cá nhân của tôi: Các điều kiện dài là (theo quan điểm của tôi), một mùi mã cho thấy việc tái cấu trúc thành một chức năng/phương pháp hồi chuyển Boolean. Ví dụ:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
0

Bây giờ, nếu tôi tìm thấy một cách để làm cho các điều kiện đa dòng trông tốt, có lẽ tôi sẽ thấy mình hài lòng với việc có chúng và bỏ qua việc tái cấu trúc.

Mặt khác, việc họ làm xáo trộn cảm giác thẩm mỹ của tôi hoạt động như một động lực để tái cấu trúc.

Do đó, kết luận của tôi là nhiều điều kiện dòng nên trông xấu xí và đây là một động lực để tránh chúng.

Luke h

671 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges

Đã trả lời ngày 14 tháng 1 năm 2011 lúc 10:50Jan 14, 2011 at 10:50

Krawyotikrawyotikrawyoti

Huy hiệu vàng 19.3K11 gold badge22 silver badges17 bronze badges

Tôi đề nghị di chuyển từ khóa

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
7 sang dòng thứ hai và thụt vào tất cả các dòng chứa các điều kiện với hai không gian thay vì bốn:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
1

Đây chính xác là cách tôi giải quyết vấn đề này trong mã của tôi. Có một từ khóa là từ đầu tiên trong dòng làm cho điều kiện dễ đọc hơn rất nhiều và giảm số lượng không gian phân biệt hơn nữa điều kiện với hành động.

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 7:19Oct 8, 2008 at 7:19

DzinxdzinxDzinX

53.2K10 Huy hiệu vàng60 Huy hiệu bạc78 Huy hiệu đồng10 gold badges60 silver badges78 bronze badges

4

Có vẻ đáng để trích dẫn PEP 0008 (Hướng dẫn phong cách chính thức của Python), vì nó nhận xét về vấn đề này ở độ dài khiêm tốn:

Khi phần có điều kiện của

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
8 -Statement đủ dài để yêu cầu nó được viết trên nhiều dòng, điều đáng chú ý là sự kết hợp của một từ khóa hai ký tự (tức là Thắng 4 không gian cho các dòng tiếp theo của điều kiện đa dòng. Điều này có thể tạo ra một cuộc xung đột trực quan với bộ mã thụt lề được lồng bên trong
if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
8, điều này cũng sẽ tự nhiên được thụt vào 4 không gian. PEP này không có vị trí rõ ràng về cách (hoặc) để phân biệt trực quan các dòng có điều kiện như vậy với bộ lồng nhau bên trong
if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
8 -Statement. Các tùy chọn chấp nhận được trong tình huống này bao gồm, nhưng không giới hạn ở:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
2

Lưu ý "không giới hạn ở" trong trích dẫn ở trên; Bên cạnh các phương pháp được đề xuất trong hướng dẫn phong cách, một số trong những câu trả lời khác cho câu hỏi này cũng được chấp nhận.

Đã trả lời ngày 5 tháng 7 năm 2015 lúc 14:15Jul 5, 2015 at 14:15

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

Mark Amerymark AmeryMark Amery

134K78 Huy hiệu vàng395 Huy hiệu bạc444 Huy hiệu đồng78 gold badges395 silver badges444 bronze badges

2

Đây là những gì tôi làm, hãy nhớ rằng "tất cả" và "bất kỳ" bất kỳ "nào chấp nhận một điều có thể xảy ra, vì vậy tôi chỉ đặt một điều kiện dài trong một danh sách và để" tất cả "thực hiện công việc.

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
3

Đã trả lời ngày 19 tháng 11 năm 2014 lúc 3:34Nov 19, 2014 at 3:34

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

Zkandazkandazkanda

6941 Huy hiệu vàng6 Huy hiệu bạc5 Huy hiệu đồng1 gold badge6 silver badges5 bronze badges

2

Cá nhân, tôi thích thêm ý nghĩa vào các câu chuyện dài. Tôi sẽ phải tìm kiếm thông qua mã để tìm một ví dụ thích hợp, nhưng đây là ví dụ đầu tiên xuất hiện trong tâm trí: Giả sử tôi tình cờ gặp một số logic kỳ quặc nơi tôi muốn hiển thị một trang nhất định tùy thuộc vào nhiều biến.

Tiếng Anh: "Nếu người dùng đăng nhập không phải là giáo viên quản trị viên, nhưng chỉ là một giáo viên bình thường và không phải là chính học sinh ..."

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
4

Chắc chắn điều này có thể trông ổn, nhưng đọc những câu nói đó là rất nhiều công việc. Làm thế nào về chúng tôi gán logic cho nhãn có ý nghĩa. "Nhãn" thực sự là tên biến:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
5

Điều này có vẻ ngớ ngẩn, nhưng bạn có thể có một điều kiện khác mà bạn chỉ muốn hiển thị một mục khác nếu và chỉ khi, bạn đang hiển thị bảng giáo viên hoặc nếu người dùng có quyền truy cập vào bảng điều khiển cụ thể khác theo mặc định:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
6

Hãy thử viết điều kiện trên mà không sử dụng các biến để lưu trữ và dán nhãn logic của bạn, và bạn không chỉ kết thúc với một câu lệnh logic rất lộn xộn, khó đọc mà còn chỉ lặp lại. Mặc dù có những ngoại lệ hợp lý, hãy nhớ: Đừng lặp lại bản thân (khô).

Đã trả lời ngày 7 tháng 3 năm 2013 lúc 6:24Mar 7, 2013 at 6:24

rgenitorgenitorgenito

1.73113 huy hiệu bạc8 Huy hiệu đồng13 silver badges8 bronze badges

Thêm vào những gì @krawyoti đã nói ... điều kiện dài có mùi vì chúng khó đọc và khó hiểu. Sử dụng một chức năng hoặc một biến làm cho mã rõ ràng hơn. Trong Python, tôi thích sử dụng không gian thẳng đứng, kèm theo dấu ngoặc đơn và đặt các toán tử logic ở đầu mỗi dòng để các biểu thức không giống như "nổi".

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
7

Nếu các điều kiện cần được đánh giá nhiều lần, như trong vòng lặp

if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
2, thì sử dụng hàm cục bộ là tốt nhất.

Đã trả lời ngày 19 tháng 1 năm 2011 lúc 20:53Jan 19, 2011 at 20:53

ApalalaapalalaApalala

8.7813 huy hiệu vàng28 Huy hiệu bạc48 Huy hiệu đồng3 gold badges28 silver badges48 bronze badges

4

Đơn giản và đơn giản, cũng vượt qua séc PEP8:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
8

Trong thời gian gần đây, tôi đã thích các chức năng

if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
3 và
if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
4, vì tôi hiếm khi trộn và hoặc so sánh điều này hoạt động tốt, và có lợi thế bổ sung là không thành công với sự hiểu biết của máy phát điện:

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something
9

Chỉ cần nhớ vượt qua trong một lần nữa! Vượt qua trong N-Argument là không chính xác.

Lưu ý:

if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
4 giống như nhiều so sánh
if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
6,
if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):

if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
3 giống như nhiều so sánh
if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
7.


Điều này kết hợp độc đáo với các trình tạo máy phát điện, ví dụ:

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
0

Thêm về: Sự hiểu biết của máy phát điện

Đã trả lời ngày 24 tháng 11 năm 2014 lúc 7:44Nov 24, 2014 at 7:44

ThorsummonerthorsummonerThorSummoner

15.4K15 Huy hiệu vàng130 Huy hiệu bạc139 Huy hiệu đồng15 gold badges130 silver badges139 bronze badges

1

.

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
1

Điều này hoạt động tốt cho "và" và "hoặc" (điều quan trọng là chúng lần đầu tiên ở dòng thứ hai), nhưng ít hơn nhiều đối với các điều kiện dài khác. May mắn thay, cái trước dường như là trường hợp phổ biến hơn trong khi trường hợp sau thường dễ dàng viết lại với một biến tạm thời. .

Vì tôi đã tìm thấy câu hỏi này từ bài đăng trên blog của bạn về C ++, tôi sẽ bao gồm phong cách C ++ của tôi giống hệt nhau:

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
2

Đã trả lời ngày 14 tháng 1 năm 2011 lúc 8:33Jan 14, 2011 at 8:33

Fred Nurkfred NurkFred Nurk

13.6K4 Huy hiệu vàng36 Huy hiệu bạc62 Huy hiệu Đồng4 gold badges36 silver badges62 bronze badges

Tôi ngạc nhiên khi không thấy giải pháp ưa thích của mình,

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
3

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
7 là một từ khóa, nó được trình soạn thảo của tôi làm nổi bật và trông đủ khác với do_somothing bên dưới nó.

Đã trả lời ngày 14 tháng 1 năm 2011 lúc 14:50Jan 14, 2011 at 14:50

Marius Gedminasmarius GedminasMarius Gedminas

10,8K3 Huy hiệu vàng39 Huy hiệu bạc38 Huy hiệu Đồng3 gold badges39 silver badges38 bronze badges

3

"Tất cả" và "bất kỳ" nào là tốt cho nhiều điều kiện của cùng một loại trường hợp. Nhưng họ luôn đánh giá tất cả các điều kiện. Như thể hiện trong ví dụ này:

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
4

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 10:38Oct 8, 2008 at 10:38

2

Điều gì sẽ xảy ra nếu chúng ta chỉ chèn một đường trống bổ sung giữa điều kiện và cơ thể và làm phần còn lại theo cách chính tắc?

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
5

P.S. Tôi luôn sử dụng các tab, không phải khoảng trống; Tôi không thể tinh chỉnh ...

Đã trả lời ngày 9 tháng 10 năm 2008 lúc 2:45Oct 9, 2008 at 2:45

2

Những gì tôi thường làm là:

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
6

Bằng cách này, nẹp đóng và đại tràng đánh dấu trực quan về tình trạng của chúng tôi.

Đã trả lời ngày 1 tháng 8 năm 2014 lúc 17:53Aug 1, 2014 at 17:53

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

Tomekwitomekwitomekwi

1.9581 Huy hiệu vàng20 Huy hiệu bạc25 Huy hiệu đồng1 gold badge20 silver badges25 bronze badges

1

Tôi biết chủ đề này đã cũ, nhưng tôi có một số mã Python 2.7 và Pycharm (4.5) vẫn phàn nàn về trường hợp này:

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
7

Ngay cả với cảnh báo PEP8 "dòng thụt trực quan có cùng thụt vào dòng logic tiếp theo", mã thực tế vẫn hoàn toàn ổn? Nó không phải là "Ức chế quá mức?"

... Có những lúc tôi ước Python sẽ cắn viên đạn và đi với niềng răng xoăn. Tôi tự hỏi có bao nhiêu lỗi đã được vô tình giới thiệu trong những năm qua do sự cố ý tình cờ ...

Đã trả lời ngày 29 tháng 11 năm 2016 lúc 17:12Nov 29, 2016 at 17:12

SmgreenfieldsmgreenfieldSMGreenfield

1.66018 Huy hiệu bạc33 Huy hiệu đồng18 silver badges33 bronze badges

1

Tất cả những người được hỏi cũng cung cấp nhiều điều kiện cho câu lệnh IF chỉ là xấu xí như vấn đề được trình bày. Bạn không giải quyết vấn đề này bằng cách làm điều tương tự ..

Ngay cả câu trả lời PEP 0008 cũng phản cảm.

Đây là một cách tiếp cận dễ đọc hơn nhiều

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
8

Muốn tôi ăn lời của tôi? Thuyết phục tôi rằng bạn cần nhiều điều kiện và tôi thực sự sẽ in cái này và ăn nó để giải trí.

Đã trả lời ngày 17 tháng 6 năm 2017 lúc 6:16Jun 17, 2017 at 6:16

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

StofstofStof

5366 Huy hiệu bạc16 Huy hiệu Đồng6 silver badges16 bronze badges

4

Tôi nghĩ rằng giải pháp của @Zkanda sẽ tốt với một twist nhỏ. Nếu bạn có điều kiện và giá trị của mình trong danh sách tương ứng của riêng họ, bạn có thể sử dụng danh sách hiểu để thực hiện so sánh, điều này sẽ khiến mọi thứ trở nên chung chung hơn một chút để thêm các cặp điều kiện/giá trị.

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something
9

Nếu tôi muốn mã hóa cứng một câu như thế này, tôi sẽ viết nó như thế này để dễ đọc:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
0

Và chỉ để ném một giải pháp khác ra khỏi đó với một nhà điều hành

if (
    expr1
    and (expr2 or expr3)
    and hasattr(thingy1, '__eq__')
    or status=="HappyTimes"
):
    do_stuff()
else:
    do_other_stuff()
0:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
1

Đã trả lời ngày 21 tháng 7 năm 2017 lúc 13:03Jul 21, 2017 at 13:03

Ryanjdillonryanjdillonryanjdillon

16.6K9 Huy hiệu vàng82 Huy hiệu bạc104 Huy hiệu đồng9 gold badges82 silver badges104 bronze badges

1

Chỉ là một vài ý tưởng ngẫu nhiên khác để hoàn thiện. Nếu họ làm việc cho bạn, hãy sử dụng chúng. Nếu không, có lẽ bạn nên thử một cái gì đó khác.

Bạn cũng có thể làm điều này với một từ điển:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
2

Tùy chọn này phức tạp hơn, nhưng bạn cũng có thể thấy nó hữu ích:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
3

Dunno nếu điều đó phù hợp với bạn, nhưng đó là một lựa chọn khác để xem xét. Đây là một cách nữa:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
4

Hai điều cuối cùng tôi chưa thử nghiệm, nhưng các khái niệm là đủ để bạn đi nếu đó là những gì bạn muốn đi cùng.

. Bạn không cảm thấy quá tệ về thực tế là chúng là loại hacky.)

Đã trả lời ngày 8 tháng 10 năm 2008 lúc 17:26Oct 8, 2008 at 17:26

Jason Bakerjason BakerJason Baker

186K132 Huy hiệu vàng369 Huy hiệu bạc510 Huy hiệu Đồng132 gold badges369 silver badges510 bronze badges

Tôi đã phải vật lộn để tìm một cách tốt để làm điều này, vì vậy tôi đã nảy ra một ý tưởng (không phải là một viên đạn bạc, vì đây chủ yếu là vấn đề của hương vị).

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
5

Tôi tìm thấy một vài giá trị trong giải pháp này so với những người khác mà tôi đã thấy, cụ thể là bạn nhận được chính xác thêm 4 không gian thụt (bool), cho phép mọi điều kiện xếp hàng theo chiều dọc và phần thân của câu lệnh IF có thể được thụt vào một cách rõ ràng (ish). Điều này cũng giữ được lợi ích của việc đánh giá ngắn mạch của các nhà khai thác Boolean, nhưng tất nhiên thêm chi phí của một cuộc gọi chức năng về cơ bản không làm gì cả. Bạn có thể tranh luận (hợp lệ) rằng bất kỳ chức năng nào trả lại lập luận của nó có thể được sử dụng ở đây thay vì Bool, nhưng như tôi đã nói, đó chỉ là một ý tưởng và cuối cùng đó là vấn đề của hương vị.

Thật buồn cười, khi tôi đang viết điều này và nghĩ về "vấn đề", tôi đã đưa ra một ý tưởng khác, loại bỏ chi phí của một cuộc gọi chức năng. Tại sao không chỉ ra rằng chúng ta sắp bước vào một điều kiện phức tạp bằng cách sử dụng các cặp dấu ngoặc đơn bổ sung? Nói, 2 nữa, để đưa ra một khoảng trống 2 không gian đẹp của các điều kiện phụ liên quan đến phần thân của câu lệnh IF. Thí dụ:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
6

Tôi giống như thế này bởi vì khi bạn nhìn vào nó, một tiếng chuông ngay lập tức vang lên trong đầu bạn nói rằng "Này, có một điều phức tạp đang diễn ra ở đây!". Vâng, tôi biết rằng dấu ngoặc đơn không giúp đọc được, nhưng những điều kiện này hiếm khi đủ và khi chúng xuất hiện, bạn sẽ phải dừng lại và đọc chúng cẩn thận (vì chúng phức tạp).complex).

Dù sao, chỉ có hai đề xuất nữa mà tôi chưa từng thấy ở đây. Hy vọng điều này sẽ giúp ai đó :)

Đã trả lời ngày 3 tháng 12 năm 2014 lúc 19:19Dec 3, 2014 at 19:19

Bạn có thể chia nó thành hai dòng

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
7

Hoặc thậm chí thêm vào một điều kiện tại một thời điểm. Bằng cách đó, ít nhất nó tách biệt sự lộn xộn với

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
8.

Đã trả lời ngày 4 tháng 8 năm 2016 lúc 19:30Aug 4, 2016 at 19:30

Đóng gói điều kiện của bạn vào một danh sách, sau đó làm smth. giống:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
8

Đã trả lời ngày 9 tháng 6 năm 2010 lúc 9:23Jun 9, 2010 at 9:23

Psihodeliapsihodeliapsihodelia

28.7K35 Huy hiệu vàng107 Huy hiệu bạc154 Huy hiệu đồng35 gold badges107 silver badges154 bronze badges

0

Tôi thấy rằng khi tôi có điều kiện dài, tôi thường có một thân mã ngắn. Trong trường hợp đó, tôi chỉ cần quyết định gấp đôi cơ thể, do đó:

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something
9

Đã trả lời ngày 22 tháng 9 năm 2011 lúc 8:31Sep 22, 2011 at 8:31

XORSYSTXORSYSTxorsyst

7.4415 Huy hiệu vàng38 Huy hiệu bạc57 Huy hiệu đồng5 gold badges38 silver badges57 bronze badges

2

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
0

Hoặc nếu điều này rõ ràng hơn:

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
1

Không có lý do thụt lề nên là bội số của 4 trong trường hợp này, ví dụ: Xem "Căn chỉnh với Delimiter mở":

http://google-styleguide.googlecode.com/svn/trunk/pyguide.html?showone=Indentation#Indentation

Đã trả lời ngày 13 tháng 3 năm 2012 lúc 11:13Mar 13, 2012 at 11:13

Dima Tisnekdima TisnekDima Tisnek

10,8K4 Huy hiệu vàng63 Huy hiệu bạc117 Huy hiệu đồng4 gold badges63 silver badges117 bronze badges

1

Đây là một cách tiếp cận khác:

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
2

Điều này cũng giúp bạn dễ dàng thêm một điều kiện khác một cách dễ dàng mà không thay đổi câu lệnh IF bằng cách chỉ cần thêm một điều kiện khác vào danh sách:

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
3

Đã trả lời ngày 16 tháng 10 năm 2014 lúc 22:08Oct 16, 2014 at 22:08

user1487551user1487551user1487551

3712 Huy hiệu vàng3 Huy hiệu bạc8 Huy hiệu đồng2 gold badges3 silver badges8 bronze badges

Tôi thường sử dụng:

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
4

Đã trả lời ngày 5 tháng 3 năm 2015 lúc 0:12Mar 5, 2015 at 0:12

Artur Gasparartur GasparArtur Gaspar

4.3471 Huy hiệu vàng25 Huy hiệu bạc28 Huy hiệu đồng1 gold badge25 silver badges28 bronze badges

Nếu điều kiện IF & A khác của chúng tôi phải thực thi nhiều câu lệnh bên trong nó hơn chúng ta có thể viết như dưới đây. Mỗi khi chúng ta có nếu ví dụ khác với một câu bên trong nó.

Cảm ơn nó làm việc cho tôi.

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
5

Đã trả lời ngày 6 tháng 12 năm 2015 lúc 12:27Dec 6, 2015 at 12:27

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

GautamgautamGautam

3.6294 Huy hiệu vàng33 Huy hiệu bạc55 Huy hiệu Đồng4 gold badges33 silver badges55 bronze badges

Xin tha thứ cho tôi, nhưng điều đó xảy ra là tôi không hiểu biết về #python như bất kỳ ai trong số bạn ở đây, nhưng điều đó xảy ra là tôi đã tìm thấy một cái gì đó tương tự khi viết kịch bản cho các đối tượng của mình trong mô hình BIM 3D, vì vậy tôi sẽ điều chỉnh thuật toán của mình thành thuật toán của mình thành thuật toán của mình thành thuật toán của mình thành thuật toán của mình của Python.

Vấn đề mà tôi tìm thấy ở đây, là hai mặt:

  1. Giá trị của tôi dường như xa lạ đối với một người có thể cố gắng giải mã tập lệnh.
  2. Bảo trì mã sẽ có chi phí cao, nếu các giá trị đó được thay đổi (có thể xảy ra nhất) hoặc nếu các điều kiện mới phải được thêm vào (lược đồ bị hỏng)

Làm để bỏ qua tất cả những vấn đề này, tập lệnh của bạn phải diễn ra như thế này

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something
6

Ưu điểm của phương pháp này:

  1. Kịch bản có thể đọc được.

  2. Kịch bản có thể được duy trì dễ dàng.

  3. Điều kiện là một hoạt động so sánh 1 với tổng các giá trị đại diện cho các điều kiện mong muốn.
  4. Không cần điều kiện đa cấp

Hy vọng nó sẽ giúp tất cả các bạn

Đã trả lời ngày 25 tháng 10 năm 2019 lúc 17:28Oct 25, 2019 at 17:28

Hướng dẫn python if statement multiple lines - python if câu lệnh nhiều dòng

Nader Belalnader BelalNader Belal

1473 Huy hiệu bạc10 Huy hiệu đồng3 silver badges10 bronze badges

Bạn có thể đặt một câu lệnh IF trên nhiều dòng trong Python không?

Phong cách được đề xuất cho các câu lệnh IF Multiline trong Python là sử dụng dấu ngoặc đơn để phá vỡ câu lệnh IF.Hướng dẫn kiểu PEP8 khuyến nghị sử dụng dấu ngoặc đơn qua các dấu gạch chéo ngược và đặt các đường dây sau khi boolean và hoặc các nhà khai thác.use parentheses to break up the if statement. The PEP8 style guide recommends the use of parentheses over backslashes and putting line breaks after the boolean and and or operators.

Bạn có thể có 3 điều kiện trong một câu lệnh IF Python?

Kiểm tra nhiều điều kiện với một câu lệnh Python duy nhất để kiểm tra nhiều điều kiện trong mệnh đề IF hoặc ELIF, chúng tôi sử dụng cái gọi là toán tử logic.Các nhà khai thác này kết hợp một số giá trị đúng/sai thành một kết quả đúng hoặc sai cuối cùng (Sweigart, 2015).To test multiple conditions in an if or elif clause we use so-called logical operators. These operators combine several true/false values into a final True or False outcome (Sweigart, 2015).

Tôi có thể viết 2 điều kiện trong nếu tuyên bố không?

Sử dụng hai câu lệnh nếu cả hai điều kiện câu lệnh IF có thể đúng cùng một lúc.Trong ví dụ này, cả hai điều kiện có thể đúng.Bạn có thể vượt qua và làm rất tốt cùng một lúc.Sử dụng câu lệnh IF/ELSE Nếu hai điều kiện có nghĩa loại trừ lẫn nhau nếu một điều kiện đúng, điều kiện khác phải sai.. In this example, both conditions can be true. You can pass and do great at the same time. Use an if/else statement if the two conditions are mutually exclusive meaning if one condition is true the other condition must be false.