Este posibil pentru a sparge o linie lungă pentru mai multe linii în Python

La fel ca C, puteți rupe o linie lungă în mai multe linii scurte. Dar în Python, dacă am face acest lucru, va exista o liniuță de eroare... E posibil?

Soluția

De PEP 8 - Ghid de Stil pentru Python Code:

modul preferat de ambalaj linii lungi este de a folosi Python's implicită linie continuarea în interiorul paranteze rotunde, paranteze și acolade. Dacă este necesar, aveți puteți adăuga o pereche de paranteze în jurul valorii de o expresie, dar, uneori, folosind un backslash arata mai bine. Asigurați-vă că pentru a liniuță a continuat linia în mod corespunzător.

Exemplu implicite linie de continuare:

a = some_function(
    '1' + '2' + '3' - '4')

Pe tema de sfârșit de linie în jurul valorii de un operator binar, acesta merge mai departe și spune:-

de zeci De ani recomandată stil a fost la pauză, după binar operatori. Dar acest lucru vă poate afecta lizibilitatea în două moduri: operatorii au tendința de a obține împrăștiate în diferite coloane de pe ecran, și fiecare operator este mutat departe de operand și pe linia anterioară.

În cod Python, este permisă de a rupe înainte sau după un operator binar, atâta timp cât convenția este în concordanță la nivel local. Pentru noul cod Knuth's de stil (pauze de linie înainte operatorul) este sugerat.

Exemplu de explicit linie de continuare:

a = '1'   \
    + '2' \
    + '3' \
    - '4'
Comentarii (3)

Există mai mult de un mod de a face asta.

1). O lungă declarație:

>>> def print_something():
         print 'This is a really long line,', \
               'but we can make it across multiple lines.'

2). Folosind paranteze:

>>> def print_something():
        print ('Wow, this also works?',
               'I never knew!')

3). Folosind \ din nou:

>>> x = 10
>>> if x == 10 or x > 0 or \
       x < 100:
       print 'True'

Cu referire PEP8:

modul preferat de cuprindere mult linii este prin utilizarea Python's implicite linie continuare în interiorul paranteze rotunde, paranteze și acolade. Dacă este necesar, puteți adăuga o pereche de paranteze în jurul valorii de o expresie, dar uneori, folosind un backslash arata mai bine. Asigurați-vă că pentru a liniuță a continuat linia în mod corespunzător. Locul preferat pentru a rupe în jurul valorii de un binar operator este după operatorul, nu înainte de aceasta.

Comentarii (5)

Dacă doriți să atribuiți o lungă perioadă de str variabile, poti sa o faci ca mai jos:

net_weights_pathname = (
    '/home/acgtyrant/BigDatas/'
    'model_configs/lenet_iter_10000.caffemodel')

Nu adăuga orice virgulă, sau veți obține un tuplu care conține multe rts!

Comentarii (3)

Acesta funcționează în Python prea:

>>> 1+\
      2+\
3
6
>>> (1+
          2+
 3)
6
Comentarii (0)

Atunci când încearcă pentru a introduce text continuu (de exemplu, o interogare) nu se pune virgula la final de linie, sau veți obține o listă de siruri de caractere în loc de un șir lung:

queryText= "SELECT * FROM TABLE1 AS T1"\
"JOIN TABLE2 AS T2 ON T1.SOMETHING = T2.SOMETHING"\
"JOIN TABLE3 AS T3 ON T3.SOMETHING = T2.SOMETHING"\
"WHERE SOMETHING BETWEEN  AND "\
"ORDER BY WHATEVERS DESC"

cam de genul asta.

Nu este un comentariu de genul asta de la acgtyrant, îmi pare rău, am't vedea asta. :/

Comentarii (0)

Din câte știu, se poate face. Python are implicit linie de continuare (în interiorul paranteze rotunde, paranteze drepte, și siruri de caractere) pentru triple-citat siruri de caractere ("""ca acest""")și indentare de linii de continuare nu este important. Pentru mai multe informatii, poate doriți să citiți acest articol pe analiza lexicală, de la python.org.

Comentarii (1)

DB legate de codul pare mai ușor de pe ochi în mai multe linii, închise de o pereche de triple citate:

SQL = """SELECT
            id, 
            fld_1, 
            fld_2, 
            fld_3, 
            ...... 
         FROM some_tbl"""

decât următoarele uriaș lung de linie:

SQL = "SELECT id, fld_1, fld_2, fld_3, .................................... FROM some_tbl"
Comentarii (2)