Wat betekent een backslash op zichzelf (‘\’) in Python? [DUPLICEER]

Ik heb deze code gevonden in de NLTK-documentatie (http: //www.nltk .org / _modules / nltk / sentiment / vader.html )

if (i < len(words_and_emoticons) - 1 and item.lower() == "kind" and \
            words_and_emoticons[i+1].lower() == "of") or \
            item.lower() in BOOSTER_DICT:
            sentiments.append(valence)
            continue

Kan iemand uitleggen wat dit is als de conditie betekent?


Antwoord 1, Autoriteit 100%

Een backslash aan het einde van een lijn vertelt Python om de huidige Logical -regel uit te breiden naar de volgende -fysieke lijn. Zie de lijnstructuur sectie van De Python-referentiedocumentatie:

2.1.5. Expliciete lijn die lid wordt

Twee of meer fysieke lijnen kunnen worden vergezeld in logische lijnen met behulp van
backslash-tekens (\), als volgt: wanneer een fysieke lijn eindigt in een
backslash die geen deel uitmaakt van een string-letterlijke of opmerking, het is
toegetreden met het volgende vormen van een enkele logische lijn, het verwijderen van de
backslash en het volgende einde-van-lijn karakter. Bijvoorbeeld:

if 1900 < year < 2100 and 1 <= month <= 12 \
   and 1 <= day <= 31 and 0 <= hour < 24 \
   and 0 <= minute < 60 and 0 <= second < 60:   # Looks like a valid date
        return 1

Er is ook de mogelijkheid om implicietelijn samenvoeging te gebruiken, door haakjes of haakjes of accolades te gebruiken; Python beëindigt de logische regel pas als het de passende sluithaak of accolade vindt voor elke openingshaak of accolade. Dit is de aanbevolen codestijl, het gevonden voorbeeld moet eigenlijk worden geschreven als:

if ((i < len(words_and_emoticons) - 1 and item.lower() == "kind" and
        words_and_emoticons[i+1].lower() == "of") or
        item.lower() in BOOSTER_DICT):
    sentiments.append(valence)
    continue

Zie de Python-stijlgids (PEP 8)(maar let op de uitzondering; sommige Python-instructies ondersteunen geen (...)haakjes, dus backslashes zijn daar acceptabel).

Merk op dat Python niet de enige programmeertaal is die backslashes gebruikt voor het voortzetten van regels; bash, C en C++ preprocessor-syntaxis, Falcon, Mathematica en Ruby gebruiken deze syntaxis ook om regels uit te breiden; zie Wikipedia.


Antwoord 2, autoriteit 11%

In dit geval ontsnapt de \aan het volgende nieuwe regelteken. Omdat Python om witruimte geeft, gebruikt deze code dit om toe te staan dat code op een nieuwe regel wordt voortgezet.


Antwoord 3, autoriteit 4%

Het ontsnapt aan het einde van de regel – voor de leesbaarheid. (verlengt de regel naar de volgende, omdat het \n-teken niet zichtbaar is, maar het heeft een syntactische betekenis.)


Antwoord 4, autoriteit 4%

De backslash wordt gebruikt om een regeleinde aan te geven in deze if-voorwaarde. De PEP8zegt:

Backslashes kunnen soms nog steeds geschikt zijn. Lang, veel, meerdere met -statementen kunnen bijvoorbeeld impliciete voortzetting gebruiken, dus backslashes zijn acceptabel:

with open('/path/to/some/file/you/want/to/read') as file_1, \
     open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

Afgezien van deze voorwaarden worden de linechns meestal aangegeven door de juiste inspringing.

EDIT:

Blijkbaar is de withverklaring een uitzondering die niet toestaat dat lijnonderbrekingen net door inkeping en daarom de backslash gebruikt, terwijl ifniet met \.


Antwoord 5

Het wordt gebruikt als een lijnonderbreking, zodat de if-conditie in de volgende regel kan worden geschreven.

Other episodes