Hva %s betyr i Python – Hemmeligheten avslørt!

%s er en argumentspesifikasjoner og brukes til strengformatering. Den låner syntaksen fra C-språket. Enkelt sagt lar den deg legge til en verdi i en streng.

Verdien kan være en streng eller et hvilket som helst objekt som kan konverteres til en streng, for eksempel tall, liste osv.



Alle strengverdier

Tenk på følgende eksempel.

name = input("Please insert your name: ")
song = input("What is your favorite song? " )
print("Hello %s! Would you like to listen to %s?" %(name, song))

I eksemplet ovenfor tar vi navnet og favorittsangen fra brukeren og viser en melding med disse verdiene.

Dessuten setter vi %s som plassholder på de stedene der du vil ha verdier av variabler.

En tuppel som inneholder verdier følger formatstrengen, dvs. %(navn, sang) . Husk å sette inn verdier i samme rekkefølge som du vil vise dem. I dette tilfellet Navn vil komme først og deretter sang .

En prøveutgang av eksemplet ovenfor er gitt nedenfor.

Please insert your name: ashton
What is your favorite song? Perfect
Hello ashton! Would you like to listen to Perfect?

Som du kan se, fungerer dette som forventet.

En enkelt verdi

Hvis vi bare har en singel %s , så kan vi skrive en verdi uten tuppel. La oss se.

name = input("Please insert your name: ")
print("Hello %s!" % name)

Produksjon

Please insert your name: Agar
Hello Agar!

Objekter med en strengrepresentasjon

Som allerede nevnt, kan en verdi være et hvilket som helst objekt som kan konverteres til en streng. La oss ta et eksempel.

name = "Smith"
score = [70, 80, 90, 100]
print("The score of %s in the last four matches: %s" % (name, score))

Produksjon

The score of Smith in the last four matches: [70, 80, 90, 100]

Som du kan se, plasserer vi en streng og en liste ved å bruke %s argumentspesifikasjoner. Den konverterer listen til en streng automatisk.

La oss ta det samme eksemplet og gjøre det ved å bruke sammenkoblingsoperatoren.

name = "Smith"
score = [70, 80, 90, 100]
print("The score of " + name + " in the last four matches " + str(score))

Produksjon

The score of Smith in the last four matches [70, 80, 90, 100]

Her, i motsetning til %s, konverterer vi eksplisitt listen til en streng og bruker + på hvert sted vi ønsker å tilføre en verdi.

TypeError

Dessuten må antall argumentspesifikasjoner være det samme som antall verdier i tuppelen. Hvis de ikke er det, får du en feilmelding. La oss se.

name = input("Please insert your name: ")
song = input("What is your favorite song? " )
print("Hello %s! Would you like to listen to %s?" %(name))

Produksjon

  Hva betyr %s i Python

Hva betyr %s i Python

Som du kan se i utgangen ovenfor, kaster programmet en TypeError .

Kartleggingsnøkkel

I stedet for å huske rekkefølgen du vil sette inn verdier i, kan du sende en kartleggingsnøkkel til %s . Tenk på følgende eksempel for å forstå dette konseptet.

name = "Ashton Agar"
age  = 20
print("My name is %(name)s and my age is %(age)s." %{"age":age, "name":name})

Produksjon

My name is Ashton Agar and my age is 20.

I eksemplet ovenfor sender vi en ordbok som inneholder (nøkkel, verdi) par i stedet for en tuppel. Dessuten er nøkkelen plassert mellom % og s , som blir erstattet av verdien senere. Derfor trenger vi ikke huske rekkefølgen.

%s er en gammel metode for formatering av strenger. Bedre teknikker som f.eks format() og f-strenger har blitt introdusert som er enklere å bruke og gir flere funksjoner.