de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
Eli Bendersky
Eli Bendersky
Question

Stylizacja warunków wielowierszowych w instrukcjach 'if'?

Czasami rozbijam długie warunki w if na kilka linii. Najbardziej oczywistym sposobem na to jest:

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

Nie jest zbyt atrakcyjny wizualnie, ponieważ akcja zlewa się z warunkami. Jest to jednak naturalny sposób, wykorzystujący poprawne wcięcie Pythona wynoszące 4 spacje.

Na razie używam:

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

Ale to nie jest zbyt ładne :-)

Czy możesz polecić jakiś alternatywny sposób?

615 2008-10-08T06:19:07+00:00 3
 martineau
martineau
Edytowane pytanie 30. maja 2017 в 5:35
Programowanie
coding-style
python
if-statement
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Harley Holcombe
Harley Holcombe
8. października 2008 в 6:34
2008-10-08T06:34:25+00:00
Więcej
Źródło
Edytuj
#8547343

Nie musisz używać 4 spacji w drugiej linii warunkowej. Może użyj:

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

Nie zapominaj również, że spacja jest bardziej elastyczna niż mogłoby się wydawać:

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

Oba te są dość brzydkie, chociaż.

Może usunąć nawiasy (Style Guide odradza to jednak)?

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

To przynajmniej daje ci jakieś rozróżnienie.

Albo nawet:

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

Chyba wolę:

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

Oto Style Guide, który (od 2010) zaleca używanie nawiasów.

 mardlin
mardlin
Edytowana odpowiedź 27. maja 2016 в 1:32
676
0
Federico  A. Ramponi
Federico A. Ramponi
8. października 2008 в 6:31
2008-10-08T06:31:54+00:00
Więcej
Źródło
Edytuj
#8547342

To nie poprawia tak wiele, ale...

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

if allCondsAreOK: do_something

Federico  A. Ramponi
Federico A. Ramponi
Edytowana odpowiedź 8. października 2008 в 6:39
23
0
 DzinX
DzinX
8. października 2008 в 7:19
2008-10-08T07:19:09+00:00
Więcej
Źródło
Edytuj
#8547344

Sugeruję przeniesienie słowa kluczowego and do drugiej linii i wcięcie wszystkich linii zawierających warunki dwoma spacjami zamiast czterech:

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

To jest dokładnie to, jak rozwiązuję ten problem w moim kodzie. Posiadanie słowa kluczowego jako pierwszego słowa w linii sprawia, że warunek jest dużo bardziej czytelny, a zmniejszenie liczby spacji dodatkowo odróżnia warunek od akcji.

19
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Zuxriddin Muydinov
Zarejestrowany 12 godzin temu
2
Денис Анненский
Zarejestrowany 2 dni temu
3
365
Zarejestrowany 1 tydzień temu
4
True Image
Zarejestrowany 1 tydzień temu
5
archana agarwal
Zarejestrowany 1 tydzień temu
BG
DE
EL
ES
FI
FR
ID
IT
JA
KO
NL
PL
PT
RU
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem