Python Language
Utskriftsfunktionen
Sök…
Grunderna för utskrift
I Python 3 och högre är print
en funktion snarare än ett nyckelord.
print('hello world!')
# out: hello world!
foo = 1
bar = 'bar'
baz = 3.14
print(foo)
# out: 1
print(bar)
# out: bar
print(baz)
# out: 3.14
Du kan också skicka ett antal parametrar att print
:
print(foo, bar, baz)
# out: 1 bar 3.14
Ett annat sätt att print
flera parametrar är att använda en +
print(str(foo) + " " + bar + " " + str(baz))
# out: 1 bar 3.14
Vad du bör vara försiktig med när du använder +
att skriva ut flera parametrar är att typen av parametrar ska vara densamma. Att försöka skriva ut exemplet ovan utan cast till string
först skulle resultera i ett fel, eftersom det skulle försöka lägga till numret 1
till strängen "bar"
och lägga till det till siffran 3.14
.
# Wrong:
# type:int str float
print(foo + bar + baz)
# will result in an error
Detta beror på att innehållet i print
kommer att utvärderas först:
print(4 + 5)
# out: 9
print("4" + "5")
# out: 45
print([4] + [5])
# out: [4, 5]
Annars kan användningen av +
vara till stor hjälp för en användare att läsa output av variabler. I exemplet nedan är utgången mycket lätt att läsa!
Skriptet nedan visar detta
import random
#telling python to include a function to create random numbers
randnum = random.randint(0, 12)
#make a random number between 0 and 12 and assign it to a variable
print("The randomly generated number was - " + str(randnum))
Du kan förhindra att print
från att automatiskt skriva ut en ny rad genom att använda end
parameter:
print("this has no newline at the end of it... ", end="")
print("see?")
# out: this has no newline at the end of it... see?
Om du vill skriva till en fil, kan du skicka den som parameter file
:
with open('my_file.txt', 'w+') as my_file:
print("this goes to the file!", file=my_file)
detta går till filen!
Skriv ut parametrar
Du kan göra mer än bara skriva ut text. print
har också flera parametrar som hjälper dig.
Argument sep
: placera en sträng mellan argument.
Behöver du skriva ut en lista med ord som är separerade med komma eller någon annan sträng?
>>> print('apples','bannas', 'cherries', sep=', ')
apple, bannas, cherries
>>> print('apple','banna', 'cherries', sep=', ')
apple, banna, cherries
>>>
Argumentets end
: använd något annat än en ny linje i slutet
Utan end
argument all print()
funktioner skriva en rad och sedan gå till början av nästa rad. Du kan ändra det för att inte göra någonting (använd en tom sträng med '') eller dubbelavstånd mellan stycken med två nya linjer.
>>> print("<a", end=''); print(" class='jidn'" if 1 else "", end=''); print("/>")
<a class='jidn'/>
>>> print("paragraph1", end="\n\n"); print("paragraph2")
paragraph1
paragraph2
>>>
Argument file
: skicka utdata till annat än sys.stdout någonstans.
Nu kan du skicka din text till antingen stdout, en fil eller StringIO och inte bryr dig vilken du får. Om den kväver som en fil fungerar den som en fil.
>>> def sendit(out, *values, sep=' ', end='\n'):
... print(*values, sep=sep, end=end, file=out)
...
>>> sendit(sys.stdout, 'apples', 'bannas', 'cherries', sep='\t')
apples bannas cherries
>>> with open("delete-me.txt", "w+") as f:
... sendit(f, 'apples', 'bannas', 'cherries', sep=' ', end='\n')
...
>>> with open("delete-me.txt", "rt") as f:
... print(f.read())
...
apples bannas cherries
>>>
Det finns en fjärde parameter flush
som med våld kommer att spola strömmen.